1. 程式人生 > >彙編實驗2

彙編實驗2

 

1.實驗任務

1.使用debug,將下面的程式段寫入記憶體,逐條執行,根據指令執行後的實際執行情況填空

1.程式碼

mov ax,0021

mov ds,ax

mov ax,2000

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 內容為 3130

push bx     ;sp= 00FC;修改的記憶體單元的地址是 2200:00FC內容為 6462

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

pop bx    ;sp= 0010 ;bx= 6462

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

push [6]          ;sp= 00FC 

;修改的記憶體單元的地址是 2200:00FC 內容為 6C6A

PS:在程式段中有一段mov sp,0100在執行時未被顯示,但是被執行。書上解釋:debug的T指令在執行修改暫存器SS的指令時,下條指令也會被接著執行。

這有關中斷機制。

2.截圖

 

 

 

 

 

在程式段之前有e指令改寫指令,到mov ax,[0],add ax [2]時,小端法,3130加3332即6462

2.觀察下實驗,分析2000:0到2000:f的內容會改變

 

 

 

 根據中斷機制,程式段在 mov ss,ax時便將mov sp 10執行(用T指令執行一條指令後,cpu響應單步中斷),標誌暫存器入棧,cs IP出棧,而正好檢視到改變的部分,所以才會有這樣的效果