1. 程式人生 > >實驗二 用機器指令和匯編指令編程

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

發生 分析 src 不用 匯編 執行 我們 觀察 字節

四、實驗結論

實驗任務2

1)使用Debug,將下面程序段寫入內存,逐條執行,根據指令執行後的實際運算情況填空。

在使用 a 命令輸入指令調試前,使用 e 命令將內存單元 0021:0 ~0021:7 連續 8 個字節數據修改為 30H, 31H, 32H, 33H,34H,35H,36H,37H

將 P74 實驗任務(1)中第 1 行的 mov ax, ffff → 改為 mov ax, 0021

技術分享圖片

使用R命令修改CS:IP的地址為0021:0

輸入需要執行的命令

技術分享圖片

技術分享圖片

由截圖可知,在執行mov ss,ax的時候,同步執行了下一步mov sp,0100.說明這兩步是同時執行的

技術分享圖片

技術分享圖片

技術分享圖片

上圖是指令進行後的實際運行情況的填空。

2)仔細觀察圖3.19中的實驗過程,然後分析:為什麽2000:0~2000:f中的內容會發生改變

技術分享圖片

技術分享圖片

技術分享圖片

前三行的命令是定義棧地址,棧頂的地址為2000:0010。

在執行push ax的時候,ax的值推入棧中,是值發生改變

五、總結與體會

通過這次實驗,增加了我對棧的了解,例如ss*16+sp=棧頂的物理地址,棧頂的段地址存放在ss中,偏移地址存放在sp中。同時,8086CPU的入棧和出棧操作都是以字為單位進行的。

通過棧,我們可以不用改變cs:ip的值,就能使用t命令進行一些指令操作,可以說棧的使用方便了我們。

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