1. 程式人生 > >匯編實驗2和3

匯編實驗2和3

明顯 push a 內存地址 bsp 利用 需要 匯編指令 代碼 修改

很久沒更了,忙+懶。。。難受。

實驗2

(1)首先寫如下的匯編指令:

技術分享圖片

下面要求寫出各個寄存器的值,這裏直接在圖中表示,不在給出。

技術分享圖片

技術分享圖片

這裏可以看到ss是2200且sp開始為0100因為開始修改了它們的值,故修改的內存地址都是SS:SP,另外棧

內的內容也兩種方式來給出。第一種直接分析可得push ax ,push bx,即把ax和bx寄存器中的值推到棧內由圖

可知分別為c0fc,6021。另一種就是直接利用d命令進行查看,如圖可知push [4]和 push [6] 修改的值分別為30f0, 2f31(註意這裏是小端法表示):

技術分享圖片

(2)

輸入以下匯編指令:

技術分享圖片

技術分享圖片

這裏明顯可以看出經過t命令之後用d命令查看棧所在的ss地址的內容發現被修改,裏面有一段內容為cs:ip的值,

即t命令所執行所需要的匯編指令的內存地址, 但前面還有一段內容並不知道是什麽東西。

實驗3

將代碼寫入後進行編譯鏈接形成.exe文件:

技術分享圖片

技術分享圖片

然後進行單步調試,這裏註意在int 21這裏直接用p命令,因為int 21為系統函數,並不是我們需要進入查看的,也不是我們關心的。

而各個寄存器的值也全在圖中,這裏也就不寫出了。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

後面查看psp的值, 和代碼段公用一個起始地址。

技術分享圖片

匯編實驗2和3