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

2022-06-03 23:54:13 字數 2242 閱讀 3197

1. 預備知識:

用t命令執行修改棧暫存器

ss的指令,如

mov ss,ax,mov ss,[0],pop ss

sp的指令也緊接著執行,一般情況下,用

t命令執行一條指令後,會停止繼續執行,顯示出當前

cpu2. 實驗任務

(1)使用

debug

,將上面的程式段寫入記憶體,逐條執行,根據指令執行後的實際運**況填空。  

mov ax, 0021

mov ds, ax

mov ax, 2200

mov ss, ax

mov sp, 0100

mov ax, [0] ;ax=

3130

hadd  ax, [2] ;ax=

6462

hmov bx, [4] ;bx=3534

hadd  bx, [6] ;bx=6c6a

h

push ax ;sp=00feh ,修改的記憶體單元位址是

2200:00fe

內容為6462

hpush bx ;sp=00fch ,修改的記憶體單元位址是

2200:00fc

內容為6c6a

hpop ax ;sp=00f

eh ,ax=

6c6a

hpop bx ;sp=0

100h ,bx=

6462

h

push [4] ;sp=

00fe

h ,修改的記憶體單元位址是

2200:00fe

內容為3534h

push [6] ;sp=00fc

h ,修改的記憶體單元位址是

2200:00fc 內容為

3736

h以e命令改寫,

a命令寫入:

單步執行結果:

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

圖3.19 用debug進行實驗的示例

答:在debug使用t等指令引發了中斷造成的,中斷過程使用當前棧空間存放cpu關鍵資料,所以,棧中就有些不是我們操作的資料了。  

如果是在中斷過程中壓棧是棧越界的話,在windows下的命令視窗會強制關閉。

實驗總結:

debug使用時,不同形式的命令指令,可能對應不同的暫存器位址分配,指令位址為cs,資料段位址為ds,棧段位址為ss;對於段暫存器不可直接賦值,可間接通過其他暫存器賦值。初始化棧頂由ss:sp位址指向所決定,在使用棧的時候,由於cpu無法自動識別棧的大小,存在棧溢位的危險問題。

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

實驗二 用機器指令和彙編指令程式設計 實驗任務 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...

實驗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...