Re: [問題] 關於數碼轉換

看板ASM (組合語言)作者時間15年前 (2010/07/18 23:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1CGnSzYp (ASM)
討論串 (同標題文章)
文章代碼(AID): #1CGnSzYp (ASM)