彙編實驗2
阿新 • • 發佈:2018-10-31
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
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
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出棧,而正好檢視到改變的部分,所以才會有這樣的效果