1. 程式人生 > >彙編實驗一 檢視CPU和記憶體,用機器指令和組合語言指令程式設計

彙編實驗一 檢視CPU和記憶體,用機器指令和組合語言指令程式設計

在裝完DosBox環境之後,就可以用debug模式進行彙編指令的程式設計了。

  • 實驗內容:

    

首先用a指令進行資料的儲存,然後用t命令進行除錯。

 

 

可以發現ax,bx在不同的命令下發生了改變,cs的地址和指令是相同的,ip的值也是根據輸入指令的長度而不斷的增加。

(2)將下面3條指令寫入從2000:0開始的記憶體單元中,利用這3條指令計算2的8次方。

    mov ax,1

    add ax,ax

    jmp 2000:0003

先觀察一下實驗要求,執行完第一步後ax= 1,第二步後ax  = 2,執行add 1次 2*2,執行2次,就是2*2*2就是2的3次方,那麼2的8次方 就 add 執行 7次。

執行之前先將指令指向add語句 這樣就會重複執行 add語句,用jmp 指令更改CS、IP暫存器的值,從而控制CPU執行目標指令。之後,就可執行我們寫的彙編指令了,我們要先使用r指令改變 cs 和ip的指向,cs為程式碼段暫存器,ip為指標暫存器。在任意時刻,CPU將cs:ip指向的內容當做指令執行。

 

關於執行命令t的執行次數:執行第一二步執行需 2個t,那麼執行第三步的t的時候實際上只是改變cs:ip的指向,並沒執行cs:ip指向內容的機器指令,後面的7個jmp 每個需要執行2個t才能執行add方法。所以共需要執行t 16次才能計算出2的8次方。

第一次t命令:

 

 

最後一次t命令:(最後短線位置的t手抖了)

 

(3)檢視記憶體中的內容。

PC機主機板上的ROM中有一個生產日期,在記憶體FFF00H-FFFFFH的某幾個單元中,請找到這個生產日期並試圖改變它。 

 

嘗試修改:

發現無法修改。

(4)向記憶體從B8100H開始的單元中填寫資料,如:

-e B8100:0000 01 01 02 02 03 03 04 04

請讀者先填寫不同的資料,觀察產生的現象;再改變填寫的地址,觀察產生的現象。

 

可以看到,向B8100H單元中輸入這些資料後,可以觀察到介面上出現了一些彩色的圖案,黃方框標識。

 接著在相同的地址內填寫不同的資料,可以看到出現了完全不同的圖案。

 

下面改變輸入資料的地址,可以看到顯示的內容不變,位置改變了。

 

說實話,我也不知道這是怎麼回事。我就去查了查,度娘告訴我:這一段記憶體為視訊記憶體,是RAM,可以改變其值在螢幕上的顯示,其中這一個字元佔兩個位元組,前一個(低)為字元的ASCII碼,後一個(高)為要顯示的顏色。

實驗總結:

(1)首先得理解並且熟練操作的一些指令。

在debug模式下常用的命令:

R命令:檢視、改變CPU暫存器的內容;

D命令:檢視記憶體中的內容;

E命令:改寫記憶體中的內容;

U命令:將記憶體中的機器指令翻譯成彙編指令;

T命令:執行一條機器指令;

A命令:以彙編指標的格式在記憶體中寫入一條機器指令。

(2)通過這次實驗,對debug的一些基本操作有了基本瞭解,如何寫入機器程式碼和彙編程式碼,檢視所需要的內容,並且知道了某些記憶體中儲存的內容,以及它們中的內容是否可變等知識。

如果有什麼錯誤的話,還希望各位大佬指出。謝謝!