實驗二 用機器指令和彙編指令編程

一.實驗準備學習

  1.爲了便於驗證明驗結果,對「2. 實驗任務」中的(1)作以下調整:spa

 在使用 a 命令輸入指令調試前,使用 e 命令將內存單元 0021:0 ~0021:7 連續 8 3d

個字節數據修改成 30H, 31H, 32H, 33H,34H,35H,36H,37H調試

2.修改完成後,用d命令進行查看是否完成了修改code

 

二.使用Debug,將書中的事例程序段寫入內存,逐條執行,根據指令執行後的實際運行狀況完成書中填空blog

1.用a命令將事例彙編指令寫入內存(注:第 1 行的 mov ax, ffff → 改成 mov ax, 0021)內存

 

2.實驗前根據理論知識進行書中內容填空io

 

 

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;修改的內存單元的地址是220FE內容爲6462

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

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

pop bx         ;sp = 0100;bx = 6462



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

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

 

3.在單步執行彙編指令前,先使用r命令查看寄存器的初始值class

棧頂的初值爲ss=073F,棧底的初值爲sp=00FDbug

4.使用t命令進行單步逐條執行

這裏面的代碼中,在執行mov ss,ax後,應該待執行指令是mov sp,0100,但彷佛跳過了這一句,而去待執行

下一句mov ax,[0].但對比觀察後發現雖然mov sp,0100並無顯示待執行,實際上仍是產生了執行了的效果,

sp的值被設爲0100。能夠當作mov ss,ax與mov sp,0100同時執行了

上面的執行語句中,出現了不少pop,push出棧,入棧語句,在入棧時sp = sp-2.在出棧時sp=sp+2

5.比對實驗結果與理論填空

能夠發現事先的填空內容與實驗結果是一致的

三.仔細觀察書中事例圖的實驗過程,而後分析:爲何2000:0~2000:f中的內容會發生改變

1.按圖中代碼敲入

 

並用e命令修改2000:0~2000:f(第一條指令將ax的值設爲2000H)內存單元的內容,用d指令查看是否修改爲功

2.用r指令查看各寄存器初值

初始棧頂SS爲073F,初始棧底SP是00FD,待執行語句爲mov ax,2000

3.用t指令逐條執行

執行了mov ax,2000彙編指令,將ax寄存器的值設爲2000,待執行指令 mov ss,ax

棧頂地址寄存器SS的值按指令設爲了2000,在這裏出現了上一個實驗同樣的狀況,

在這裏咱們進行詳細分析按逐條執行的順序來講,下一條待執行指令應該是mov sp,10.

但這裏彷佛跳過了這條指令,待執行指令爲mov ax,3123,經仔細比對寄存器內容

單步執行mov ss,ax前,ax = 2000;ss=073f;sp=00fd

單步執行mov ss,ax後,ax = 2000;ss=2000;sp=0010 

發現SP的值被設爲了10,也就是說mov ss,ax和mov sp,10同時執行了

通常狀況下,用T命令執行一條指令後,會中止繼續執行,顯示出當前CPU各個寄存器

的狀態和下一步要執行的指令,但T命令執行mov ss,ax指令時倒是同下一條指令一同執行

了,根據上一個實驗和這個實驗猜想在修改棧段寄存器SS指令時會出現這種狀況

經瞭解這種現象是因爲中斷機制形成的,Debug的T命令在執行修改寄存器SS的指令時,下一

條指令也緊接着被執行了。

執行了mov ax,3123將ax的值設爲3123,待執行push ax

執行了push ax語句,將ax寄存器內容入棧,棧底寄存器sp相應的發生變化,待執行mov ax,3366

後面均按照逐步執行的順序進行執行了

四.總結

  經過這次實驗理解並掌握了「棧」內存空間的特性和使用理解並掌握 8086 彙編指令

mov, add, sub, push, pop 的用法,切實體會到「棧」內存空間的複雜性,不只要考慮到越界

,還發現了中斷機制的存在,只是如今咱們還沒法深刻了解中斷機制,期待在後續課程的學習中可以

深刻研究其內在緣由。

相關文章
相關標籤/搜索