[問題] masm 16進制輸入問題

看板ASM (組合語言)作者 (BY2)時間10年前 (2014/09/23 11:46), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/1
各位大大好 小弟是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://www.ptt.cc/bbs/ASM/M.1411443960.A.625.html

09/23 11:59, , 1F
補充一下 MASM版本為6.11
09/23 11:59, 1F

09/23 14:15, , 2F
自己發現問題所在了 原來是因為code中的A~F是偵測大寫
09/23 14:15, 2F

09/23 14:16, , 3F
而我自己的輸入資料是使用小寫 所以ASCII碼轉換上出現問題
09/23 14:16, 3F
文章代碼(AID): #1K8EpuOb (ASM)
文章代碼(AID): #1K8EpuOb (ASM)