各位大大好
小弟是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
不過不知道錯在哪 請各位大大指點一下 謝謝