所謂16位照捡,主要指CPU當(dāng)中的運(yùn)算部件可以支持16位數(shù)據(jù)的運(yùn)算蒋荚。
因?yàn)檫\(yùn)算當(dāng)中所需要的數(shù)據(jù)一般會(huì)放在通用寄存器中适贸,所以通用寄存器和運(yùn)算單元的位寬是相同的黎侈。而運(yùn)算單元產(chǎn)生的數(shù)據(jù)又經(jīng)常會(huì)用作訪問存儲(chǔ)器的地址察署。
所以cpu訪問存儲(chǔ)器地址的寬度,也常常和運(yùn)算單元的位寬相同峻汉。
運(yùn)算單元寬度 == 寄存器寬度 == 地址總線寬度? for convenience箕母。
16----------32--------------64
所謂16位,主要指CPU當(dāng)中的運(yùn)算部件可以支持16位數(shù)據(jù)的運(yùn)算俱济。
因?yàn)檫\(yùn)算當(dāng)中所需要的數(shù)據(jù)一般會(huì)放在通用寄存器中嘶是,所以通用寄存器和運(yùn)算單元的位寬是相同的。而運(yùn)算單元產(chǎn)生的數(shù)據(jù)又經(jīng)常會(huì)用作訪問存儲(chǔ)器的地址蛛碌。
所以cpu訪問存儲(chǔ)器地址的寬度聂喇,也常常和運(yùn)算單元的位寬相同。
運(yùn)算單元寬度 == 寄存器寬度 == 地址總線寬度? 理論上。
那么對于8086來說希太,IP(Instruction Pointer )指令指針寄存器充當(dāng)?shù)木褪荘C(Program Counter)寄存器的角色克饶。
IP地址的尋址能力是2^16 個(gè)八位即 Byte 字節(jié) 64KB
但其地址總線寬度為20 尋址能力為1MB
解決方案? :段寄存器 Segment Register
代碼段寄存器 CS
eg 從1M內(nèi)存中取出指令:先在段寄存器中保存地址的一部分,另一部分根據(jù)程序本身產(chǎn)生誊辉。
由于8086的寄存器最大為16位矾湃,因此地址在寄存器中按16位大小存放,由段地址和偏移地址聯(lián)合表示的地址類型叫邏輯地址堕澄,例如2000H:1000H邀跃,這里的2000H表示段的起始地址,即段地址蛙紫,而1000H則表示偏移地址拍屑,表示邏輯地址時(shí)總是書寫成段地址:偏移地址。
物理地址即是真實(shí)存在的唯一地址坑傅,是指的內(nèi)存中各個(gè)單元的單元號僵驰,
由8086有20條地址線,因此可尋址2的20次方唁毒,按2進(jìn)制位表示規(guī)則蒜茴,即有20位,這個(gè)就是物理地址浆西。物理地址因?yàn)槌^了寄存器大邪小(16位)因此無法直接存放,需要合成室谚,
公式為物理地址=段地址×10H+偏移地址毡鉴,公式中的數(shù)據(jù)可從邏輯地址獲得。
H 表示該數(shù)是十六進(jìn)制秒赤,B 表示二進(jìn)制猪瞬;O 表示八進(jìn)制。
邏輯地址是16位的入篮,因此范圍是2的16次方陈瘦,即64K。
物理地址是20位的潮售,因此范圍是2的20次方痊项,即1M。
數(shù)據(jù)段寄存器 DS
附加段寄存器 ES
堆棧段寄存器 SS
80386
IA-32 寄存器模型