1. 程式人生 > >匯編語言 實驗二

匯編語言 實驗二

自己的 人工 向量 程序 寄存器 http 分享圖片 修改 為什麽

實驗:

1)使用debug,將下面的程序段寫入內存,逐條執行,根據指令執行後的實際情況來填空。

① 在使用 a 命令輸入指令調試前,使用 e 命令將內存單元 0021:0 ~0021:7 連續 8 個字節數據修改為 30H, 31H, 32H, 33H,34H,35H,36H,37H ② 將 P74 實驗任務(1)中第 1行的 mov ax, ffff → 改為 mov ax, 0021

mov ax,0021

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0] ; ax=3130

add ax,[2] ; ax=6462

mov bx,[4] ; bx=3534

add bx,[6] ; bx=6C6A

push ax ;sp= 00FE 修改的內存單元地址是: 2200:00FE 內容為:6462

push bx ;sp= 00FC 修改的內存單元地址是: 2200:00FC 內容為:6C6A

pop ax ;sp= 00FE ;ax=6C6A

pop bx ;sp= 0100 ;bx=6462

push [4] ;sp= 00FE 修改的內存單元地址是: 2200:00FE 內容為:3534

push [6] ;sp= 00FC 修改的內存單元地址是:2200:00FC 內容為:3736

下面是相關的實驗的過程截圖:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

從上面的這些過程以及步驟中 我們可以將這些自己的推測以及實驗的結果進行驗證。

2) 仔細的觀察下面的圖的實驗過程,然後分析:為什麽2000:0至2000:f中的內容會發生改變?

技術分享圖片

我們發現原來寄存器裏cs和IP裏的值都被賦值給地址了,這個貌似是書上所說的叫中斷機制。所以我就查了一下:

中斷就是一種特殊的信號,CPU一旦檢查到了這種信號,他就會停止當前的指令,轉而去處理這個特殊的信號,中斷信號分為兩種,一種是內中斷,也叫程序中斷,另一種是外中斷,也叫硬件中斷,硬件中斷一般是某某某硬件準備好了,向CPU請求中斷,而程序中斷一般是出現了一些錯誤,如除數為0,或者人工進行中斷,如Debug。 貌似是在中斷若想在計算機中使用自定義的中斷函數,只需要將中斷函數的地址註冊到中斷向量表中就可以了,即將中斷向量表中空閑的位置寫入自定義中斷函數的CS與IP。 這種情況好像正是我們這裏的情況 所以猜測了一下 應該是這個原因。 實驗結論: 1)這次可以非常有趣的了解到很多不同的指令。 2)可以更好的了解到棧的使用。 3)查找到並且了解了有關中斷機制的相關事情。

匯編語言 實驗二