Re: [問題] 關於鍵盤輸入的問題
※ 引述《ppttcc (ppttcc)》之銘言:
: 程式接受鍵盤輸入一數(鍵盤上方的數字),並將此數除以另一數後將商及餘數輸出.
: 實際執行時,若從鍵盤輸入7,除以另一數3,結果應是2餘1,但結果卻是2餘2
: 若輸入9,得到3餘1...
: 曾經嘗試若不轉成數字的ascii碼,即不呼叫tochar,直接輸出值,若餘數應是0,
: 則會輸出一個空心的笑臉(ascii值1),所以副程式應該沒有問題
: 但若不由鍵盤輸入,改以立即值,則可輸出正確的結果.
: 觀察後,似乎只要是由鍵盤輸入,值都會自動被加1,輸入7就會變8,輸入9會變10...
: 或者將mov al,scancode改成mov al,asciicode,若輸入7(55),也會得到兩個代表
: 18及1的ASCII字元.難道意味不能直接用掃描碼去做運算?
看來你還是不知道什麼叫scan code
問問題前最好google深入點再發問
heater0718.wordpress.com/2010/10/26/%E9%9B%BB%E8%85%A6-keyboard-scan-code/
: 因為變數值視當時輸入(只能看到變數的位址),若用debug程式看不出dl值如何變化,
: 且debug執行到tochar後就沒再回到主程式而離開debug....
: 因為我輸出執行檔的格式為*.com,是否與這有關?
: 麻煩幫我看一下,感謝!
: 補充:在網路上找到有關掃描碼的文章,其中掃描碼對應的鍵盤數字正好是多1!
: 其中又有掃描碼及擴展碼...但鍵7的掃描碼為8,擴展碼為37h(等於ASCII55),兩者不等
: 那掃描碼又是什麼?
: http://blog.csdn.net/xqan/archive/2008/01/17/2048959.aspx
: 程式如下
: start:
: call reset ;將所有暫存器歸0
: divide db ?;
: divisor db 3 ;設定除數為3
: quo db 0 ;初始商為0
: remain db 0 ;初始餘數為0
; scancode db 0 ;儲存ah 鍵盤掃描碼
存掃描碼沒意義 因為你只需要數字
InputNumber db 0
: asciicode db 0 ;儲存al ASCII碼
: call input ;從鍵盤輸入被除數
: sub ax,ax ;將ax歸零
; mov al,scancode;若以立即值取代變數scancode則輸出正確結果,
;用變數就會加1
mov al, InputNumber
: div divisor
: mov remain,ah ;儲存餘數
: mov quo,al ;儲存商
: mov dl,quo ;印出商
: call tochar
: call show
: mov dl,remain ;印出餘數
: call tochar
: call show
: mov dl,asciicode;印出輸入的字元
: call show
: exit: mov ah,4ch
: int 21h
: ;----------------------------------------
: reset proc near ;歸零所有暫存器
: sub ax,ax
: sub bx,bx
: sub cx,cx
: sub dx,dx
: ret
: reset endp
: input proc near ;取得鍵盤輸入
: mov ah,0
: int 16h
; mov scancode,ah
: mov asciicode,al
and al, 0Fh
mov InputNumber, al
最好在此判斷若輸入不是0-9的數字 顯示錯誤訊息
: ret
: input endp
: tochar proc near ;轉成ASCII的字元
: mov bl,48
: add dl,bl
: cmp dl,57
: jbe return
; add dl,7
這一行沒意義, +7的意義是要轉成英文字母 此程式只允許輸入0-9
: return: ret
: tochar endp
: show proc near ;顯示字元
: mov ah,02
: int 21h
: ret
: show endp
: ;--------------------------
: 輸入7
: 執行結果227
: 輸入8
: 執行結果308
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.221.123
推
11/06 11:05, , 1F
11/06 11:05, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章