教材實驗4(P121)
實驗任務(wù)(1)和(2) 首先,在t1.asm中寫入源程序。
然后,進(jìn)入虛擬Dos進(jìn)行編譯和連接,并沒有警告錯誤和必須改正的錯誤。
這是編譯和連接產(chǎn)生的目標(biāo)文件以及可執(zhí)行文件。用debug對可執(zhí)行文件進(jìn)行調(diào)試。首先進(jìn)行反匯編。
先用t命令單步調(diào)試代碼段前四條語句,在開始對0:200~0:22f內(nèi)存單元進(jìn)行修改之前查看0:200~0:22f內(nèi)存單元的值。然后用g命令運行程序,運行到076A:0011之前。再查看0:200~0:22f內(nèi)存單元的值。結(jié)果顯示傳送成功。

實驗任務(wù)(3) 應(yīng)該將對應(yīng)的機(jī)器碼分別存儲到指定的內(nèi)存單元。由于我個人的虛擬Dos默認(rèn) CS = 076A,所以第一空應(yīng)該填寫 076A或者CS ,根據(jù)對所有指令的機(jī)器碼的統(tǒng)計,在mov ax,4c00h 指令之前總共有24個字節(jié),所以循環(huán)計數(shù)寄存器cx 的值為24。并進(jìn)行了接下來的操作來驗證我的推斷。 首先在t2.asm 寫入源程序。 
然后,進(jìn)入虛擬Dos進(jìn)行編譯和連接,并沒有警告錯誤和必須改正的錯誤。
先進(jìn)行反匯編,查看機(jī)器碼的個數(shù)。
用t命令單步調(diào)試到循環(huán)執(zhí)行之前,查看0:200 后面若干內(nèi)存單元的值。再用g命令執(zhí)行指令到076A:0018之前結(jié)束,并再次查看0:200 后面若干的內(nèi)存單元的值,發(fā)現(xiàn)已經(jīng)被修改并用u命令對0:200后面的內(nèi)存單元進(jìn)行反匯編,發(fā)現(xiàn)指令被成功復(fù)制!

實驗教材5(P133-137)
實驗任務(wù)(5) 首先是程序的源代碼。以及編譯、連接形成的文件
用u命令進(jìn)行反匯編,并通過反匯編的內(nèi)容得知a,b,c段的段地址。并分別查看a,b,c的8個字節(jié)的內(nèi)容。
用g命令執(zhí)行指令到076D:001C之前,并用d命令查看c的8個字節(jié)。達(dá)到了預(yù)期的目標(biāo)!
實驗任務(wù)(6) 首先是程序的源代碼。以及編譯、連接形成的文件
用u命令進(jìn)行反匯編,可知a段和b段對應(yīng)的段地址,并用d命令查看在push操作之前每個段的8個字單元。
用g命令運行程序到076D:001b之前,并用d命令查看邏輯段b的8個字單元,發(fā)現(xiàn)并被正確復(fù)制進(jìn)去。 
新聞熱點
疑難解答
圖片精選