作者MMex (BY2)
看板ASM
标题[问题] masm 16进制输入问题
时间Tue Sep 23 11:45:58 2014
各位大大好
小弟是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
不过不知道错在哪 请各位大大指点一下 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.35.85
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/ASM/M.1411443960.A.625.html
1F:→ MMex: 补充一下 MASM版本为6.11 09/23 11:59
2F:→ MMex: 自己发现问题所在了 原来是因为code中的A~F是侦测大写 09/23 14:15
3F:→ MMex: 而我自己的输入资料是使用小写 所以ASCII码转换上出现问题 09/23 14:16