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

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

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