段寄存器
段寄存器就是提供段地址的。
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工作過(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é)。