assembly language 實驗2 彙編源程式編寫與彙編、除錯
阿新 • • 發佈:2020-11-06
實驗內容
實驗任務1
使用任意一款文字編輯器,編寫8086彙編源程式ex1.asm。原始碼如下:
;ex1.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov byte ptr ds:[0], 1 mov byte ptr ds:[1], 1 mov byte ptr ds:[2], 2 mov byte ptr ds:[3], 2 mov byte ptr ds:[4], 3 mov byte ptr ds:[5], 3 mov byte ptr ds:[6], 4 mov byte ptr ds:[7], 4 mov ah, 4ch int 21h code ends end
要求:使用8086彙編程式編寫、彙編、連結、執行、除錯方法,對ex1.asm進行彙編、連結、執行,使
用debug工具除錯可執行檔案。
實驗步驟
實驗任務2
使用任意一款文字編輯器,編寫8086彙編源程式ex2.asm。原始碼如下:
ex2.asm assume cs:code code segment mov ax, 0b810h mov ds, ax mov bx, 0 mov ax, 101H mov cx, 4 s: mov [bx], ax add bx, 2 add ax, 101H loop s mov ah, 4ch int 21h code ends end
要求:
- 使用8086彙編程式編寫、彙編、連結、執行、除錯方法,對ex2.asm進行彙編、連結、執行,使用debug工具除錯可執行檔案
- 編寫彙編源程式
- 給出執行結果截圖
- 編寫完整彙編源程式,實現向記憶體0:200~0:23F依次傳送資料0~63(3FH)。
- 綜合使用[bx]和loop,編寫彙編源程式
- 靈活使用debug的t命令、g命令、p命令除錯。在程式退出前,用d命令檢視
- 0:200~0:23F,確認是否將0~3F傳送至此段記憶體區域。
實驗步驟
對比ex1和未修改的ex2的執行結果,二者的結果一致,說明這兩個程式通過不使用和使用loop實現了相同的結果。修改後的ex2只是顯示的字元多了一些。 在程式碼書寫上,ex1.asm採用順序結構,ex2.asm採用迴圈結構。實驗任務3
綜合使用loop,[bx],編寫完整彙編程式,實現向記憶體b800:07b8開始的連續16個字單元重複填充字資料
0237H。
要求:
執行步驟
根據實驗結果,猜測字資料的高位儲存的是字元的顏色,低位儲存的是字元的ASCII碼。實驗任務5
該程式的功能是將 "mov ax, 4c00h" 之前的指令複製到 0:200 處,待補全程式碼如下:
assume cs:code
code segment
mov ax, _____
mov ds, ax
mov ax, 0020h
mov es, ax
mov bx, 0
mov cx, _____
s: mov al, [bx]
mov es:[bx], al
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end
填空內容為:
- mov ax,cs
- mov cx,17h