實驗1 用匯編指令編碼和調試


一、實驗目的

  1. 掌握8086CPU、寄存器、內存(包括棧空間)的基礎知識

  2. 掌握匯編源程序組成與結構

  3. 理解和掌握寄存器間接尋址方式[bx]

  4. 掌握匯編指令mov, add, sub, jmp, push, pop,loop的用法,理解高級語言的表達和抽象機制

  5. 熟練掌握使用debug工具編寫和調試x86匯編命令的方法

  6. 掌握匯編語言源程序編寫→匯編→鏈接→調試的工具和方法

二、實驗結論

  實驗任務2:

   

    上圖為使用d命令查看生產日期的截圖。

      

     上圖為使用e命令修改后查看,發現修改失敗。

  

  實驗任務3:

        

     上圖為使用e命令修改內存單元后的情形,在屏幕左上角出現了5個圖案。

       

    上圖為使用f命令批量填充內存單元后的情形,屏幕下方出現許多圖案。

   

      上圖為查看該段內存內容,並嘗試使用e命令對其進行修改,修改后發現屏幕下方的部分圖案發生改變。

 

  實驗任務4:

  填空:2E  ->  2C  ->  2A  ->  28  ->  2A  ->  2C  ->  2E  ->  30

    問題1:邏輯地址:20:30

      物理地址:00230H

    問題2:

  

     問題3:

  

      此時數據空間內的數據沒有變化。

   問題4:

  

      按照截圖修改pop指令的順序后,使用d命令查看發現順序發生改變,原因是因為出棧的順序為70 80    50 60    30 40   10 20

 

 實驗任務5:

    問題1:使用t命令單步執行mov ss, ax時,並不是單步執行完這一條指令就暫停,而是緊接着執行下一條指令即mov sp, 30。

  

       問題2:

  

 

    

      從實驗中發現截圖中第一處黃線划的08 01為當前代碼的偏移地址,第二處黃線划的是當前代碼的段地址,執行完mov sp, 30后偏移地址為0108,最后執行完push ax后在0110 即 10 01 而在執行入棧操作后,棧頂指針向前移動2個字節,所以整體向前移動2個字節。

 

  實驗任務6:

    源碼: 

  

 1 assume cs:code
 2 code segment
 3 start:
 4     mov cx, 10
 5     mov dl, '0'
 6     s: mov ah, 2
 7     int 21h
 8     add dl, 1
 9     loop s
10     
11     mov ah, 4ch
12     int 21h
13 code ends
14 end start

  

  

      上為使用masm和link對程序進行匯編和鏈接過程的截圖。

  

     上為運行該程序后輸出的結果。

  

      上為在debug中查看task5.exe的程序段前綴PSP的截圖,由圖可見,程序前兩個  字節是為CD 20。

 

  實驗任務7:

    源碼:

 

 1 assume cs:code
 2 code segment
 3   mov ax, 076Ah
 4   mov ds, ax
 5   mov ax, 0020h
 6   mov es, ax
 7   mov bx, 0
 8   mov cx, 200
 9   s: mov al, [bx]
10   mov es:[bx], al
11   inc bx
12   loop s
13 
14   mov ax, 4c00h
15   int 21h
16 code ends
17 end

 

   

 

   

     上為使用u命令反匯編查看,發現復制成功。

三、實驗總結

     通過本次實驗我學到了許多關於匯編語言的實踐操作方面的知識,了解並實踐了如何在Dosbox中運用在書本上學到的匯編語言程序設計的知識。我發現在使用e命令在顯存部分修改值后,在屏幕上會顯示相對應的圖案,如果繼續使用其他代碼如d命令查看等,將輸出在屏幕上的圖案覆蓋掉后,因為屏幕上的內容發生改變,所以顯存中的數據也會隨之發生改變,這就導致連續的兩次d命令查看內存中的內容可能存在差異。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM