標籤:inf 理解 程式 調試 bsp 有一個 寄存器 寫入 地址
1.使用Debug,將下面的程式段寫入記憶體,逐條執行,觀察每條指令執行後CPU中相關寄存器中內容的變化。
機器碼 彙編指令
b8 20 4e mov ax,4e20h
05 16 14 add ax,1416h
bb 00 20 mov bx,2000h
01 d8 add ax,bx
89 c3 mov bx,cx
01 d8 add ax,bx
b8 1a 00 mov ax,001ah
bb 26 00 mov bx,0026h
00 d8 add al,bl
00 dc add ah,bl
00 c7 add ah,bl
b4 00 mov ah,0
00 d8 add al,bl
04 9c add al,9ch
代碼過於繁瑣,故貼出其中部分兩張。在Debug中,輸入的彙編指令和電腦能夠識別的機器碼做到一一對應。
從第一個r指令可以知道,cs初始值為14df,ip初始值為0100,然後用t指令逐步調試使得ip值不斷變化,最後變成0109,之前輸入的3條彙編指令正好佔用9個位元組,因此我們可以發現ip的變化量根據彙編指令的不同而改變。
2.將下面3條指令寫入從2000:0開始的記憶體單元中,利用這3條指令計算2的八次方。
mov ax,1
add ax,ax
jmp 2000:3
、
這條操作即一直使用jmp指令,不斷進行ax寄存器中值的自加,最後即可求得2的8次方的值,最終結果詳見第三張圖。
3.PC機的ROM中寫有一個生產日期,在記憶體FFF00H-FFFFFH的某幾個單元中,請找到這個生產日期並試圖改變它。
使用d指令來查看fff0之後的記憶體單元,01/01/92即為生產日期,然後使用e指令修改記憶體單元中的值即可.
4.向記憶體從d8100h開始的單元中填寫資料,如:
-e b810:0000 01 01 02 02 03 03 04 04
請讀者先填寫不同的資料,觀察產生的現象;再改變填寫的地址,觀察產生的現象。
向記憶體從d8100h開始時,改寫不同的數字就會出現不同的圖形,當地址再次發生改變之後,圖形就不再變化了;
5.實驗小結
對組合語言這門學科有了初步理解,算是半個門外漢了。
認識了add、mov、jmp等一些基本操作;
認識了r命令,d命令,a命令等基本指令。。。
第一次彙編實驗