编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
发新话题
打印

俺很菜,请帮一下忙!

俺很菜,请帮一下忙!

这是作业,但是……
要求:输入任意位整数,以十六进制输出。
我的代码:
.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位就不行了。怎么实现任意位啊?
谢谢 啊!

TOP

发新话题