1-教材實驗一結論
(1)通過以下兩種方式將以下程式段寫入記憶體:e命令和a命令。
b8 20e命令寫入0200:0開始的記憶體單元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 1a
00mov ax,001ah
bb 26
00mov bx,0026h
00d8 add al,bl
00dc add ah,bl
00c7 add bh,al
b4 00 mov ah,0
00d8 ad al,bl
04 9c add al,9ch
修改cs暫存器中的內容為0200,ip暫存器中的內容為0000後,使用t命令,逐條執行這個程式段
可以發現ax,bx中的內容隨著指令中的執行而改變,ip暫存器中的內容在執行完乙個指令後,會自動指向下一條指令的位址(2)將下面3條指令寫入從2000:0開始的記憶體單元中,利用這3條指令計算2的8次方.
接下來用t命令執行這個程式段 除錯開始(ax起初是0):
除錯結束(ax最後為8):
(3)檢視記憶體中的內容
從fff00h~fffffh中找到生產日期,並試圖改變它 找到類似生產日期的位置在fff0:00f5至fff0:00fc記憶體單元中
試將其值修改為09/10/20
可見修改值的操作無效,因為向位址c0000~fffff的記憶體單元中寫入資料是無效的,因為它是乙個唯讀儲存器rom
(4)向記憶體從b8100h開始的單元中填寫資料
可以看到向b8100開始的記憶體單元中修改資料,會顯示出一些彩色的圖示,這是因為a0000~bffff在8086pc機內是視訊記憶體位址空間
2.教材實驗二結論
(1)使用debug將下面的程式段寫入記憶體,逐條執行
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,[
8] bx =acaa
push ax sp = 00fe 修改的記憶體單元的位址是: 2200
:00fe 內容為:a4a2
push bx sp = 00fc 修改的記憶體單元的位址是: 2200:00fc 內容為:acaapop ax sp = 00fe ax=acaapop bx sp = 00fc bx = a4a2push [4] sp = 00fe 修改的記憶體單元的位址是:2200:00fe 內容為:5554push [6] sp = 00fc 修改的記憶體單元的位址是: 2200:00fc 內容為:5756
除錯開始:
除錯過程:
mov ax,2000:將2000送入暫存器ax中
五、實驗總結
儘管這個實驗需要很長時間,但是通過實驗的完成,我也收穫了很多。
學會了dosbox中的
debug
工具的幾個常用指令 實踐的知識:
8086
機的記憶體空間的劃分,記憶體單元位址的編寫,棧的使用 仍未解決的知識:申明棧空間時的儲存空間中的一串亂碼究竟是何含義?為什麼執行
mov ss,ax
操作時,順便執行了
mov sp,10
。
彙編實驗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 使用e命令將指令輸入記憶體,並用t命令單步執行。使用a命令將指令寫入記憶體,並使用t命令單步執行。2 使用a命令輸入命令,並使用t命令進行單步執行。3 使用d命令查詢記憶體fff00h fffffh,查詢到日期。使用e命令修改後發現並未修改成功。分析原因 位址為c0000h fffffh的記憶體...