这是作业,但是……
要求:输入任意位整数,以十六进制输出。
我的代码:
.MODEL SMALL
.STACK 64
.DATA
MESSAGE1 DB 'Please input an integer',CR,LF,'$'
MESSAGE2 DB 'The hex of this number is','$'
NEWLINE DB CR,LF,'$'
ASC DB 10,?,10 DUP (0)
NUM DB ? ;十进制的储存数
QOUT DB ?
REMAIN DB ?
DIVISION DB 16
DEM DB 10
HEX DB ?
CR EQU 0DH
LF EQU 0AH
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
MOV AH,09
MOV DX,OFFSET MESSAGE1
INT 21H ;输出
MOV AH,0AH;
MOV DX,OFFSET ASC
INT 21H ;输入
MOV AH,09
MOV DX,OFFSET NEWLINE
INT 21H ;换行
MOV BX,OFFSET ASC
MOV CL,[BX]+1
MOV DX,0000H
NEXT: MOV AX,WORD PTR [BX]+2
AND AX,0F0FH
MOV DH,0
MOV DL,AL
MOV AX,NUM
MUL DEM
ADD AX,DX
MOV NUM,AX
ADD BX,1
LOOP NEXT ;转化成十进制的BCD码
MOV QOUT,AX
MOV CX,8
MOV BX,OFFSET HEX
AGAIN:
DIV DIVISION
MOV QOUT,AL
MOV REMAIN,AH
MOV DL,REMAIN
OR DL,30H
CMP DL,39H
JB CONTINUE
ADD DL,7
CONTINUE:
SUB AH,AH
MOV AL,QOUT
MOV [BX],DL
INC BX
LOOP AGAIN ;转化成十六进制数
MOV AH,09
MOV DX,OFFSET MESSAGE2
INT 21H ;输出
MOV CX,8
HI: DEC BX
MOV AH,02
MOV DL,[BX]
INT 21H ;显示
LOOP HI
MOV AH,4CH
INT 21H ;中止
MAIN ENDP
END MAIN
但是,并不是输入任意位都可以啊,4位没问题,但是5位就不行了。怎么实现任意位啊?
谢谢 啊!
俺很菜,请帮一下忙!