1. 程式人生 > >實驗 2 用機器指令和匯編指令編程

實驗 2 用機器指令和匯編指令編程

ima 分享 進棧 mov add 標誌寄存器 掌握 編程 bug

實驗任務

(1)使用Debug,將下面的程序段寫入內存,逐條執行,根據指令執行後的實際運行情況填空。(為了便於驗證實驗結果,對「2. 實驗任務」中的(1)做如下兩點調整: ① 在使用 a 命令輸入指令調試前,使用 e 命令將內存單元 0021:0 ~0021:7 連續 8 個字節數據修改為 30H, 31H, 32H, 33H,34H,35H,36H,37H ② 將 P74 實驗任務(1)中第 1行的 mov ax, ffff → 改為 mov ax, 0021)

  mov ax,ffff

  mov ds,ax

  mov ax,2200

  mov ss,ax

  mov sp,0100

  mov ax,[0]

  add ax,[2]

  mov bx,[4]

  add bx,[6]

  push ax

  push bx

  pop ax

  pop bx

  push [4]

  push [6]

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

(2)仔細觀察圖3.19中的實驗過程,然後分析:為什麽2000:0~2000:f中的內容會發生改變?

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

第一行匯編指令功能:將2000送入AX寄存器

第二行:將ax的值賦給ss

第三行:將0100賦給ss

初始時棧頂和棧底分別是2000:0010和2000:000E。

至於2000:0~f會改變的原因似乎是因為在使用t指令進行調試時,會產生中斷現象,導致CPU先將標誌寄存器進棧。

總結與體會

在實驗任務1中,理論分析各填空的值與實際操作得出的值有不少差錯,沒有熟練掌握;實驗任務2中未能理解“中斷”概念。在實驗中對於棧有了更深刻的了解。

實驗 2 用機器指令和匯編指令編程