标题:[求助]十进制到十六进制的转换
只看楼主
xxygdufs
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-5-11
 问题点数:0 回复次数:4 
[求助]十进制到十六进制的转换

DECIHEX SEGMENT
ASSSUME CS:DECIHEX
;*****************************************************************
MAIN PROC FAR
REPEAT: CALL DECIBIN
CALL CRLF
CALL BINIHEX
CALL CRLF
JMP REPEAT
MAIN ENDP
;*******************************************************************
DECIBIN PROC NEAR
MOV BX,0
NEWCHAR: MOV AH,01H
INT 21H
SUB AL,30H
JL EXIT
CMP AL,39H
JG EXIT
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR
EXIT: RET
DECIBIN ENDP
;********************************************************************
BINIHEX PROC NEAR
MOV CH,4
ROTATE:MOV CL,4
ROL BX,CL
MOV AL,BL
ADN AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINTIT
ADD AL,7H
PRINTIT:MOV DL,AL
MOV AH,02H
INT 21H
DEC CH
JNZ ROTATE
RET
BINIHEX ENDP
;*****************************************************************
CRLF PROC NEAR
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
RET
CRLF ENDP
;******************************************************************
DECIHEX ENDS
END MAIN

请各位大侠帮忙看看上面的程序,错在哪里?
还有,里面的DECIBIN子程序块我不是很理解

搜索更多相关主题的帖子: 十六进制 十进制 CALL CMP REPEAT 
2006-05-13 09:59
公子吕
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-5-4
得分:0 

没有注释的代码就像谜语.尤其是汇编.

DECIBIN PROC NEAR
MOV BX,0
NEWCHAR: MOV AH,01H
INT 21H
SUB AL,30H ;接收数字字符,小于0退出.
JL EXIT
CMP AL,39H ;大于9退出.
JG EXIT
CBW ;扩展符号位
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR
EXIT: RET
DECIBIN ENDP

你可能不理解加色的代码,第一次接收一个数字经运算送bx,第二次接收数后,bx(也就是第一个数)送到ax乘以10在加上第二个数.依此类推,但要注意,因为mul cx 它的结果是放在dx,ax中的,必须限制输入的数不能超过16位二进制补码的最大表示范围.

2006-05-13 12:24
公子吕
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-5-4
得分:0 
补充一下:你的程序有两处错误.
ASSSUME CS:DECIHEX ;错误多了一个S

BINIHEX PROC NEAR
MOV CH,4
ROTATE:MOV CL,4
ROL BX,CL
MOV AL,BL
ADN AL,0FH ;ADN应该是AND
ADD AL,30H
CMP AL,3AH

另外,你最好把MAIN PROC FAR里面的JMP REPEAT去掉并在其后面加上:
mov ah,7
int 21h
mov ah,4ch
int 21h
这样可以顺利退出程序.免得一直循环.
2006-05-13 13:04
xxygdufs
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-5-11
得分:0 

多谢楼上大侠

2006-05-13 16:52
公子吕
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-5-4
得分:0 

我不是大侠,看你的提问,我也复习了一下汇编.

2006-05-13 17:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-63776-1-1.html




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

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