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

📄 a8-1.asm

📁 A1.asm 显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT USE16 MES1 DB
💻 ASM
字号:
;A8-1.asm
;综合程序设计实验-排序实验

.386p
STACK1  SEGMENT STACK   USE16
	DB	64	DUP(?)
STACK1  ENDS

DATA	SEGMENT	USE16
MES1	DB	'The array is:$'
MES2	DB	'After sort:$'
DATA1	DD	110015H,111101D8H,22110002H,111a0004H,1d110009H,111f044H,11d10203H,32H
COUNT	=8
DATA	ENDS

CODE	SEGMENT	USE16
	ASSUME	CS:CODE,DS:DATA
	
START: MOV 	AX,DATA			       ;显示未排序的数组
	   MOV	DS,AX

	   MOV	DX,OFFSET MES1	
	   MOV	AH,09H
	   INT 	21H
	   CALL	KENTER
	   CALL	SAHEX		
	   CALL	KENTER

	   CALL	BUBBLE			;显示排序后的数组
	   MOV	DX,OFFSET MES2
	   MOV	AH,09H
	   INT	21H
	   CALL	KENTER
	   CALL	SAHEX
	   CALL	KENTER

	   MOV	AX,4C00H
	   INT	21H	
	
BUBBLE	PROC	
	   XOR	ESI,ESI
	   XOR	ECX,ECX
	   MOV	SI,OFFSET DATA1
	   MOV	CX,COUNT
L1:	   XOR	EBX,EBX
L2:	   CMP	EBX,ECX
	   JAE	LB
	   MOV	EAX,[ESI+EBX*4+4]	
	   CMP	[ESI+EBX*4],EAX
	   JGE	LNS
	   XCHG	[ESI+EBX*4],EAX
	   MOV	[ESI+EBX*4+4],EAX
LNS:   INC	EBX
	   JMP	L2
LB:	   LOOP	L1
	   RET
BUBBLE	ENDP

SAHEX	PROC	NEAR
	   XOR	ESI,ESI
	   XOR	ECX,ECX
	   MOV	SI,OFFSET DATA1
	   MOV	CX,COUNT*4
C1:	   MOV	EBX,ECX
	   DEC	EBX
	   MOV	AL,DS:[ESI+EBX]
	   AND	AL,0F0H			;取高4位
	   SHR	AL,4
	   CMP	AL,0AH			;是否是A以上的数
	   JB	C2		
	   ADD	AL,07H		
C2:	   ADD	AL,30H		
	   MOV	DL,AL
	   MOV	AH,02H
	   INT	21H			;显示字符
	   MOV	AL,DS:[ESI+EBX]
	   AND	AL,0FH			;取低4位
	   CMP	AL,0AH
	   JB	C3
	   ADD 	AL,07H
C3:	   ADD	AL,30H
	   MOV	DL,AL			;显示字符
	   MOV	AH,02H
	   INT	21H
	   TEST	EBX,03H
	   JNZ	C4
	   MOV	DL,20H
	   MOV	AH,02H
	   INT	21H
C4:	   LOOP	C1
	   RET
SAHEX	ENDP

KENTER	PROC	NEAR
	   MOV	DL,0AH
	   MOV	AH,02H
	   INT	21H
	   MOV	DL,0DH
	   MOV	AH,02H
	   INT	21H
	   RET
KENTER	ENDP

CODE  ENDS
	   END	START

⌨️ 快捷键说明

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