實驗2 用機器指令和彙編指令程式設計

2022-06-04 17:15:10 字數 1529 閱讀 2710

實驗二 用機器指令和彙編指令程式設計

實驗任務

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

mov ax, ffff

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0]

add ax,[2]

mov bx,[4]

add bx,[6]

push ax

push bx

pop ax

pop bx

push [4]

push [6]

**截圖:

實驗結果:

分析:此實驗使用棧實現了暫存器值的交換,語句mov ss,ax和語句mov sp,0100在使用t命令單步執行時,同時進行。

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

分析:經過對圖3.19的觀察和實踐,我們在2000h記憶體段建立了乙個棧,棧的最大空間是10h,ss:sp指向了棧頂2000:10h,表面棧空,給ax賦值後壓棧。 初始沒有執行這段**時,我們使用d命令觀察2000:00記憶體,都是00,怎麼建立棧結構指向這段記憶體時,我們發現有些資料改變了。這些資料是什麼?我們發現這裡面有cs值、ip值、ax值(這個容易看出來),還有bp值(00 00),還有flag的值。t命令實際是引發了單步中斷,執行中斷例程時,cpu會將一些中斷例程使用的的暫存器變數自動壓棧到棧中,此例中就包括了上述的暫存器變數的值。我們可以不必理會這些暫存器的變數,我們只關心sp就可以了。有它指示,我們就可以對棧進行操作了。而此時的sp是正確的, 注意:這個棧和我們建立的棧是同乙個棧結構(為什麼,ss=2000h了),由於t命令必須儲存暫存器變數的值(這個是中斷程式定義的。)它也占用一定的空間。可能我們定義的棧空間比較小;頻繁的使用push指令,為了避免棧頂超界,我們盡量使棧空間大些,就像此程式,設定棧空間是100h。

實驗2 用機器指令和彙編指令程式設計

1.預備知識 用t命令執行修改棧暫存器 ss的指令,如 mov ss,ax,mov ss,0 pop ss sp的指令也緊接著執行,一般情況下,用 t命令執行一條指令後,會停止繼續執行,顯示出當前 cpu2.實驗任務 1 使用 debug 將上面的程式段寫入記憶體,逐條執行,根據指令執行後的實際運 ...

實驗2 用機器指令和彙編指令程式設計

四 實驗結論 任務一 1 使用e命令將記憶體單元0021 0 0021 7連續8個位元組資料改為30h,31h,32h,33h,34h,35h,36h,37h。2 將從0021 0開始修改8個記憶體單元後利用d命令檢視修改後記憶體中的值,檢視記憶體中是否已經修改完成 3 利用debug,將以下程式段...

實驗 用機器指令和彙編指令程式設計

1 教材實驗一結論 1 通過以下兩種方式將以下程式段寫入記憶體 e命令和a命令。b8 20 4e mov ax,4e20h 0516 14add ax,1416h bb 00 20mov bx,2000h 01d8 add ax,bx 89c3 mov bx,ax 01d8 add ax,bx b8...