匯編實(shí)驗(yàn)2


預(yù)備知識(shí)

1),2)

"D 1000:0"負(fù)責(zé)讓用戶看到1000:0開(kāi)始的內(nèi)存單元,該命令的實(shí)質(zhì)是CPU執(zhí)行了一段程序,這段程序負(fù)責(zé)把"1000"這個(gè)段地址送入某個(gè)段寄存器。這樣CPU才能從段寄存器中讀出"1000"。

那么問(wèn)題來(lái)了,"1000"被放入了哪個(gè)寄存器呢?

SS不可以,它負(fù)責(zé)指向棧頂。

CS不可以,他負(fù)責(zé)指向代碼段的段地址。

答案是DS。事實(shí)上,A,E,R,U指令對(duì)段寄存器的控制都是通過(guò)DS實(shí)現(xiàn)的。


從上圖中我們可以發(fā)現(xiàn)D命令改變后DS的值似乎并未改變,是書上錯(cuò)了嗎?不,事實(shí)上這據(jù)指令確實(shí)有修改ds,但是執(zhí)行-d 1000:0其實(shí)也就是是執(zhí)行一個(gè)小小的程序,可以看做是發(fā)生一個(gè)中斷,ds在這個(gè)小程序中被改變,但指令執(zhí)行完之后必然是會(huì)恢復(fù)為原來(lái)的值的

3)

Debug的T命令在執(zhí)行修改寄存器SS的指令時(shí),下一條指令也緊接著被執(zhí)行

實(shí)驗(yàn)任務(wù)

1)

ax=58EA

ax=5CCA

bx=30F0

bx=6022


內(nèi)存單元[num]的段地址為寄存器DS值,偏移地址為num

SP=00FE,修改的內(nèi)存單元為220FE,其內(nèi)容為5CCA

SP=00FC,修改的內(nèi)存單元為220FC,其內(nèi)容為6021

SP=00FA,修改的內(nèi)存單元為220FE,其內(nèi)容為6021

SP=00FC,修改的內(nèi)存單元為22100其內(nèi)容為5CCA


驗(yàn)證了push,pop操作每次控制兩個(gè)字節(jié)(一個(gè)字)的說(shuō)法。

SP=00FE,修改的內(nèi)存單元為220FE,其內(nèi)容為30F0

SP=00FC,修改的內(nèi)存單元為220FC,其內(nèi)容為2F31


注意高低字節(jié)單元存放的字節(jié)。

2)

中斷問(wèn)題(待補(bǔ)充)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容