8086的尋址方式
系統(tǒng)總線上傳送的信息包括數(shù)據(jù)信息趾撵、地址信息、控制信息共啃,因此占调,系統(tǒng)總線包含有三種不同功能的總線,即數(shù)據(jù)總線DB(Data Bus)移剪、地址總線AB(Address Bus)和控制總線CB(Control Bus)
8086有20位地址總線究珊,可以傳送20位地址,1M的尋址能力
8086的數(shù)據(jù)總線16根纵苛,它又是16位結(jié)構(gòu)的CPU剿涮,它內(nèi)部能夠一次性處理、傳輸攻人、暫時(shí)存儲(chǔ)的地址為16位取试。如果將地址從內(nèi)部簡(jiǎn)單地發(fā)出,那么它只能送出16位的地址怀吻,表現(xiàn)出來的尋址能力只有64KB
8086采用一種在內(nèi)部用2個(gè)16位地址合成的方法來生成1個(gè)20位的物理地址
-
CPU訪問內(nèi)存單元時(shí)瞬浓,要給出內(nèi)存單元的地址,所有的內(nèi)存單元都有唯一的地址蓬坡,叫做物理地址
內(nèi)存分段管理
- 8086是用“基礎(chǔ)地址(段地址×16) + 偏移地址 = 物理地址”的方式給出物理地址
-
為了開發(fā)方便瑟蜈,我們可以采取分段的方法來管理內(nèi)存,比如:
- 地址10000H~100FFH的內(nèi)存單元組成一個(gè)段渣窜,該段的起始地址(基礎(chǔ)地址)為10000H,段地址為1000H宪躯,大小為100H(00H~FFH)
- 地址10000H1007FH乔宿、10080H100FFH的內(nèi)存單元組成2個(gè)段,它們的起始地址(基礎(chǔ)地址)為:10000H和10080H访雪,段地址為1000H和1008H详瑞,大小都為80H
- 在編程時(shí)可以根據(jù)需要,將若干連續(xù)地址的內(nèi)存單元看做一個(gè)段臣缀,用段地址×16定為段的起始地址(基礎(chǔ)地址)坝橡,用偏移地址定位段中的內(nèi)存單元
- 段地址×16必然是16的倍數(shù),所以一個(gè)段的起始地址(基礎(chǔ)地址)也一定是16的倍數(shù)
- 偏移地址為16位精置,16位地址的尋址能力為64KB计寇,所以一個(gè)段的長(zhǎng)度最大為64KB
段寄存器
- 8086在訪問內(nèi)存時(shí)要由相關(guān)部件提供內(nèi)存單元的段地址和偏移地址,送入地址加法器合成物理地址
- 是什么部件提供段地址?段地址在8086的段寄存器中存放
- 8086有4個(gè)段寄存器:CS番宁,DS元莫,SS,ES蝶押,當(dāng)CPU訪問內(nèi)存由這4個(gè)寄存器提供內(nèi)存地址
CS (Code Segment):代碼段寄存器
DS (Data Segment):數(shù)據(jù)段寄存器
SS (Stack Segment):堆棧段寄存器
ES (Extra Segment):附加段寄存器
CS和IP
- CS為代碼段寄存器踱蠢,IP為指令指針寄存器,它們指示了CPU當(dāng)前要讀取指令的地址(IP就是傳說中的偏移地址)
-
任意時(shí)刻棋电,8086CPU都會(huì)將CS:IP指向的指令作為下一條需要取出執(zhí)行的指令
1.CS中的內(nèi)容2000H為段地址茎截,IP中的內(nèi)容為0000H為偏移地址,相加得到內(nèi)存的物理地址
2.mov ax, 0123H mov傳送指令 ax是通用寄存器里面存放0123H赶盔,
采用了高高低低的存放方式企锌,內(nèi)存存放邏輯空間從上到下按照低到高,
01存放高地址招刨,23存放低地址