⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 name_sort.asm

📁 这是一个电话号码程序
💻 ASM
字号:
	.model small
	.stack 40h
	.data
namepar label byte
maxnlen db 21
namelen db ?
namefld db 21 dup(?)
crlf db 13,10,'$'
endaddr dw ?
messg1 db 'Name?','$'
messg2 db 'Sorted names:',13,10,'$'
namectr db 0
nametab db 30 dup(20 dup(' '))
namesav db 20 dup(?),13,10,'$'
swapped db 0

	.code
begin proc far
	mov ax,@data 
	mov ds,ax
	mov es,ax
	cld 
	lea di,nametab
a20loop:
	call b10read
	cmp namelen,0
	jz a30
	cmp namectr,30
	je a30
	call d10stor
	jmp a20loop
a30:
	cmp namectr,1
	jbe a40
	call g10sort
	call k10disp
a40:
	mov ax,4c00h
	int 21h
begin endp

b10read proc near
	mov ah,09
	lea dx,messg1
	int 21h
	mov ah,0ah
	lea dx,namepar
	int 21h
	mov ah,09
	lea dx,crlf
	int 21h
	mov bh,0
	mov bl,namelen
	mov cx,21
	sub cx,bx
b20:
	mov namefld[bx],20h
	inc bx
	loop b20
	ret
b10read endp

d10stor proc near
	inc namectr
	cld
	lea si,namefld
	mov cx,10
	rep movsw
	ret
d10stor endp

g10sort proc near
	sub di,40
	mov endaddr,di
g20:
	mov swapped,0
	lea si,nametab
g30:
	mov cx,20
	mov di,si
	add di,20
	mov ax,di
	mov bx,si
	repe cmpsb
	jbe g40
	call h10xchg
g40:
	mov si,ax
	cmp si,endaddr
	jbe g30
	cmp swapped,0
	jnz g20
	ret
g10sort endp

h10xchg proc near
	mov cx,10
	lea di,namesav
	mov si,bx
	rep movsw
	mov cx,10
	mov di,bx
	rep movsw
	mov cx,10
	lea si,namesav
	rep movsw
	mov swapped,1
	ret
h10xchg endp

k10disp proc near
	mov ah,09
	lea dx,messg2
	int 21h
	lea si,nametab
k20:
	lea di,namesav
	mov cx,10
	rep movsw
	mov ah,9
	lea dx,namesav
	int 21h
	dec namectr
	jnz k20
	ret
k10disp endp
	end begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -