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

📄 sortname.asm

📁 SortName 一个汇编小程序
💻 ASM
字号:
;NAME_SORT-EXE6_11#
;***************************************************************
	.model small
	.stack 40h
;***************************************************************
	.data					;define data segment
namepar		label	byte			;name parameter list:
maxnlen		db	21			;max. length
namelen		db	?			;no. chars entered
namefld		db	21 dup(?)		;name
crlf		db	13,10,'$'
endaddr		dw	?
messg1		db	'Name?','$'
messg2		db	'Sort Name:',13,10,'$'
namectr		db	0
nametab		db	30 dup(20 dup(' '))	;name table
namesav		db	20 dup(?),13,10,'$'
swapped		db	0
;***************************************************************
	.code					;define code segment
;---------------------------------------------------------------
begin		proc	far			;main part of programe
;set DS and ES register to current data segment
	mov	ax,@data			;data segment addr
	mov	ds,ax				;  into DS register
	mov	es,ax				;	and ES register
;MAIN PART OF PROGRAM GOES HERE
	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
;--------------------------------------------------------------------
;	Accept name as input:

b10read	proc	near
	mov	ah,09
	lea	dx,messg1
	int	21h
	mov	ah,0ah
	lea	dx,namepar
	int	21h
	mov	ah,9
	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
;--------------------------------------------------------------------
;	Store name in table:
d10stor	proc near
	inc	namectr
	cld
	lea	si,namefld
	mov	cx,10
	rep	movsw
	ret
d10stor		endp
;--------------------------------------------------------------------
;	Sort name in table
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
;---------------------------------------------------------------------
;	Excheange table entries

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

h10xchg		endp
;-----------------------------------------------------------------------
;	Display sorted name:
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,09
	lea	dx,namesav
	int	21h
	dec	namectr
	jnz	k20
	ret

k10disp		endp
;-----------------------------------------------------------------------
;***********************************************************************
	end	begin

⌨️ 快捷键说明

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