exp43.asm
来自「汇编语言 参考书 包含作业与答案 从入门到精通 通俗易懂」· 汇编 代码 · 共 68 行
ASM
68 行
.MODEL SMALL
.STACK 100h
.DATA
table_len DW 16
table DW 200,300,400,10,20,0,1,8
DW 41h,40,42h,50,60,0FFFFh,2,3
;count DW 0 ;保存记数器值,可用PUSH,POP代替
result DB 5 DUP(?),' $'
.CODE
.STARTUP ;冒泡排序法
START:
MOV AX,@DATA
MOV DS,AX
LP1: MOV BX,1 ;泡排序的标志
MOV CX,table_len
DEC CX
MOV SI,OFFSET table
LP2: MOV AX,[SI]
CMP AX,[SI+2]
Ja CONTINUE
XCHG AX,[SI+2]
MOV [SI],AX
MOV BX,0
CONTINUE:
ADD SI,2
LOOP LP2
CMP BX,1
JZ convert
JMP SHORT LP1
convert: ;打印程序
mov si,offset table
mov cx,table_len
lp3:
;mov [count],cx
push cx ;保存原记数器值
MOV CX,5
MOV AX,word PTR [si]
MOV BX,10
MOV DI,OFFSET RESULT+4 ;从后往前保存
LP4: XOR DX,DX ;将DX清零
DIV BX
OR DL,30H ; 也可用add dl,30h ;将16进制的数转换到ASCII中对应的数,0的ASCII码为 30H (48D)
MOV BYTE PTR [DI],DL
cmp ax,0
jz print ;当商为0时,直接去打印
DEC DI
LOOP LP4
print:
MOV DX,di ;从DI开始打印,因为RESULT不一定够5位
MOV AH,9
INT 21H ;调用DOS的21号中断的9号功能,将DB输出
inc si
inc si
;mov cx,[count]
pop cx
loop lp3
.EXIT
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?