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

2022-06-03 18:54:13 字數 2094 閱讀 1908

(1)

使用e命令將指令輸入記憶體,並用t命令單步執行。

使用a命令將指令寫入記憶體,並使用t命令單步執行。

(2)使用a命令輸入命令,並使用t命令進行單步執行。

(3)使用d命令查詢記憶體fff00h~fffffh,查詢到日期。

使用e命令修改後發現並未修改成功。

分析原因:位址為c0000h~fffffh的記憶體單元是rom的位址空間,所以向其中進行寫入資料的操作是無效的。

(4)輸入給定的原始資料。

改變位址。

改變資料。

(1)使用e命令修改2000:0~2000:f的資料,並檢查是否正確。

使用a命令輸入p74頁的指令。

使用t命令進行單步執行。

mov ax,0022

/ mov ds,ax

/mov ax,2200

/mov ss,ax

/mov sp,0100

/mov ax,[0]

ax=5150

add ax,[2]

ax=a4a2

mov bx,[4]

bx=5554

add bx,[6]

bx=acaa

push ax

sp=00fe;修改的記憶體單元的位址是2200:00fe,內容為a4a2

push bx

sp=00fc;修改的記憶體單元的位址是2200:00fc,內容為acaa

pop ax 

sp=00fe;ax=acaa

pop bx

sp=0100;bx=a4a2

push [4]

sp=00fe;修改的記憶體單元的位址是2200:00fe,內容為5554

push [6]

sp=00fc;修改的記憶體單元的位址是2200:00fc,內容為5756

經檢驗,理論答案與實踐一致。

(2)前3行彙編指令的功能,特別是,mov sp, 10意味著什麼?初始時棧頂和棧底分別是?

mov ax,2000表示將2000h存入常用暫存器ax中。

mov ss,ax表示將ax的值存入棧的段暫存器ss中,作為棧的段位址

mov sp,10表示將10存入到棧指標暫存器sp,作為棧的偏移位址,表示棧頂的最初偏移位址為10。

最初棧頂為:2000:0010

最初棧底為:2000:000e

分析棧的內容變化原因:可見系統將一些重要資料如cs,ip等資料存入2000:0~2000:f中,猜測可能是因為使用t命令單步執行時,會把某些重要資料暫存到棧中,有些值並非人工輸入的,在執行入棧的操作時會將該相應位址的值變為入棧的值,將cs和ip向前移動。

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

1.實驗執行環境 win10系統下的dosbox 2.實驗所用偵錯程式為debug 一 基礎指令 此次實驗中所用到的7條debug命令 r,d,e,u t,a 1.r命令 檢視 改變cpu暫存器的內容 檢視暫存器的值 改變cs ip的值 可見cs,ip的值由上面的073f和0100變成了0000 2...

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

1.熟練掌握使用debug工具編寫和除錯x86彙編命令的方法 2.掌握8086cpu 暫存器 記憶體的基礎知識 3.理解並掌握記憶體中多位元組資料的存放 小端法 4.理解並掌握 棧 記憶體空間的特性和使用 5.掌握指令mov,add,sub,jmp,push,pop的基礎用法 練習教材p35 45 ...

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

一 實驗目的 1.熟練掌握使用debug工具編寫和除錯x86彙編命令的方法 2.掌握8086cpu 暫存器 記憶體的基礎知識 3.理解並掌握記憶體中多位元組資料的存放 小端法 4.理解並掌握 棧 記憶體空間的特性和使用 5.掌握指令mov,add,sub,jmp,push,pop的基礎用法 二 實驗...