匯編言語 課后實(shí)驗(yàn)
匯編語言 課后實(shí)驗(yàn)1~5預(yù)備試驗(yàn)1一.用R 命令1. 用R 命令查看寄存器的內(nèi)容:如下,CS=14E5,IP=0100,也就是說當(dāng)前CPU 要讀取、執(zhí)行14E5:0100出的指令; 且該內(nèi)存單元所存
匯編語言 課后實(shí)驗(yàn)1~5
預(yù)備試驗(yàn)1
一.用R 命令
1. 用R 命令查看寄存器的內(nèi)容:
如下,CS=14E5,IP=0100,也就是說當(dāng)前CPU 要讀取、執(zhí)行14E5:0100出的指令; 且該內(nèi)存單元所存放的機(jī)器碼為:FE 74 05,對(duì)應(yīng)的匯編指令為:PUSH

[SI 05]
2. 用R 命令來修改寄存器中的內(nèi)容:
如下,將AX 中的值修改成1111,并查看修改結(jié)果。

還可以用R 命令修改CS 和IP 中的值,如下:

二.D 命令
1. 使用“d 段地址:偏移地址”的格式,debug 將列出從指定單元開始的128個(gè)內(nèi)存單元的內(nèi)容,如下:左邊部分是每行的起始地址,中間是從指定地址開始的128個(gè)內(nèi)存單元中的內(nèi)容,右邊部分是每個(gè)單元中數(shù)據(jù)對(duì)應(yīng)的可顯示的ASCII碼字符,沒有可顯示的字符用"."來表示。
,
2. 也可以用D命令直接查看,將列出debug預(yù)設(shè)命令的地址處的內(nèi)容,如下:

3. 也可以指定D命令的查看范圍:格式“d 段地址:起始偏移地址 結(jié)尾偏移地址”, 如下:

三.E 命令
1. 用“e 起始地址 數(shù)據(jù) 數(shù)據(jù)...... ”的格式來改寫內(nèi)存中的內(nèi)容,如下:先用d 命令查看原來地址中的內(nèi)容,然后用e 命令修改后再查看。

2. 也可以采用提問的方式來一個(gè)一個(gè)的改寫內(nèi)存中的內(nèi)容,不用改寫的直接按空格鍵跳過,修改完畢后按enter 鍵結(jié)束操作,如以下1000:10中的內(nèi)容沒有改寫。

3. 還可以用e 命令向內(nèi)存中寫入字符和字符串。
,
四.如何用命令向內(nèi)存中寫入機(jī)器碼,查看機(jī)器碼,并執(zhí)行機(jī)器碼。
1. 用E 命令向內(nèi)從中寫入機(jī)器碼:如下,寫入后再查看內(nèi)存中的內(nèi)容。


2. 用U 命令將內(nèi)存單元中的內(nèi)容翻譯為匯編指令,沒有寫終止地址的,都默認(rèn)對(duì)20H 個(gè)字節(jié)的內(nèi)容進(jìn)行反匯編。




3. 用t 命令來執(zhí)行我們寫入的指令,在使用t 命令之前要用r 命令修改cs,ip 寄存器中的內(nèi)

容,使它們指向我們所寫機(jī)器碼的初始地址,如下

:



五.可以用A 命令以匯編指令的形式直接在內(nèi)存中寫入機(jī)器指令。
1. 使用A 命令寫入?yún)R編指令時(shí),在給出的其實(shí)地址后直接按enter 鍵則表示操作結(jié)束。
2. 寫完匯編指令后,debug 會(huì)將這些匯編指令翻譯為對(duì)應(yīng)的機(jī)器指令,并將它們寫到對(duì)應(yīng)的內(nèi)存中,可以用d 命令查看,如下:
,實(shí)驗(yàn)一:
1. 用debug 將程序?qū)懭雰?nèi)存并執(zhí)行。
1) 將程序?qū)懭雰?nèi)存

2)設(shè)置cs,ip 的值

3)逐步執(zhí)行程序
,
