一个汇编语言的问题 冒泡法排序多个两位数,我的思路是把一个两位数存在一个AL里面然后排序再输出
但是没有办法输出结果 哪位大神可以点明一下 刚入门汇编 还不太懂 多谢多谢
DATA SEGMENT
NUMBER DB 100,?,100 DUP(?) ;开辟空白空间
TAB DB 0DH,0AH,'$' ;空格回车
LIST1 DB 'INPUT NUMBERS$' ;输入数字
LIST2 DB 'INPUT NUMBERS$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA , CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,LIST1 ;将文字显示到屏幕上
MOV AH,09H ;09H功能 显示字符
INT 21H ;DOS调用
LEA DX,TAB ;空格回车
MOV AH,09H ;显示回车空格在屏幕上
INT 21H
INPUT:
LEA BP,NUMBER
XOR BX,BX
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,00H
MOV BL,10H
MUL BL ;BL和AL相乘放在AX里
MOV CL,AL
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,00H
ADD AL,CL
MOV DS:[BP],AL;存入NUMBER中
CMP AL,24H;判断是否与¥一样
JZ LP0
INC BP
INC BL
JMP INPUT
LP0:
LEA SI,NUMBER
INC SI ;SI-1
MOV CL,[SI] ;输入个数->CL
DEC CL
INC SI
MOV BX,SI ;外循环初始化SI=BX,CH=CL
MOV CH,CL
MOV AL,[BX]
LP1:
INC BX
CMP [BX],AL ; [BX]-AL是否有近位 即CF=1
JNC LP2
XCHG AL,[BX]
LP2:
DEC CH
JNZ LP1 ;不为零跳转
CMP CH,'0'
JE LP3
LP3:
MOV [SI],AL
INC SI
DEC CL
JNZ LP0
CMP CL,'0'
JE LP4
LP4:
MOV AL,'$' ;代表‘ONPUT NUMBER’字符串
MOV [SI+1],AL
LEA DX,TAB
MOV AH,09H
INT 21H
LEA DX,LIST2
MOV AH,09H
INT 21H
LEA DX,TAB
MOV AH,09H
INT 21H
MOV DX,OFFSET NUMBER ;将NUMBER的偏移地址给DX
INC DX
INC DX
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START