Re: [問題] 關於數碼轉換
※ 引述《jason12308 (jason12308)》之銘言:
: 我想寫的程式功能是:輸入一個(0~9999),然後用code view看暫存器BX
: 的內容值是不是和我所輸入的數字相符合,就是十進制轉16進制,但不用輸出
: 用code view看就行了
: 重點是…我打的程式每次都只能輸入一個數字,然後run完再輸入第二個
: 數值是正確的。
: 但我想一次打完4個數字,然後按下enter(0dh)再讓程式run…請大大幫忙修改
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
你應該沒看完Int21的AH總列表吧
AH要為0Ah 不是01h
: 程式:
: 是用masm6.11 run
: .8086
: .model small
: .stack 100h
: .data
: mes1 db 'input a num(0~9999)$'
input db 6, 7 DUP (0), '$'
: .code
: .startup
: mov bx,0
: mov ah,09h
: lea dx,mes1
: int 21h
mov ax, @data
mov ds, ax
mov ah, 0Ah
mov dx, OFFSET input
: int 21h
;此區指到input字串 然後作字串轉換數值
mov dx, OFFSET input
add dx, 2 ;指向字串起始位置
num_cnt:
mov cl, BYTE PTR DS:[DX]
cmp cl, 0Dh
je quit_num
cmp cl, 30h
jb print_err
cmp cl, 39h
ja print_err
and cl, 0Fh
;bx乘10 然後cl加到bx -> 請自己寫
inc dx
jmp num_cnt
print_err:
;當輸入值< 30h or >39h 顯示輸入數值錯誤 -> 請自己寫
: quit_num:
: .exit
: end
大概就是這樣了
你只要斷點在quit_num 就可以看到bx值
有錯誤請自己debug
其實還可以判斷是否輸入超過4位數 或者數值過65535
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.221.123
※ 編輯: eentut 來自: 219.85.221.123 (07/18 23:05)
推
07/19 00:05, , 1F
07/19 00:05, 1F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
65
150