實驗7 中斷及應用

我從前最怕旁人火眼金睛,如今,倒是盼着有人能夠洞幽燭遠。如此,就能贈我一點歡喜。

一、實驗目的

  1. 會自定義中斷解決問題
  2. 能通過定製鍵盤中斷,實現對鍵盤的監聽並完成一定的功能 

二、實驗內容過程記錄

任務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)運行結果截圖

 

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