[问题] masm 16进制输入问题

楼主: MMex (BY2)   2014-09-23 11:45:58
各位大大好
小弟是MASM的新手
最近自行写了一个16进制输入的CODE
遇到了问题 可是自己却找不出问题所在
程式的内容是要由键盘输入数值然后转存为16进制
以下为CODE部分:
.MODEL SMALL
.DATA
.CODE
num db 0
num2 db 0
num3 db 0
xx db 3
start:
tt: mov ch, 2
mov cl, 4
xor al,al
xor bx, bx
mov ah, 01h
getch: int 21h
sub al, '0'
cmp al, 10
jl next
sub al, 7
next: rol bx, cl
or bl, al
dec ch
jnz getch
MOV AH,02H ;换行
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
mov num,bl
prinf: MOV AH,02H
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
mov al,num
mov bl,al
mov cl,4
mov dl,bl
shr dl,cl
add dl,30h
cmp dl,'9'
jbe ok_1
add dl,7
ok_1: mov ah,2
int 21h
mov dl,bl ;将 BL 之值存入 DL
and dl,0fh ;取得 DL 之较低的 4 个位元
add dl,30h ;加上 30H
cmp dl,'9' ;比较看看是否超过 9
jbe ok_2 ;没超过直接印出
add dl,7 ;若超过再加上 7
ok_2: mov ah,2
int 21h
mov ah,4ch
int 21h
.STACK
END start
======================================================
遇到的问题是
当输入为1C 4C 或者CC DD时
输出就会异常 依序大概为 3C 6C EC FD 这样
我自己判断是bit 5 出现了错误 会一直为1
不过不知道错在哪 请各位大大指点一下 谢谢
楼主: MMex (BY2)   2014-09-23 11:59:00
补充一下 MASM版本为6.11自己发现问题所在了 原来是因为code中的A~F是侦测大写而我自己的输入资料是使用小写 所以ASCII码转换上出现问题

Links booklink

Contact Us: admin [ a t ] ucptt.com