1. 程式人生 > 其它 >實驗一:用匯編指令編碼和除錯

實驗一:用匯編指令編碼和除錯

四、實驗結論

1. 實驗任務1 自行練習,掌握工具用法。此部分無需寫實驗結論。 如練習中遇到、發現問題,使用搜索引擎,以及,和同學討論後,都暫時未能得到解決或釋疑,可以寫 入這一部分。共大家一起討論。

2. 實驗任務2 給出使用d命令檢視生產時期的截圖 給出使用e命令修改生產日期所在記憶體單元的截圖,以及,修改後,再次使用d命令檢視的截圖 結論:能否修改,以及,原因分析

結論:使用e命令無法修改電腦記憶體中的生產日期資料,因為無法修改視訊記憶體中的內容。

3. 實驗任務3 給出在debug中使用e命令修改記憶體單元的命令,及,效果截圖 給出在debug中使用f命令批量填充記憶體單元的命令,及,效果截圖 嘗試修改記憶體單元,或,資料後的效果截圖

4. 實驗任務4 根據在debug環境中除錯觀察結果,填空並回答問題。

-a

mov ax, 20

mov ds, ax

mov ss, ax

mov sp, 30

push [0] ; 執行後,暫存器(sp) = __002E__

push [2] ; 執行後,暫存器(sp) = __002C_

push [4] ; 執行後,暫存器(sp) = _002A___

push [6] ; 執行後,暫存器(sp) = __0028__

pop [6] ; 執行後,暫存器(sp) = _ 002A___

pop [4] ; 執行後,暫存器(sp) = __002C__

pop [2] ; 執行後,暫存器(sp) = __002E__

pop [0] ; 執行後,暫存器(sp) = __0030__

問題一: 邏輯地址是0020:0030,實體地址是00230H

問題二:

問題三:

問題四:

5. 實驗任務5

問題一:

沒有暫停,mov sp,30 在mov ss,ax後執行

問題二:

進棧時遵守後進先出的原則,並且低位在前

6. 實驗任務6

assume cs:code

code segment

start:

  mov cx, 10

  mov dl, '0'

s: mov ah, 2

  int 21h

  add dl, 1

  loop s

  mov ah,4ch

  int 21h

code ends

end start

7. 實驗任務7

assumecs:code

codesegment

movax,cs

movds,ax

movax,0020h

moves,ax

movbx,0

mov cx,cx-5

s: moval,[bx]

moves:[bx],al

incbx

loops

movax,4c00h

int21h

codeends

end

結論:已經把task7.asm中line3-line12的程式碼複製到了目標記憶體 空間。

五、實驗總結

通過本次實驗,更加熟悉了Debug的使用,學習並使用了各種命令,以及使用masm、link,彙編、連結。