寄存器基礎(chǔ)知識(shí)四之段寄存器

段寄存器

段寄存器就是提供段地址的。

8086CPU有4個(gè)段寄存器:CS、DS、SS、ES

當(dāng)8086CPU要訪問(wèn)內(nèi)存時(shí),由這4個(gè)段寄存器提供內(nèi)存單元的段地址。

CS和IP

CS和IP是8086CPU中最關(guān)鍵的寄存器,它們指示了CPU當(dāng)前要讀取指令的地址。

CS為代碼段寄存器;

IP為指令指針寄存器存放偏移地址。

8086PC讀取和執(zhí)行指令相關(guān)部件


8086PC讀取和執(zhí)行

8086PC工作過(guò)程的簡(jiǎn)要描述

從CS:IP指向內(nèi)存單元讀取指令,讀取的指令進(jìn)入指令緩沖器,然后執(zhí)行;

IP = IP + 所讀取指令的長(zhǎng)度,從而指向下一條指令;

執(zhí)行指令。 轉(zhuǎn)到步驟 (1),重復(fù)這個(gè)過(guò)程。


修改CS、IP的指令

CPU從何處執(zhí)行指令是由CS、IP中的內(nèi)容決定的,程序員可以通過(guò)改變CS、IP中的內(nèi)容來(lái)控制CPU執(zhí)行目標(biāo)指令。

mov指令不能用于設(shè)置CS、IP的值,8086CPU沒(méi)有提供這樣的功能。

8086CPU為CS、IP提供了另外的指令來(lái)改變它們的值:轉(zhuǎn)移指令

同時(shí)修改CS、IP的內(nèi)容:

jmp 段地址:偏移地址

如:jmp 2AE3:3

jmp 3:0B16

功能:用指令中給出的段地址修改CS,偏移地址修改IP。


僅修改IP的內(nèi)容:

jmp 某一合法寄存器

如:jmp ax (類似于 mov IP,ax)

jmp bx

功能:用寄存器中的值修改IP。

代碼分析:

(初始:CS=2000H,IP=0000H)

解析:根據(jù)物理地址=基址*16+偏移地址 得到程序的執(zhí)行地址為:20000H

1.則執(zhí)行的第一條指令為:mov ax,6622

2.jmp 1000:3 ? 此時(shí)物理地址為:10003H

3.則執(zhí)行的指令為:mov ax ,0000

4.mov bx,ax

5.jmp bx ip寄存器被修改為0000 那么此時(shí)物理地址為 10000H

6.mov ax ,0123

7.轉(zhuǎn)到第三步執(zhí)行。。。。

代碼段

對(duì)于8086PC機(jī),在編程時(shí),可以根據(jù)需要,將一組內(nèi)存單元定義為一個(gè)段。

可以將長(zhǎng)度為 N( N≤64KB )的一組代碼,存在一組地址連續(xù)、起始地址為 16的倍數(shù)的內(nèi)存單元中,這段內(nèi)存是用來(lái)存放代碼的,從而定義了一個(gè)代碼段。

這段長(zhǎng)度為 10 字節(jié)的字節(jié)的指令,存在從123B0H~123B9H的一組內(nèi)存單元中,我們就可以認(rèn)為,123B0H~123B9H這段內(nèi)存單元是用來(lái)存放代碼的 ,是一個(gè)代碼段 ,它的段地址為123BH,長(zhǎng)度為10字節(jié)。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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