我從前最怕旁人火眼金睛,如今,倒是盼着有人能夠洞幽燭遠。如此,就能贈我一點歡喜。
一、實驗目的
- 會自定義中斷解決問題
- 能通過定製鍵盤中斷,實現對鍵盤的監聽並完成一定的功能
二、實驗內容過程記錄
任務1-自定義中斷,用中斷來算算術
(1)自定義79h號中斷,在中斷被調用時,可以將(ah)和(al)中的兩個數按(bl)中提供的運算符('+'或'-')計算,其結果由(ah)返回。編程序實現該中斷並將其安裝到0:200H。例如,(ah)=5,(al)=3,(bl)='+'時,(ah)=8;(ah)=5,(al)=3,(bl)='-' 時,(ah)=2。
定義並安裝中斷例程的代碼爲(加入足量註釋):
運行結果截圖:
(2)運行下面的程序,利用自定義的79h中斷解決問題
assume cs:code, ss:stack
stack segment stack
db 16 dup (0)
stack ends
code segment
start:
mov ah, 5
mov al, 3
mov bl, '+'
int 79h
;單步運行程序到此觀察結果
mov ax,4c00h
int 21h
code ends
end start
測試中斷正常調用,運行截圖如下:
(3)給出下面的數據區定義,利用前面定義的中斷79h,完成對10個“算式”的求解,其結果存放在?處。
datasg segment
db 8, '+', 9, ?
db 9, '-', 1, ?
db 2, '+', 3, ?
db 7, '-', 5, ?
db 4, '-', 2, ?
db 8, '+', 1, ?
db 5, '+', 6, ?
db 13,'-', 7, ?
db 8, '+', 4, ?
db 8, '-', 2, ?
datasg ends
調用中斷解決問題的程序爲(加入足量註釋):
運行結果截圖:
任務2-輸數字,出字母
輸入1-9的數字,以其作爲序號,輸出對應的字母。例如,輸入1,輸出a;而輸入4,輸出d
報告內容:
(1)我的程序是(我已經加入了足夠的註釋):
(2)運行結果截圖
利用BIOS系統功能調用,將鍵盤輸入的小寫字母轉換成大寫字母后輸出顯示,輸入非小寫字母時,什麼也不顯示,等待其他輸入;輸入‘$’字符時結束。
報告內容:
(1)我的程序是(我已經加入了足夠的註釋):
(2)運行結果截圖
利用回顯的中斷演示可以更加清楚的看清執行結果的過程
將程序補充完整,將text指向的三行文本保存到文件中去。
報告內容:
(1)我的程序是(我已經加入了足夠的註釋):
(2)運行結果截圖