匯編實驗2和3
阿新 • • 發佈:2018-10-26
明顯 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