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

📄 sort.asm

📁 用汇编语言实现的冒泡排序程序。先打印排序前table数组中数
💻 ASM
字号:
STACK1	     SEGMENT	 PARA STACK
STACK_AREA   DW      	 100H DUP(?)
STACK_BOTTOM EQU	 $ - STACK_AREA
STACK1	     ENDS

DATA1	     SEGMENT	 PARA
TABLE_LEN    DW		 16
TABLE	     DW		 200,300,400,10,20,0,1,8
	     DW		 41H,40,42H,50,60,0FFFFH,2,3
RESULT	     DB		 5 DUP(?),20H,'$'	;存十进制数结果,加空格
NEW_LINE     DB   	 0DH,0AH,'$'		;回车换行
DATA1	     ENDS

CODE1	     SEGMENT 	 PARA
	     ASSUME	 CS:CODE1,DS:DATA1,SS:STACK1
MAIN 	     PROC	 FAR
	     MOV	 AX,STACK1		;初始化SS,SP,DS
	     MOV	 SS,AX
	     MOV	 SP,STACK_BOTTOM
	     MOV	 AX,DATA1
	     MOV	 DS,AX
	     					;PART1:将未排序的表显示出来
PART1:	     MOV 	 CX,TABLE_LEN
	     MOV	 SI,OFFSET TABLE
LP1: 	     PUSH	 CX			;保存外循环计数
	     MOV	 CX,5
	     MOV	 DI,OFFSET RESULT+4
	     MOV	 AX,[SI]
	     MOV	 BX,10
LP1_1:	     XOR	 DX,DX
	     DIV	 BX
	     OR	 	 DL,30H
	     MOV	 [DI],DL
	     DEC	 DI
	     LOOP	 LP1_1			;内循环
						;显示一个数及一个空格
	     MOV	 DX,OFFSET RESULT
	     MOV	 AH,9
	     INT	 21H
	     INC 	 SI			;求下一个数
	     INC 	 SI
	     POP	 CX	 		;恢复外循环计数
	     LOOP  	 LP1			;外循环
	     					;显示回车换行
	     MOV	 DX,OFFSET NEW_LINE
	     MOV	 AH,9
	     INT	 21H
						;PART2:排序
PART2:	     MOV	 CX,TABLE_LEN
	     DEC	 CX			;第一次循环长度
LP2:	     MOV	 BX,1			;外循环的控制条件
	     MOV	 SI,OFFSET TABLE
	     PUSH	 CX			;保存循环长度
						;内循环
LP2_1:	     MOV	 AX,[SI]
	     CMP	 AX,[SI+2]
	     JBE	 CONTINUE
	     XCHG	 AX,[SI+2]
	     MOV	 [SI],AX
	     MOV	 BX,0
CONTINUE:    ADD	 SI,2
	     LOOP	 LP2_1

	     POP	 CX
	     DEC	 CX			;内循环次数减1
	     CMP	 BX,1			;外循环控制条件
	     JZ		 PART3
	     JMP	 SHORT LP2
						;PART3:将排好序的表显示出来
PART3:	     MOV	 CX,TABLE_LEN
  	     MOV	 SI,OFFSET TABLE
LP3:	     PUSH	 CX
	     MOV	 CX,5
	     MOV	 DI,OFFSET RESULT+4
	     MOV	 AX,[SI]
	     MOV	 BX,10
LP3_1:	     XOR	 DX,DX
	     DIV	 BX
	     OR		 DL,30H
	     MOV	 [DI],DL
	     DEC	 DI
	     LOOP	 LP3_1

	     MOV	 DX,OFFSET RESULT
	     MOV	 AH,9
	     INT	 21H
	     INC	 SI
	     INC 	 SI
	     POP	 CX
	     LOOP	 LP3

	     MOV	 DX,OFFSET NEW_LINE
	     MOV	 AH,9
	     INT	 21H
						;返回DOS
EXIT:	     MOV	 AX,4C00H
	     INT	 21H
MAIN	     ENDP
CODE1	     ENDS
	     END	 MAIN

⌨️ 快捷键说明

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