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

📄 lt57-2.asm

📁 汇编小程序 多种方法解冒泡法排序 以masm 5.0以上版本编译运行
💻 ASM
字号:
;例题5.7 LT57-2.ASM程序基本框架同书中P172,书中以下错误:无数据区,N?,JGE使用。
;冒泡法实现数据排序。无序数组实现由大到小排序。
;题意分析:取第一个数放在AX中,和下一个的数比较,小的数放在下面,
;大的数上升,第一个循环后,使最小的数排在最下面。
;同理进行第二次循环,查找的数据长度减一。
;
DATAREA	SEGMENT;			定义数据段及数据分配。
	HEAD	DW	11H,22H,44H,66H,55H,0FFFFH,02H,03H;   有符号数
		DW	88H,04H,33H,77H,99H,12H,13H,    0CCH; 第16个数不参加排序。
		DW	8 DUP (0FFFFH);	为了调试时观察数据区方便
	M_COUNT	DW	15
	N	EQU	15			
DATAREA	ENDS;

PROGNAM	SEGMENT;			定义程序段及程序段名。
MAIN	PROC	FAR
	ASSUME	CS:PROGNAM,DS:DATAREA;	段分配。
	
START:
	PUSH	DS;			DOS调用要求。保护旧数据段DS,
	SUB	AX,	AX;		AX清零进堆栈保护,
	PUSH	AX;
	
	MOV	AX,	DATAREA;	DS数据段赋值。
	MOV	DS,	AX;
	
	MOV	CX,	N;		数据字长度即循环次数给DI
	DEC	CX;			求实际循环次数。(MOV CX,N-1);
LOOP1:
	MOV	DI,	CX;		DI保存CX的值,数组长度(数据个数)。
	MOV	BX,	00;		BX作为数据指针,赋初值0。
	
LOOP2:
	MOV	AX,	[BX+HEAD];	取第一个数给AX。
	CMP	AX,	[BX+HEAD+2];	AX中的内容和下一个字比较。
	JGE	COTINUE;		数据区是有符号数,有符号数使用JGE。
	XCHG	AX,	[BX+HEAD+2];	如果小于,进行交换,大的数放低字节,
	MOV	[BX+HEAD], AX;		小的数放高字节。
	
COTINUE:
	ADD	BX,	02;		BX加2,指向下一个字。	
	;DEC	CX;			
	;JNZ	LOOP2;
	LOOP	LOOP2;			CX-1,如果CX不等于0,内循环,转跳到LOOP2。
	
	MOV	CX,	DI;		外层循环次数给CX,(因为使用LOOP命令)
	;DEC	CX;			
	;JNZ	LOOP1;
	LOOP	LOOP1;			CX-1,如果CX不等于0,同时修改外循环次数。
	RET;				进行外循环,转跳到LOOP1。

MAIN	ENDP;
PROGNAM	ENDS;
	END	START;
	
-G 09
AX=13C0  BX=0000  CX=006E  DX=0000  SP=FFFC  BP=0000  SI=0000  DI=0000
DS=13C0  ES=13B0  SS=13C0  CS=13C4  IP=0009   NV UP EI PL ZR NA PE NC
13C4:0009 B90F00        MOV     CX,000F
-D DS:0
13C0:0000  11 00 22 00 44 00 66 00-55 00 01 00 02 00 03 00   ..".D.f.U.......
13C0:0010  88 00 04 00 33 00 77 00-99 00 12 00 13 00 CC 00   ....3.w.........
13C0:0020  FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF   ................	


-G 2D
AX=0099  BX=0002  CX=0000  DX=0000  SP=FFFC  BP=0000  SI=0000  DI=0001
DS=13C0  ES=13B0  SS=13C0  CS=13C4  IP=002D   NV UP EI PL NZ NA PO NC
13C4:002D CB            RETF
-D DS:0
13C0:0000  99 00 88 00 77 00 66 00-55 00 44 00 33 00 22 00   ....w.f.U.D.3.".
13C0:0010  13 00 12 00 11 00 04 00-03 00 02 00 FF FF CC 00   ................
13C0:0020  FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF   ................

⌨️ 快捷键说明

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