| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:俺很菜,请帮一下忙!
只看楼主 加入收藏
roc196
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-18
收藏
 问题点数:0 回复次数:0 
俺很菜,请帮一下忙!

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

搜索更多相关主题的帖子: 十六进制 number 十进制 
2005-11-20 19:46
快速回复:俺很菜,请帮一下忙!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018913 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved