寫在前面:大家好K。首先爲你點進這篇有趣的文章點贊👍!文章在撰寫過程中難免有疏漏和錯誤,歡迎你在下方留言指出文章的不足之處;如果覺得這篇文章對你有用,也歡迎你點贊和留下你的評論。更多內容請點進👉我的博客K。👈閱覽。
先看代碼
mov ah, 1
int 21h
第一行,將AH設置成1模式,用於從鍵盤輸入
第二行,調用系統中斷,此時可以鍵盤輸入,按回車結束
輸入後,收到的值存放在AL(AX寄存器得低四位)中,之後可以對字符進行處理
注意結果存放在AX的低4位中,高4位爲隨機的數,最好不要直接使用AX
DEBUG中輸入
什麼時候輸入
單步調試時,在執行過int 21h
後,可能還會執行一些其他代碼(手動按t執行)
當沒有出現短槓時,即可輸入值,截圖
例子
code segment
assume cs:code
start:
; 處理從鍵盤輸入
mov ah, 1 ; ah設置成1模式,用於從鍵盤輸入
int 21h ; 調用系統中斷,輸入
sub al, 30h ; 輸入的結果默認是放在al的,減去30h是爲了把字符轉換成數字
and ax, 0fh
; 將值存放到變量EN中
EN equ al
mov ax, 4c00h ; 4c00h表示程序退出,並返回00,傳遞退出信息
int 21h
code ends
end start
在第5、6行進行鍵盤輸入後,結果存放在AL中
此處計劃輸入數字,但是接收到的是ASCII碼字符,所以減去十六進制的30,得到期望的數字
因爲是存放在低4位的,AX的高4位是隨機的一個數,所以通過和00001111(十六進制爲0F)進行“與“操作,將高4位清零