【彙編】8086彙編輸入單個字符的一個方法

寫在前面:大家好K。首先爲你點進這篇有趣的文章點贊👍!文章在撰寫過程中難免有疏漏和錯誤,歡迎你在下方留言指出文章的不足之處;如果覺得這篇文章對你有用,也歡迎你點贊和留下你的評論。更多內容請點進👉我的博客K。👈閱覽。

先看代碼

mov ah, 1
int 21h

第一行,將AH設置成1模式,用於從鍵盤輸入

第二行,調用系統中斷,此時可以鍵盤輸入,按回車結束

輸入後,收到的值存放在AL(AX寄存器得低四位)中,之後可以對字符進行處理

注意結果存放在AX的低4位中,高4位爲隨機的數,最好不要直接使用AX

DEBUG中輸入

什麼時候輸入

單步調試時,在執行過int 21h後,可能還會執行一些其他代碼(手動按t執行)

當沒有出現短槓時,即可輸入值,截圖

DEBUG中輸入

例子

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位清零

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章