汇编语言实验 3 编程、编译、连接、跟踪
實驗內(nèi)容
(1)第1步,編寫匯編源程序t1.asm, 源程序代碼如下:
assume cs:code
code segment
mov ah,2
mov dl,3
add dl,30h
int 21h
mov ah,2
mov dl,6
add dl,30h
int 21h
?? ? mov ah,4ch
int 21h
code ends
end
因為對匯編語言的一系列還不熟練,所以花了點時間,終于進去了。
?
?
?
對源程序 t1.asm 進行匯編、連接、運行、調(diào)試?
(1) 運行程序,觀察程序輸出結(jié)果是什么?
輸出結(jié)果為36
(2) 將 line4和line9種寄存器dl 的值分別修改為 0~9 中任何一個數(shù)字,重新匯編→ 連接→運行,觀察結(jié)果的變化。??
我將line4中的值改為1,line9中的值改為4,
?
(3) 用debug對生成的可執(zhí)行文件 t1.exe 進行調(diào)試。
① 使用 r 命令查看。觀察寄存器 cx 的值是 多少;觀察寄存器 ds 和 cs 的值是多 少,它們之間是否滿足關(guān)系(cs)=(ds)+10H??
cx為0016H,cs為076A,ds為075A,符合關(guān)系(cs)=(ds)+10H。
② PSP(程序段前綴)的頭兩個字節(jié)是CD 20, 用debug查看PSP的內(nèi)容,驗證是否 如此。
?
的確如此
③ 使用 u 命令對 t1.exe 進行反匯編,觀察反匯編得到的源代碼。
反匯編得到的如圖所示
④ 使用 t 命令和 p 命令(遇到 int 命令時,用 p 命令)單步調(diào)試,觀察結(jié)果。?
?
?出現(xiàn)了3
?
出現(xiàn)了6
組成了最后t1.exe的36。
?(2)第1步,編寫匯編源程序t2.asm,源程序代碼如下
assume cs:code
code segment
mov ax,0b800h
mov ds,ax
?
mov bx,0
mov [bx],0433h
?
? ? ?add bx,2
mov [bx],0436h
mov ax,4c00h
int 21h
code ends
end
第2步,對源程序 t2.asm 進行匯編、連接、運行、調(diào)試
(1) 對t2.asm進行匯編、連接后,得到可執(zhí)行文件t2.exe。運行t2.exe,觀察程序運行 結(jié)果,驗證是否在屏幕左上方出現(xiàn)紅色的數(shù)值36
經(jīng)過cls之后,重新輸入t2,出現(xiàn)了目標結(jié)果
(2) 如果(1)結(jié)果得到驗證,重新打開t2.asm,嘗試將源代碼中l(wèi)ine7的0433h→0432h, line10 的 0436h→0439h, 然后重新匯編、連接,得到可執(zhí)行文件 t2.exe。使用 cls 命令清 屏后,再次觀察程序運行結(jié)果。
修改成功
?
?出現(xiàn)了紅色的29
(3) 如果(1)結(jié)果得到驗證,重新打開t2.asm,嘗試將源代碼中l(wèi)ine7的0433h→0333h, line10 的 0436h→0336h, 然后重新匯編、連接,得到可執(zhí)行文件 t2.exe。使用 cls 命令清 屏后,再次觀察程序運行結(jié)果。?
?
修改成功
出現(xiàn)了藍色的36
這個發(fā)現(xiàn)和之前的實驗一最后一部分類似。
實驗一向內(nèi)存從B8100H開始的單元中填寫數(shù)據(jù),每一次填寫的數(shù)據(jù)不一樣會出現(xiàn)不同的表情符號,而這次編寫代碼0433h舉例來說,mov這個操作,043三個字節(jié)決定了顏色的不同,最后一個字節(jié)決定了輸出的內(nèi)容。而【】符號似乎就是顏色的填充工具。
分析這次兩個練習(xí)輸出的不同
mov ax,0b800h? ? ? ? ? ? ? ? ? ??mov ah,2
mov ds,ax? ? ? ? ? ? ? ? ? ? ? ? ? ??mov dl,3
mov bx,0? ? ? ? ? ? ? ? ? ? ? ? ? ? ?add dl,30h
mov [bx],0433h? ? ? ? ? ? ? ? ? ?mov ah,2
? ? ?add bx,2? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mov dl,6
mov [bx],0436h? ? ? ? ? ? ? ? ? ?add dl,30h
第一次有一項add dl,30h即將數(shù)字轉(zhuǎn)換為相對應(yīng)的ASCII碼打印出來,這個實驗通過8位寄存器實現(xiàn),而第二次是通過16位寄存器,直接輸出。
?實驗總結(jié)
通過這次實驗,我知道了一個完整匯編程序的輸入輸出的流程,學(xué)會了對于數(shù)字顏色的把控,以及兩種輸出的格式。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/-Cold/p/9865351.html
總結(jié)
以上是生活随笔為你收集整理的汇编语言实验 3 编程、编译、连接、跟踪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MPAndroidChart 教程:开始
- 下一篇: 六大赚钱定律,让你赚大钱