第二微機(jī)中的微處理器_第1頁(yè)
第二微機(jī)中的微處理器_第2頁(yè)
第二微機(jī)中的微處理器_第3頁(yè)
第二微機(jī)中的微處理器_第4頁(yè)
第二微機(jī)中的微處理器_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二章微機(jī)中的微處理器引言微處理器是組成微計(jì)算機(jī)系統(tǒng)的核心部件。本章重點(diǎn)講解8086微處理器,因?yàn)樗w現(xiàn)了簡(jiǎn)單微處理器的一般原理,也是學(xué)習(xí)匯編語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)。主要討論:微處理器的內(nèi)部結(jié)構(gòu)、與之配合的存儲(chǔ)器組織、I/O組織和尋址方式。2010.2.251第二章微機(jī)中的微處理器2.18086微處理器的內(nèi)部結(jié)構(gòu)2.28086的寄存器結(jié)構(gòu)2.38086的存儲(chǔ)器組織2.38086的I/O組織2.58086的尋址方式2010.2.252微處理器的功能:MPU是組成計(jì)算機(jī)系統(tǒng)的核心部件,它具有運(yùn)算和控制的功能。具體來(lái)講,它有以下基本功能支持功能完善的指令系統(tǒng),進(jìn)行各種算術(shù)邏輯運(yùn)算,通過(guò)程序完成復(fù)雜的科學(xué)計(jì)算。支持各種結(jié)構(gòu)的程序的執(zhí)行,如程序的分支、循環(huán)、嵌套、子程序的調(diào)用和返回、中斷服務(wù)程序等??刂婆c存儲(chǔ)器、外部設(shè)備等相連,組成完整的微機(jī)系統(tǒng)。2.1微處理器的內(nèi)部結(jié)構(gòu)2.1微處理器的一般結(jié)構(gòu)2010.2.253微處理器的功能:具體來(lái)講,它有以下基本功能①進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算;②接收存儲(chǔ)器和I/O接口送來(lái)的數(shù)據(jù)和發(fā)送數(shù)據(jù)給存儲(chǔ)器和I/O接口;③暫存少量數(shù)據(jù);④對(duì)指令進(jìn)行寄存、譯碼并執(zhí)行指令所規(guī)定的操作;⑤提供整個(gè)系統(tǒng)所需的定時(shí)和控制信號(hào);⑥響應(yīng)I/O設(shè)備發(fā)出的中斷請(qǐng)求。2.1微處理器的內(nèi)部結(jié)構(gòu)2.1微處理器的一般結(jié)構(gòu)2010.2.254微處理器的功能:從程序設(shè)計(jì)的角度考慮,CPU必須便于處理:①賦值和算術(shù)表達(dá)式②無(wú)條件轉(zhuǎn)移③條件轉(zhuǎn)移以及關(guān)系和邏輯表達(dá)式④循環(huán)⑤數(shù)組和其它數(shù)據(jù)結(jié)構(gòu)⑥子程序⑦輸入/輸出2.1微處理器的內(nèi)部結(jié)構(gòu)2010.2.255CPU的實(shí)際工作就是執(zhí)行每一條指令。執(zhí)行每一條指令都可分為三個(gè)階段,即:

1.取指令2.分析指令3.執(zhí)行指令2.1微處理器的內(nèi)部結(jié)構(gòu)取指令:從存儲(chǔ)器中讀出現(xiàn)行指令,把指令送入CPU中。分析指令:對(duì)指令進(jìn)行譯碼,分析其指令性質(zhì)。如指令要求操作數(shù),則尋找操作數(shù)地址。

執(zhí)行指令:進(jìn)行相應(yīng)的操作。2010.2.2563.1.1微處理器的內(nèi)部結(jié)構(gòu)串行處理指令的執(zhí)行過(guò)程:取指令—取操作數(shù)(如需要)—執(zhí)行指令—寫入存儲(chǔ)器(如需要)。取指令1譯碼1取數(shù)據(jù)1執(zhí)行1存結(jié)果1取指令2譯碼2執(zhí)行2取指令1譯碼1取數(shù)據(jù)1執(zhí)行1存結(jié)果1取指令2譯碼2執(zhí)行2取指令3譯碼3執(zhí)行3存結(jié)果3并行處理2010.2.257123456內(nèi)部寄存器

IP

ES

SSDSCS總線控制邏輯EU控制器∑ALU標(biāo)志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊(duì)列執(zhí)行單元(EU)總線接口單元(BIU)16位20位16位8位ALU數(shù)據(jù)總線數(shù)據(jù)總線8086總線2.18086微處理器的功能結(jié)構(gòu)2010.2.258總線接口單元(BIU)總線接口單元由下列各部分組成:(1)4個(gè)段地址寄存器;CS——16位的代碼段寄存器;DS——16位的數(shù)據(jù)段寄存器;ES——16位的擴(kuò)展段寄存器;SS——16位的堆棧段寄存器;

(2)16位的指令指針寄存器IP;(3)6字節(jié)的指令隊(duì)列寄存器;(4)20位的地址加法器;(5)完成與EU通訊的內(nèi)部寄存器;(6)總線控制邏輯。取指令時(shí):從存儲(chǔ)器指定地址取出指令送入指令隊(duì)列排隊(duì);執(zhí)行指令時(shí):根據(jù)EU命令對(duì)指定存儲(chǔ)器單元或者I/O端口存取數(shù)據(jù)。2010.2.259執(zhí)行單元(EU)執(zhí)行單元由下列各部分組成:(1)算術(shù)邏輯運(yùn)算單元(ALU);(2)標(biāo)志寄存器(FR):(3)通用寄存器組-AX,BX,CX,DX,SP,BP,DI,SI;(4)EU控制器;(5)暫存器。工作:執(zhí)行指令,進(jìn)行全部的算術(shù)邏輯運(yùn)算、完成偏移地址的計(jì)算,向BIU提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對(duì)通用寄存器和標(biāo)志寄存器進(jìn)行管理。2010.2.25102.18086的內(nèi)部結(jié)構(gòu)指令和程序執(zhí)行過(guò)程如下圖:取指令1執(zhí)行1取指令2取數(shù)據(jù)2執(zhí)行2取指令3執(zhí)行3BIUEU2010.2.25112.28086的寄存器結(jié)構(gòu)

AXAHALBXBHBL數(shù)據(jù)寄存器

CXCHCL (8/16位)DXDHDL

通用寄存器

SP堆棧指針

BP基址指針地址指針/變址寄存器

SI源變址 (16位)

DI目的變址

CS代碼段

DS數(shù)據(jù)段段寄存器

SS堆棧段 (16位)

ES附加段

專用寄存器

IP指令指針

控制寄存器

FLAG標(biāo)志寄存器 (16位)

2010.2.25122.2.1通用寄存器組4個(gè)16位數(shù)據(jù)寄存器(存在于 EU中):包括AX,BX,CX,DX。主要功能:(見(jiàn)P14表2.1)

1.存放數(shù)據(jù) 2.存放地址每一個(gè)寄存器又可分為兩個(gè)8位的數(shù)據(jù)寄存器:

AX---AHAL BX---BHBL CX---CHCL DX---DHDL16位數(shù)據(jù)寄存器可存放數(shù)據(jù)和地址,而8位寄存器只能存放數(shù)據(jù)2010.2.25132.2.1數(shù)據(jù)寄存器AX——累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算,以及與外設(shè)傳送信息等;累加器一般用來(lái)存放參加運(yùn)算的數(shù)據(jù)和結(jié)果。尤其在乘、除法運(yùn)算、I/O操作中有不可替代的作用。

乘法運(yùn)算:存放結(jié)果 除法運(yùn)算:存放商 I/O操作:AX(或AL)與I/O端口進(jìn)行數(shù)據(jù)通信。2010.2.25142.2.1數(shù)據(jù)寄存器BX——基址寄存器基址寄存器可作數(shù)據(jù)寄存器還可放內(nèi)存的邏輯偏移地址,而AX,CX,DX則不能。如: MOVAX,[BX]但是,如果寫成: MOVAX,[CX]是錯(cuò)誤的2010.2.25152.2.1數(shù)據(jù)寄存器CX——計(jì)數(shù)寄存器計(jì)數(shù)寄存器做數(shù)據(jù)寄存器還可以在循環(huán)操作中和移位操作中做計(jì)數(shù)器用。如: MOVCX,15(循環(huán)程序中);給cx賦值為15 …………. ………….

循環(huán)操作15次2010.2.25162.2.1數(shù)據(jù)寄存器DXDX做通用數(shù)據(jù)寄存器還在乘、除法運(yùn)算、帶符號(hào)數(shù)的擴(kuò)展指令中有特殊用途。

2010.2.25172.2.1通用寄存器組地址指針和變址寄存器:變址寄存器,用于在某些間接尋址方式中存放段內(nèi)偏移地址的全部或一部分:SI——源變址寄存器DI——目的變址寄存器串操作類指令中,SI和DI具有特別的功能指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù):SP——堆棧指針,指示棧頂?shù)钠频刂?。SP不能再用于其他目的,具有專用目的。BP——基址指針,用于在某些間接尋址方式中存放段內(nèi)偏移地址的一部分。SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址。2010.2.2518BIU設(shè)有4個(gè)16位段寄存器(可見(jiàn)P18的2.2.3內(nèi)容)2.2.2段寄存器組段寄存器用來(lái)存放段地址,cpu可通過(guò)4個(gè)段寄存器訪問(wèn)存儲(chǔ)器中4個(gè)不同的段(每段64k)。

CS——代碼段寄存器,存放代碼段的段地址

SS——堆棧段寄存器,存放堆棧段的段地址

DS——數(shù)據(jù)段寄存器,存放數(shù)據(jù)段的段地址

ES——附加段寄存器,存放附加段的段地址2010.2.25192.2.3控制寄存器組指令指針寄存器IP:

保存下一條要執(zhí)行的指令的偏移地址,它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址。計(jì)算機(jī)通過(guò)CS:IP寄存器來(lái)控制指令序列的執(zhí)行流程。IP寄存器是一個(gè)專用寄存器。2010.2.2520補(bǔ)充內(nèi)容無(wú)符號(hào)數(shù)和有符號(hào)數(shù)原碼、反嗎、和補(bǔ)碼2010.2.2521有符號(hào)數(shù)的表示方法二進(jìn)制數(shù)分為:

無(wú)符號(hào)數(shù) 有符號(hào)數(shù)2010.2.2522有符號(hào)數(shù)的表示方法二進(jìn)制數(shù)分為:無(wú)符號(hào)數(shù)和有符號(hào)數(shù)無(wú)符號(hào)數(shù) :所有的二進(jìn)制數(shù)位均為數(shù)值位。例如:10000111=135有符號(hào)數(shù) :最高位為符號(hào)位,后面的所有位為數(shù)值位。例如:10000111=-72010.2.2523有符號(hào)數(shù)的表示方法無(wú)符號(hào)數(shù) :所有的二進(jìn)制數(shù)位均為數(shù)值位。例如:10000111=135有符號(hào)數(shù) :最高位為符號(hào)位,后面的所有位為數(shù)值位。例如:10000111=-72010.2.2524有符號(hào)數(shù)的表示方法有符號(hào)數(shù):+:用0表示(正數(shù))-:用1表示(負(fù)數(shù))用0表示“+”,用1表示“-”。這樣的表示方法就是符號(hào)數(shù)字化。即用數(shù)字來(lái)表示正負(fù)數(shù)的符號(hào)。2010.2.2525有符號(hào)數(shù)的表示方法8位無(wú)符號(hào)數(shù)范圍:所有的二進(jìn)制數(shù)位均為數(shù)值位。

0≤X≤25500000000到111111118位有符號(hào)數(shù)的范圍 :最高位為符號(hào)位,后面的所有位為數(shù)值位。 -128≤X≤127

10000000到011111112010.2.2526有符號(hào)數(shù)的表示方法有符號(hào)數(shù)的表示方法:

原碼 反碼 補(bǔ)碼2010.2.2527有符號(hào)數(shù)的表示方法原碼

正數(shù)的符號(hào)用“0”表示,負(fù)數(shù)的符號(hào)用“1”表示,絕對(duì)值的編碼規(guī)則與無(wú)符號(hào)數(shù)編碼規(guī)則相同。這樣的表示方法稱為原碼表示法。 一個(gè)數(shù)X的原碼記作[x]原

例如:用8位二進(jìn)制表示: 19的原碼是:[19]原=

00010011(最高位是符號(hào)位) -19的原碼是:[-19]原=100100112010.2.2528

0

Xn-2Xn-3…X1X0x≥0

[x]原=

1Xn-2Xn-3…X1X0x≤0

1.原碼[+0]原=00000000[-0]原=10000000[+1]原=00000001[-1]原=10000001[+127]原=01111111=28-1-1[-127]原=11111111=-(28-1-1)-2n-1~+(2n-1–1)-128~+127字長(zhǎng)表示范圍n8有符號(hào)數(shù)的表示方法2010.2.25292.反碼★正數(shù)的反碼:與原碼相同;★負(fù)數(shù)的反碼:原碼的符號(hào)位不變,其它各位求反。

例如:用8位二進(jìn)制表示: 19的反碼是:[19]原=

00010011,[19]反=

01101100 -19的反碼是:[-19]原=10010011,[-19]反=111011002010.2.25302.反碼[+0]反=00000000[-0]反=11111111[+1]反=00000001[-1]反=11111110[+127]反=01111111[-127]反=10000000

-2n-1~+(2n-1–1)-128~+127字長(zhǎng)表示范圍n82010.2.25313.補(bǔ)碼★正數(shù)的補(bǔ)碼:與原碼相同;★負(fù)數(shù)的補(bǔ)碼:原碼的符號(hào)位不變,其它各位求反加1。

例如:用8位二進(jìn)制表示: 19的反碼是:[19]原=

00010011,[19]反=

00010011

[19]補(bǔ)=

00010011 -19的反碼是:[-19]原=10010011,[-19]反=11101100

[-19]補(bǔ)=111011012010.2.25323.補(bǔ)碼-2n-1~+(2n-1–1)-27~+(27–1)字長(zhǎng)表示范圍n8[+0]補(bǔ)=00000000[-0]補(bǔ)=28–|-0|=00000000[+1]補(bǔ)=00000001[-1]補(bǔ)=28–|-1|=11111111[+127]補(bǔ)=01111111[-127]補(bǔ)=28–|-127|=100000012010.2.2533有符號(hào)數(shù)的表示方法一個(gè)有符號(hào)數(shù)X

X≥0

[x]原=[x]反=[x]補(bǔ)

X≤0

[x]反:[x]原符號(hào)位不變,其它各位求反 [x]補(bǔ)=[x]反+1練習(xí)2010.2.25343.補(bǔ)碼例:73-2=73+(-2)=71 01001011(73)+ 11111110(-2)

101000111(71)在計(jì)算機(jī)中,加減法是用補(bǔ)碼來(lái)運(yùn)算的。補(bǔ)碼加法,如果符號(hào)位有進(jìn)位,必須舍棄

2010.2.25352.2.3控制寄存器組標(biāo)志寄存器(FLAG):

狀態(tài)標(biāo)志——記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。CFZFSFPFOFAF

控制標(biāo)志——可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。DFIFTF2010.2.25362.2.3控制寄存器組標(biāo)志寄存器(FLAG)D15D0OFDFIFTFSFZFAFPFCF進(jìn)位標(biāo)志奇偶標(biāo)志輔助進(jìn)位標(biāo)志符號(hào)標(biāo)志單步中斷中斷允許方向標(biāo)志溢出標(biāo)志1-有進(jìn)、借位0-無(wú)進(jìn)、借位1-低8位有偶數(shù)個(gè)10-低8位有奇數(shù)個(gè)11-低4位向高4位有進(jìn)、借位0-低4位向高4位無(wú)進(jìn)、借位1-結(jié)果為00-結(jié)果不為0零標(biāo)志2010.2.2537進(jìn)位標(biāo)志CF:當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF=1;否則CF=0。(無(wú)符號(hào)數(shù))標(biāo)志寄存器(FLAG) 00111010 01111100 10110110+ 10101010 01111100

1 00100110+CF=0CF=13AH+7CH=B6HAAH+7CH=(1)26H2010.2.2538PF:奇偶標(biāo)志位,如果操作結(jié)果的低8位含有偶數(shù)個(gè)1,則PF=1;否則CF=0。標(biāo)志寄存器(FLAG) 01001000 01100010 10101010+001000110100010001010010000110010111010101011101+PF=1PF=048H+62H=AAH2344H+5219H=755DH2010.2.2539AF:輔助進(jìn)位標(biāo)志,如果在加法時(shí)D3

有進(jìn)位或者減法時(shí)D3有借位,則AF=1,否則AF=0。標(biāo)志寄存器(FLAG) 01001000 01100010 10101010+010011000001100101100101+AF=0AF=148H+62H=AAH4CH+19H=65H2010.2.2540ZF:零標(biāo)志位,如果運(yùn)算結(jié)果各位都是零,則ZF=1,否則ZF=0。標(biāo)志寄存器(FLAG) 01001000 01100010 10101010+000110010001100100000000--ZF=0ZF=148H+62H=AAH19H-19H=00H2010.2.2541SF:符號(hào)標(biāo)志位,它總是和結(jié)果的最高位相同。(字節(jié)操作時(shí)是D7,字操作時(shí)是D15)標(biāo)志寄存器(FLAG) 01001000 01100010 10101010+SF=148H+62H=AAH001000110100010001010010000110010111010101011101+SF=02344H+5219H=755DH2010.2.2542溢出標(biāo)志OF:若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則OF=0(有符號(hào)數(shù))標(biāo)志寄存器(FLAG)例如: 00111010 01111100 101101103AH+7CH=B6H,產(chǎn)生溢出:OF=1+OF=1 10101010 01111100

1 00100110AAH+7CH=(1)26H,沒(méi)有溢出:OF=0+OF=02010.2.2543標(biāo)志寄存器(FLAG)問(wèn)題:什么是溢出?溢出和進(jìn)位有什么區(qū)別?如何判斷是否溢出?2010.2.2544處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)。 8個(gè)二進(jìn)制位能夠表達(dá)的整數(shù)范圍是:-128~+127

16位表達(dá)的范圍是:-32768~+32767

標(biāo)志寄存器(FLAG)什么是溢出?如果運(yùn)算結(jié)果超出了可表達(dá)的范圍,就是產(chǎn)生了溢出。有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確。2010.2.2545例:73+72=145>127[x]補(bǔ)=01001001(+73)+[y]補(bǔ)=01001000(+72)

10010001兩個(gè)正數(shù)相加結(jié)果變成了負(fù)數(shù)?溢出:運(yùn)算結(jié)果,超出了8位有符號(hào)數(shù)所能表示的范圍。補(bǔ)碼運(yùn)算發(fā)生溢出情況:

1.同號(hào)數(shù)相加,可能溢出;2.異號(hào)數(shù)相減,可能溢出。2010.2.2546判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:最高位溢出的判斷標(biāo)志寄存器(FLAG) 1+ 10 0+ 01 1- 00 0- 112010.2.2547溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志。進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確;溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確。標(biāo)志寄存器(FLAG)溢出和進(jìn)位有什么區(qū)別?2010.2.2548例1:3AH+7CH=B6H溢出和進(jìn)位對(duì)比標(biāo)志寄存器(FLAG) 001110103AH 011111007CH 10110110B6H+B6H=128

CF=0無(wú)符號(hào)數(shù)運(yùn)算:58+124=182,范圍內(nèi)0~255,無(wú)進(jìn)位有符號(hào)數(shù)運(yùn)算:58+124=182,范圍外-128~127,有溢出

001110103AH

011111007CH

10110110B6H+[B6H]補(bǔ)=-74

OF=1有符號(hào)數(shù)最高位是符號(hào)位2010.2.2549溢出和進(jìn)位對(duì)比標(biāo)志寄存器(FLAG)例2:AAH+7CH=(1)26H 10101010AAH 011111007CH

10010011026H+CF=1,(1)26H=294無(wú)符號(hào)數(shù)運(yùn)算:170+124=294,范圍外0~255,有進(jìn)位有符號(hào)數(shù)運(yùn)算:-86+124=28,范圍內(nèi)-128~127,無(wú)溢出OF=0

10101010AAH

011111007CH

1

0010011026H+訓(xùn)練2010.2.2550

處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào)數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF。如何運(yùn)用溢出和進(jìn)位標(biāo)志寄存器(FLAG)應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。 無(wú)符號(hào)數(shù)運(yùn)算,影響進(jìn)位; 有符號(hào)數(shù)運(yùn)算,則影響溢出位。2010.2.2551可用指令設(shè)置。字符串操作時(shí),受它的控制。當(dāng)DF=0時(shí),執(zhí)行串操作指令,變址寄存器自動(dòng)遞增;當(dāng)DF=1時(shí),則變址寄存器地址自動(dòng)遞減。即該位可控制變址寄存器的地址朝增大的方向或減小的方向改變。DF:方向標(biāo)志位標(biāo)志寄存器(FLAG)2010.2.2552可用指令設(shè)置當(dāng)IF=1時(shí),CPU可響應(yīng)可屏蔽中斷請(qǐng)求;當(dāng)IF=0時(shí),CPU不響應(yīng)可屏蔽中斷請(qǐng)求。IF:中斷允許標(biāo)志標(biāo)志寄存器(FLAG)2010.2.2553若TF=1,則CPU處于單步執(zhí)行指令工作方式。每執(zhí)行一條指令就會(huì)自動(dòng)產(chǎn)生一次類型1的內(nèi)部中斷。在調(diào)試程序的過(guò)程中,每執(zhí)行一條指令,就利用這種中斷,來(lái)顯示所有寄存器的當(dāng)前值和將要執(zhí)行的下一條指令。一般情況下,TF=0。只有在調(diào)試程序時(shí),可能會(huì)用到單步執(zhí)行時(shí),才設(shè)置TF=1。TF:陷阱標(biāo)志位標(biāo)志寄存器(FLAG)2010.2.2554計(jì)數(shù)制:指用一組固定的數(shù)字符號(hào)和統(tǒng)一的規(guī)則來(lái)表示數(shù)的方法?;鶖?shù):各種進(jìn)制中數(shù)字符號(hào)的個(gè)數(shù)。權(quán):在位置記數(shù)法中,對(duì)每一個(gè)數(shù)位賦以不同的位值。2.38086的存儲(chǔ)器組織2010.2.2555各種數(shù)制2.38086的存儲(chǔ)器組織十進(jìn)制二進(jìn)制十六進(jìn)制數(shù)碼0~90,10~9,A~F基(或模)10216進(jìn)位原則逢十進(jìn)一逢二進(jìn)一逢十六進(jìn)一位權(quán)值10i2i16i數(shù)制后綴符號(hào)D或者省略BH2010.2.2556微計(jì)算機(jī)的硬件結(jié)構(gòu)(馮.諾依曼結(jié)構(gòu))

從功能或邏輯的角度,微型計(jì)算機(jī)的硬件由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備五大部分組成。

運(yùn)算器控制器MPU存儲(chǔ)器輸出設(shè)備I/O接口輸入設(shè)備A.BUSD.BUSC.BUS2.38086的存儲(chǔ)器組織2010.2.25572.38086的存儲(chǔ)器組織2.3.1存儲(chǔ)器地址空間和數(shù)據(jù)存儲(chǔ)格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進(jìn)制地址存儲(chǔ)器存儲(chǔ)器的地址8086的存儲(chǔ)器是以字節(jié)(8位)為單位組織的。8086cpu具有20條地址總線,可尋址的存儲(chǔ)器地址空間容量為220B,地址(1MB)。20條地址總線,16條數(shù)據(jù)總線2010.2.25582.38086的存儲(chǔ)器組織2.3.1存儲(chǔ)器地址空間和數(shù)據(jù)存儲(chǔ)格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進(jìn)制地址存儲(chǔ)器存儲(chǔ)器的地址每個(gè)存儲(chǔ)單元都有一個(gè)唯一的地址編號(hào)—存儲(chǔ)器地址其范圍是0~220-1,(用十六進(jìn)制表示為

00000H~FFFFFH),每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容(********B,如10001110B)2010.2.25592.38086的存儲(chǔ)器組織2.3.1存儲(chǔ)器地址空間和數(shù)據(jù)存儲(chǔ)格式兩個(gè)連續(xù)的字節(jié),為一個(gè)字:低地址對(duì)應(yīng)低字節(jié),高地址對(duì)應(yīng)高字節(jié)(小端方式)。字的地址指低字節(jié)的地址。([00004H])=1122H([00001H])=4455H([00003H])=2233H23H00000H55H00001H44H00002H33H00003H22H00004H00010001B00005H2010.2.25602.38086的存儲(chǔ)器組織2.3.1存儲(chǔ)器地址空間和數(shù)據(jù)存儲(chǔ)格式字的地址為偶地址,稱字的存儲(chǔ)是對(duì)準(zhǔn)的,訪問(wèn)時(shí)只需一個(gè)總線周期。字的地址為奇地址,稱字的存儲(chǔ)是未對(duì)準(zhǔn)的,訪問(wèn)時(shí)要兩個(gè)總線周期(CPU自動(dòng)完成)。2010.2.25612.38086的存儲(chǔ)器組織2.3.2存儲(chǔ)器分段管理和物理地址的形成8086CPU有20條地址線,物理地址范圍從00000H~FFFFFH。最大可尋址空間為220=1MB,

*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進(jìn)制地址存儲(chǔ)器1M個(gè)內(nèi)存單元2010.2.25622.38086的存儲(chǔ)器組織2.3.2存儲(chǔ)器分段管理和物理地址的形成提供偏移地址或偏移地址的一部分的寄存器BX、IP、SP、BP、SI和DI及ALU都是16位,0000H~FFFFH,其尋址范圍是64KB。*********B0000H0001H0002H0003HFFFDH…………..FFFEHFFFFH十六進(jìn)制地址存儲(chǔ)器64K個(gè)內(nèi)存單元8086CPU采用地址分段方法,將尋址范圍擴(kuò)大到1MB。2010.2.25632.38086的存儲(chǔ)器組織2.3.2存儲(chǔ)器分段管理和物理地址的形成8086CPU將1MB空間分成許多邏輯段(Segment),每個(gè)段最大限制為64KB,段地址的低4位為0000B,即****0H。00000H00001H00002H00003H0FFFDH0FFFEH0FFFFH………一個(gè)邏輯段,共64K個(gè)單元00010H00011H00012H00013H1000DH1000EH1000FH………下一個(gè)邏輯段,共64K個(gè)單元2010.2.25642.38086的存儲(chǔ)器組織00000H00010H00020H0FFFFH………存儲(chǔ)器………………………1000FH………1001FH段0段1段22010.2.25652.38086的存儲(chǔ)器組織2.3.2存儲(chǔ)器分段管理和物理地址的形成8086對(duì)邏輯段的要求是:

段地址低4位均為0,每段最大不超過(guò)64KB。每個(gè)段不要求必須是64KB,段與段可以重疊。1MB空間最多能分成多少個(gè)段?

每隔64K個(gè)存儲(chǔ)單元開(kāi)始一個(gè)段,所以1MB最少有:

220÷216=16個(gè)段每隔16個(gè)存儲(chǔ)單元就可以開(kāi)始一個(gè)段,所以1MB最多有:

220÷16=216=64K個(gè)段1MB空間最少能分成多少個(gè)段?2010.2.2566基本概念物理地址起始地址段地址偏移地址邏輯地址2.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織2010.2.25672.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進(jìn)制地址存儲(chǔ)器物理地址存儲(chǔ)器有1M個(gè)內(nèi)存單元,每個(gè)內(nèi)存單元都有自己的地址編碼,這個(gè)編碼在所有的內(nèi)存單元中是唯一的,這些地址編碼就是存儲(chǔ)單元的物理地址。其范圍是00000H~FFFFFH。物理地址:存儲(chǔ)單元的實(shí)際地址編碼。2010.2.25682.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進(jìn)制地址存儲(chǔ)器起始地址在存儲(chǔ)器中,每個(gè)邏輯段的首地址就是起始地址,起始地址是個(gè)物理地址,20位。如右圖:起始地址:00000H2010.2.25692.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織段地址一個(gè)段的起始地址(物理地址)的高16位就是該段的段地址。00010H00011H00012H00013H1000DH1000EH1000FH………一個(gè)邏輯段,共64K個(gè)單元如右圖:此邏輯段起始地址:00010H段地址:0001H段地址由段寄存器(CS,DS,SS,ES)提供2010.2.25702.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織偏移地址在一個(gè)段內(nèi),相對(duì)于段起始地址的偏移量,就是段內(nèi)偏移地址。其范圍:0000H~FFFFH,都是16位。00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH如右圖(00010H~1000FH)紅色內(nèi)存單元偏移地址:0000H黃色內(nèi)存單元偏移地址:0001H最后一個(gè)內(nèi)存單元偏移地址:FFFFH2010.2.25712.3.2存儲(chǔ)器分段管理和物理地址的形成2.38086的存儲(chǔ)器組織00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH邏輯地址其格式為段地址:偏移地址。如右圖:黃色內(nèi)存單元的邏輯地址為:0001:0003段地址偏移地址2010.2.25722.38086的存儲(chǔ)器組織2.3.2存儲(chǔ)器分段管理和物理地址的形成對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的20位編號(hào),即物理地址。00000H~FFFFFH物理地址的形成:

段地址*16+偏移地址=20位物理地址

第四個(gè)內(nèi)存單元的物理地址:(邏輯地址為0001:0003)

物理地址=0001H*10H+0003H=00013H2010.2.2573123456內(nèi)部寄存器

IP

ES

SSDSCS總線控制電路EU控制器∑ALU標(biāo)志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊(duì)列執(zhí)行單元(EU)總線接口單元(BIU)16位20位16位8位ALU數(shù)據(jù)總線數(shù)據(jù)總線8086總線物理地址的形成過(guò)程2010.2.25742.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系存儲(chǔ)器中的信息可分為:程序代碼數(shù)據(jù)計(jì)算機(jī)的狀態(tài)2010.2.25752.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系存儲(chǔ)器可分為:程序區(qū)、數(shù)據(jù)區(qū)、堆棧區(qū)。程序區(qū):存儲(chǔ)程序的指令代碼數(shù)據(jù)區(qū):存儲(chǔ)原始數(shù)據(jù)、中間數(shù)據(jù)和最后結(jié)果堆棧區(qū):存儲(chǔ)需要壓入堆棧的數(shù)據(jù)或狀態(tài)信息。2010.2.25762.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系段寄存器的分工:代碼段寄存器CS:劃定并控制著程序區(qū)。數(shù)據(jù)段寄存器DS或附加段寄存器ES:控制著數(shù)據(jù)區(qū)。堆棧段寄存器SS:對(duì)應(yīng)著堆棧存儲(chǔ)區(qū)。2010.2.25772.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系一個(gè)完整的程序分為:代碼段、數(shù)據(jù)段、堆棧段、附加段當(dāng)調(diào)用程序時(shí),就把: 代碼段調(diào)入程序區(qū), 數(shù)據(jù)段和附加段調(diào)入數(shù)據(jù)區(qū), 堆棧段調(diào)入堆棧區(qū)。 代碼段:存放程序的指令序列 數(shù)據(jù)段:存放當(dāng)前運(yùn)行程序所用的數(shù)據(jù) 堆棧段:存放需要壓棧的信息

附加段:附加的數(shù)據(jù)段,如需要?jiǎng)t開(kāi)辟附加段1、代碼段、數(shù)據(jù)段、堆棧段和附加段對(duì)應(yīng)的是程序;2、程序區(qū)、數(shù)據(jù)區(qū)、和堆棧區(qū)對(duì)應(yīng)的是存儲(chǔ)區(qū);3、段寄存器:保存段的段地址2010.2.25782.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系dataSEGMENT;數(shù)據(jù)段firstDB12h;調(diào)入數(shù)據(jù)區(qū)dataENDSstack1SEGMENTstack;堆棧段DW30DUP(0);調(diào)入堆棧區(qū)stack1ENDScodeSEGMENT;代碼段ASSUMECS:code,DS:data,SS:stack1

start: MOVAX,data MOVDS,AX……

…….…...MOVAH,4ch INT21hcodeENDSENDstart;調(diào)入代碼區(qū)2010.2.25792.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系段寄存器

CS:存放代碼段的段地址 DS:存放數(shù)據(jù)段的段地址 SS:存放堆棧段的段地址

ES:存放附加段的段地址2010.2.2580程序員如何分配各個(gè)邏輯段?2.38086的存儲(chǔ)器組織2.3.3信息的分段存儲(chǔ)與段寄存器的關(guān)系程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中。2010.2.25812.38086的存儲(chǔ)器組織訪問(wèn)存儲(chǔ)器類型默認(rèn)段地址可指定段地址段內(nèi)偏移地址來(lái)源取指令碼CS無(wú)IP堆棧操作SS無(wú)SP字符串操作源地址DSCS,ES,SSSI字符串操作目的地址ES無(wú)DIBP用作基址寄存器SSCS,DS,ES依尋址方式求得有效地址EA一般數(shù)據(jù)存取DSCS,ES,SS依尋址方式求得有效地址EA下表列出了各類型訪問(wèn)存儲(chǔ)器時(shí)使用的段寄存器和段內(nèi)偏移地址的來(lái)源。2010.2.2582各個(gè)邏輯段獨(dú)立示意圖如右圖:當(dāng)前段可容納64KB代碼,64KB堆棧,128KB數(shù)據(jù),即共256KB。2010.2.2583各個(gè)邏輯段重疊示意圖段可以部分重疊,若不用附加段,則ES和DS重合。2010.2.2584微計(jì)算機(jī)的硬件結(jié)構(gòu)(馮.諾依曼結(jié)構(gòu))

從功能或邏輯的角度,微型計(jì)算機(jī)的硬件由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備五大部分組成。

運(yùn)算器控制器MPU存儲(chǔ)器輸出設(shè)備I/O接口輸入設(shè)備A.BUSD.BUSC.BUS2.58086的I/O組織2010.2.25852.58086的I/O組織

I/O接口與CPU之間的通信是利用稱為I/O端口的寄存器來(lái)完成的。I/O端口I/O接口1I/O端口I/O接口2I/O端口I/O端口…....…....I/O端口I/O端口每個(gè)端口都是一個(gè)8位的寄存器(相當(dāng)于內(nèi)存單元)。系統(tǒng)為每個(gè)端口分配一個(gè)地址,各個(gè)端口有唯一的I/O地址與之對(duì)應(yīng),是單獨(dú)編址的。2010.2.25862.58086的I/O組織

任何兩個(gè)編號(hào)相鄰的8位I/O端口可以組成一個(gè)16位I/O端口,類似于存儲(chǔ)器的字。

8086CPU地址總線的低16位用來(lái)對(duì)8位I/O端口尋址,I/O地址空間為65535,即可訪問(wèn)65535個(gè)8位的I/O端口,尋址范圍是0~64K。 I/O地址線和存儲(chǔ)器地址線是共用的,但利用控制總線中的一些控制信號(hào)可以區(qū)分是I/O存取還是存儲(chǔ)器存取。2010.2.25872.68086的尋址方式指令由操作碼和操作數(shù)兩部分組成:操作碼:說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。操作碼操作數(shù)操作數(shù):指令執(zhí)行的參與者,即各種操作的對(duì)象。有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)。2010.2.25882.68086的尋址方式MOVdest,src ;dest←src;MOV指令的功能是將源操作數(shù)src;傳送至目的操作數(shù)destMOVAL,05H ;AL←05HMOVBX,AX;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]指令的助記符格式:

操作碼操作數(shù)1,操作數(shù)2 ;注釋2010.2.25892.68086的尋址方式操作數(shù)一般存在的地方:

1.指令中 ;MOVAX,0012H 2.cpu內(nèi)部寄存器中 ;MOVBX,AX 2.存儲(chǔ)器中 ;MOVAX,[0050]8086的尋址方式有:

立即數(shù)尋址方式寄存器尋址方式存儲(chǔ)器尋址方式

尋址:尋找操作數(shù)的地址

尋址方式:尋找操作數(shù)地址的方法2010.2.25902.68086的尋址方式具體的尋址方式: 1.立即數(shù)尋址 2.寄存器尋址 2.直接尋址 4.寄存器間接尋址 5.寄存器相對(duì)尋址 6.基址變址尋址 7.基址變址且相對(duì)尋址2010.2.25911立即數(shù)尋址

指令中的操作數(shù)直接存放在指令中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)??梢允?位數(shù)i8(00H~FFH),可以是16位數(shù)i16(0000H~FFFFH)。立即數(shù)尋址方式常用來(lái)給寄存器賦值。MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102H2010.2.25922寄存器尋址MOV

AX,1234H;AX←1234HMOV

BX,AX

;BX←AX操作數(shù)存放在CPU的內(nèi)部寄存器中8位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4個(gè)段寄存器SEG:CS/DS/SS/ES2010.2.25933存儲(chǔ)器尋址存儲(chǔ)器尋址:操作數(shù)在存儲(chǔ)器中。指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認(rèn)的段寄存器中或用段超越前綴指定的段寄存器中。首先獲取操作數(shù)的偏移地址EA

獲取段地址通過(guò)計(jì)算,來(lái)獲取操作數(shù)的物理地址

物理地址=段地址*16+EA2010.2.2594存儲(chǔ)器尋址3直接尋址方式有效地址在指令中直接給出,默認(rèn)的段地址在DS段寄存器。MOVAX,[2000H] ;AX←DS:[2000H];EA=2000H假如(DS)=3200H,EA=2000H操作數(shù)的物理地址=3200*10H+2000H=34000H2010.2.2595存儲(chǔ)器尋址4寄存器間接尋址方式有效地址EA存放在基址寄存器BX,或變址寄存器SI、DI。段地址對(duì)應(yīng):BX/SI/DI寄存器默認(rèn)是DSMOVAX,[BX]

;AX←DS:[BX] ;EA=(BX)假如(DS)=3200H,(BX)=2000H那么:EA=(BX)=2000H操作數(shù)的物理地址=3200*10H+2000H=34000H2010.2.2596存儲(chǔ)器尋址5寄存器相對(duì)尋址方式

有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX或SI、DI。

有效地址=(BX)/(SI)/(DI)+8/1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論