預(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ǔ)充)