129755357988906250第二章-8086計(jì)算機(jī)組織課件_第1頁(yè)
129755357988906250第二章-8086計(jì)算機(jī)組織課件_第2頁(yè)
129755357988906250第二章-8086計(jì)算機(jī)組織課件_第3頁(yè)
129755357988906250第二章-8086計(jì)算機(jī)組織課件_第4頁(yè)
129755357988906250第二章-8086計(jì)算機(jī)組織課件_第5頁(yè)
已閱讀5頁(yè),還剩56頁(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)介

第二章80x86計(jì)算機(jī)組織2.180x868086/8088802868038680486Pentium數(shù)據(jù)總線DB準(zhǔn)1616323264地址總線AB2024323232最大尋址1MB16MB4GB4GB4GB時(shí)鐘范圍(MHz)4.776~1616~4033~12066~166執(zhí)行速度(MIPS)0.050.4~0.83~420~75112~28080X86主要特征2.2基于微處理器的計(jì)算機(jī)系統(tǒng)構(gòu)成2.2.1硬件基本配置:主機(jī)、鍵盤和鼠標(biāo)、顯示器、軟盤驅(qū)動(dòng)器、硬盤驅(qū)動(dòng)器和光盤驅(qū)動(dòng)器等。中央處理器CPU:運(yùn)算器、控制器存儲(chǔ)器系統(tǒng)總線輸入/輸出(I/O)子系統(tǒng)①常規(guī)內(nèi)存:容量1MB;

00000H~0FFFFFH。②擴(kuò)展內(nèi)存(XMS):對(duì)80286以上的CPU來(lái)說(shuō)1MB以上的存儲(chǔ)空間稱為擴(kuò)展內(nèi)存,可供用戶程序使用。2微處理器CPU主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機(jī)硬件系統(tǒng)基本組成框圖2組成微機(jī)系統(tǒng)的各部分通過(guò)地址總線AB、數(shù)據(jù)總線DB和控制總線CB聯(lián)系在一起。1總線是計(jì)算機(jī)中各類公共信號(hào)線的集合,是計(jì)算機(jī)系統(tǒng)中各部分聯(lián)絡(luò)的規(guī)范通道。32.2.2軟件1.用戶軟件學(xué)習(xí)《匯編語(yǔ)言》使用的軟件

①編輯程序,如DOS的EDIT。②匯編程序,如MASM6.X。③連接程序LINK。④調(diào)試程序DEBUG。2.系統(tǒng)軟件:核心是操作系統(tǒng)(OperatingSystem)I/O驅(qū)動(dòng)程序(I/Odriver)文件管理系統(tǒng)()文本編輯程序(Texteditor)翻譯程序(Translator):編譯程序、解釋程序連接程序(Linker)裝入程序(Loader)調(diào)試程序(Debug)系統(tǒng)程序庫(kù)(SystemLibrary)和用戶程序庫(kù)(UserLibrary)42.3中央處理機(jī)的外部結(jié)構(gòu)SS0(HIGH)MN/MXRDVcc40A1539A16/S338A17/S43736353433323130292827DEN(S0)26ALE(QS0)252423READY22RESET21A18/S5A19/S61234567891011121314151617181920HLDA(RQ/GT1)HOLD(RQ/GT0)WR(LOCK)TESTINTA(QS1)DT/R(S1)IO/M(S2)A14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0GNDNMIINTRCLKGND8088CPUVcc40AD1539A16/S338A17/S4373635BHE/S73433323130292827DEN(S0)26ALE(QS0)252423READY22RESET21A18/S5A19/S61234567891011121314151617181920MN/MXRDHLDA(RQ/GT1)HOLD(RQ/GT0)WR(LOCK)M/IO(S2)TESTINTA(QS1)DT/R(S1)AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0GNDNMIINTRCLKGND8086CPU1981年IBM公司推出個(gè)人計(jì)算機(jī)IBMPC5150CPU:Intel8088(16位)頻率:4.77MHz

內(nèi)存:16KB

軟驅(qū):160KB5.25英寸顯示器:?jiǎn)紊?1.5英寸操作系統(tǒng):MS-DOS1.0

微機(jī)價(jià)格:3045美元58086/8088簡(jiǎn)介

Intel系列的16位CPU雙列直插式封裝40根引腳工作頻率為4.77MHz~10MHz工作電源+5V

80866

80888086:對(duì)外有16根數(shù)據(jù)線,20根地址線可尋址的內(nèi)存單元數(shù)220=1M內(nèi)存地址范圍00000~FFFFFH8088:內(nèi)部寄存器、運(yùn)算部件及內(nèi)部操作均按16位設(shè)計(jì),除對(duì)外數(shù)據(jù)線為8根外,其余與8086基本相同。為與當(dāng)時(shí)已有的8位外設(shè)接口芯片兼容。

IBMPC、IBPPC/XT采用8088CPU78088CPU結(jié)構(gòu)特點(diǎn)小結(jié):(1)內(nèi)部結(jié)構(gòu)是16位的(內(nèi)部寄存器,內(nèi)部運(yùn)算部件,內(nèi)部操作按16位設(shè)計(jì));(2)外部數(shù)據(jù)總線8條,能處理16位數(shù)據(jù),也能處理8位數(shù)據(jù);

(具有16位運(yùn)算指令,包括*、/指令)(3)20條地址總線,直接尋址能力1M字節(jié);(4)

40條引線封裝;(5)單相時(shí)鐘;(6)電源為5V。

8086與8088的主要區(qū)別在于8086的外部數(shù)據(jù)總線16位。2.3中央處理機(jī)內(nèi)部邏輯結(jié)構(gòu)2.3.08086的功能結(jié)構(gòu)執(zhí)行單元總線接口單元指令譯碼內(nèi)部數(shù)據(jù)總線內(nèi)部數(shù)據(jù)總線ABUSDBUSCBUS1.由上圖看出,微機(jī)與外部交換信息通過(guò)總線控制。

采用三總線結(jié)構(gòu)AB、DB、CB.三組總線:

地址總線AB(ADDRESSBUS):通常20位,單向,A19~A0,可尋址220=1M內(nèi)存單元。 A15~A0,可尋址216=64K外設(shè)接口。

數(shù)據(jù)總線DB(DATABUS):通常8位,D7~D0

,雙向,實(shí)現(xiàn)CPU與I/O傳送??刂瓶偩€CB(CONTROLBUS):傳送控制信號(hào)。2、微型計(jì)算機(jī)內(nèi)部結(jié)構(gòu)由于CPU受成品率,成本,集成在單片上等原因。嚴(yán)格規(guī)定引腳數(shù)就限制了總線的數(shù)量。外部——采用三總線結(jié)構(gòu)AB、DB、CB。內(nèi)部——采用單總線,即內(nèi)部所有單元電路都掛在內(nèi)部總線上,分時(shí)使用總線。9(1)總線接口部件BIU(BusInterfaceUnit)

與存儲(chǔ)器、I/O接口(2)執(zhí)行部件EU(ExecuteUnit)

執(zhí)行指令中規(guī)定的數(shù)據(jù)處理任務(wù)(3)工作原理DSESSSCSIP數(shù)據(jù)暫存器指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組BIUABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器EU運(yùn)算器DSESSSCSIP數(shù)據(jù)暫存器執(zhí)行部件控制電路指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組BIUABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器EU運(yùn)算器3.8088編程結(jié)構(gòu):10(1)總線接口部件BIU

構(gòu)成部分

4個(gè)16位段寄存器:

CS,DS,ES,SS16位IP指令指針寄存器

20位地址加法器

4字節(jié)的指令隊(duì)列(8086的指令隊(duì)列為6字節(jié))

總線控制電路(包括三組總線):處理器與外界總線聯(lián)系的轉(zhuǎn)接電路。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器BIUEU

主要功能負(fù)責(zé)與存儲(chǔ)器、I/O接口傳遞數(shù)據(jù)具體完成:

(a)從內(nèi)存取指令,送到指令隊(duì)列;

(b)配合執(zhí)行部件從指定的內(nèi)存單元或I/O端口取數(shù)據(jù);

(c)將執(zhí)行部件的操作結(jié)果送到指定的內(nèi)存單元或I/O端口。11三點(diǎn)說(shuō)明:指令隊(duì)列

8086的指令隊(duì)列為6個(gè)字節(jié), 8088的指令隊(duì)列為4個(gè)字節(jié)。

BIU具有預(yù)取指令的功能,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。不論是8086還是8088都會(huì)在執(zhí)行指令的同時(shí)從內(nèi)存中取下一條或

幾條指令,取來(lái)的指令放在指令隊(duì)列中.

指令執(zhí)行順序順序指令執(zhí)行:指令隊(duì)列存放緊接在執(zhí)行指令后面的那一條指令。執(zhí)行轉(zhuǎn)移指令:BIU清除指令隊(duì)列中的內(nèi)容,從新的地址取入指

令,立即送往執(zhí)行單元,然后再?gòu)男聠卧_(kāi)始重

新填滿隊(duì)列。(2)執(zhí)行部件EU構(gòu)成部分:

8個(gè)16位寄存器:

AX、BX、CX、DXSP、BP、DI、SI1個(gè)標(biāo)志寄存器PSW1個(gè)算術(shù)邏輯運(yùn)算部件ALU主要功能執(zhí)行部件負(fù)責(zé)指令的執(zhí)行。(包括算術(shù)、邏輯運(yùn)算,控制命令等)DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器BIUEUALU13(3)工作原理

計(jì)算機(jī)的工作過(guò)程是:取指令,執(zhí)行指令CPU總線內(nèi)存DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器14總線接口部件和執(zhí)行部件可并行工作,提高工作效率。指令的提取和執(zhí)行分別由BIU和EU完成。BIU和EU相互獨(dú)立又相互配合(a)當(dāng)指令隊(duì)列有一個(gè)空字節(jié)時(shí),

BIU自動(dòng)把指令取到指令隊(duì)列中(b)執(zhí)行部件總是從指令隊(duì)列前部提出指令去執(zhí)行。(c)如果在執(zhí)行指令的過(guò)程中,需要訪問(wèn)內(nèi)存或I/O端口,EU會(huì)請(qǐng)求BIU去完成存取操作。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器BIUEU15

由于有指令隊(duì)列的存在,在EU執(zhí)行指令的同時(shí),BIU可取指令,即BIU和EU可處于并行工作狀態(tài)。

取指

取指

取指取指取數(shù)取指

等待

執(zhí)行

執(zhí)行執(zhí)行等待執(zhí)行時(shí)間8088的工作原理:BIUEU164.8086/8088的寄存器組共有14個(gè)16位寄存器,AX,BX,CX,DX,SI,DI,SP,BP,DS,ES,SS,CS,PSW,IP.其中:AX、BX、CX、DX

又可分成兩個(gè)8位寄存器(AH,AL;BH,BL;CH,CL;DH,DL.)

其它10個(gè)只能作為16位寄存器。DSESSSCSIP數(shù)據(jù)暫存器執(zhí)行部件控制電路指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組BIUABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器EU運(yùn)算器DSESSSCSIP數(shù)據(jù)暫存器執(zhí)行部件控制電路指令譯碼器總線接口控制電路AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組BIUABDBCB地址加法器指令隊(duì)列PSW標(biāo)志寄存器EU運(yùn)算器1718(1)通用寄存器 通用寄存器包括:

數(shù)據(jù)寄存器、地址指針寄存器、變址寄存器。數(shù)據(jù)寄存器包括:AX、BX、CX、DX。地址指針寄存器包括:SP、BP。變址寄存器包括:SI、DI。(2)段寄存器

段寄存器包括:CS、SS、DS、ES。(3)控制寄存器

控制寄存器包括:IP、PSW。數(shù)據(jù)寄存器2.3.2.1通用寄存器AX:作累加器用。所有的I/O指令都用AX與外部設(shè)備傳送信息BX:作通用寄存器用,或作基址寄存器CX:作通用寄存器用,或作隱含的計(jì)數(shù)器DX:做通用寄存器用,一般在作雙字節(jié)長(zhǎng)運(yùn)算時(shí)DX用來(lái)存放高位字

包括AX、BX、CX、DX四個(gè)通用寄存器,用來(lái)暫時(shí)存放計(jì)算機(jī)過(guò)程中所用到的操作數(shù)、結(jié)果或其他信息。都可以以字的形式訪問(wèn),或者也可以以字節(jié)的形式訪問(wèn)。AX→AH,ALBX→BH,BLCX→CH,CLDX→DH,DL它是算術(shù)運(yùn)算的主要寄存器,所有I/O指令都使用這一寄存器與外部設(shè)備交換數(shù)據(jù)。 例:INAL,20H OUT30H,AXBX——Base用作基址寄存器使用。在計(jì)算內(nèi)存儲(chǔ)器地址時(shí),經(jīng)常用來(lái)存放基址。例:MOVAX,[BX+03H]20CX——Count可以作計(jì)數(shù)寄存器使用。 在循環(huán)LOOP指令和串處理指令中用作隱含計(jì)數(shù)器。 例: MOVCX,200HAGAIN: …… ……

LOOPAGAIN

;(CX)-1(CX),結(jié)果0轉(zhuǎn)AGAINDX——Data可以作為數(shù)據(jù)寄存器使用。 一般在雙字長(zhǎng)乘除法運(yùn)算時(shí),

把DX和AX組合在一起存放一個(gè)雙字長(zhǎng)(32位)數(shù),DX用來(lái)存放高16位;

對(duì)某些I/O操作DX可用來(lái)存放I/O的端口地址(口地址256)。

例: MULBX;(AX)(BX)(DX)(AX)

例: INAL,DX指針及變址寄存器

包括SP、BP、SI、DI四個(gè)16位寄存器。他們可以以字為單位在運(yùn)算過(guò)程中存放操作數(shù)。更常用的用途是在段內(nèi)尋址時(shí)提供偏移地址。SP:堆棧指針寄存器。BP:基址指針寄存器SI:源變址寄存器DI:目的變址寄存器SP、BP都可以與SS寄存器聯(lián)用來(lái)確定堆棧中某一存儲(chǔ)單元的地址。SP用來(lái)指示棧頂?shù)钠频刂?;BP可作為堆棧區(qū)中的一個(gè)基地址以便訪問(wèn)堆棧中的其他信息SI、DI一般與DS聯(lián)用,用來(lái)確定數(shù)據(jù)段中某一存儲(chǔ)單元的地址…段內(nèi)偏移地址段起始地址22地址指針寄存器(SP、

BP)

SP(stackpointer)——堆棧指針寄存器用來(lái)指示棧頂?shù)钠频刂?必須與SS段寄存器聯(lián)合使用確定實(shí)際地址。堆棧和指針如下頁(yè)圖所示。

BP(basepointer)——基址指針寄存器可以與SS寄存器聯(lián)合使用來(lái)確定堆棧段中某一存儲(chǔ)器單元地址。238088系統(tǒng)存儲(chǔ)器與總線連接堆棧和指針設(shè):(SS)=3F00H,(SP)=0060H堆棧和指針如下圖:堆棧是內(nèi)存開(kāi)辟的一個(gè)特殊數(shù)據(jù)區(qū),一端固定,一端浮動(dòng),嚴(yán)格按照后進(jìn)先出的工作原則。變址寄存器(SI、DI) SI——SourceIndexRegister源變址寄存器。 DI——DestinationIndex目的變址寄存器。使用場(chǎng)合:常用于變址尋址。一般與DS聯(lián)用,用來(lái)確定數(shù)據(jù)段中某一存儲(chǔ)單元的地址,SI,DI具有自動(dòng)增量和自動(dòng)減量功能.例: MOVAX,[SI]在串處理指令中,SI、DI作為隱含的源變址和目的變址寄存器分別達(dá)到在數(shù)據(jù)段和附加段中尋址的目的。執(zhí)行示意圖如右圖。例: …… MOVSI,2000H MOVDI,3000H MOVCX,100H CLD ...... MOVSB …….

串處理指令執(zhí)行示意圖段寄存器

段寄存器:4個(gè)16位段寄存器CS、DS、SS、ES。 用來(lái)識(shí)別當(dāng)前可尋址的四個(gè)段,不可互換的使用。CS——CodeSegmentRegister代碼段寄存器 用來(lái)識(shí)別當(dāng)前代碼段(程序一般放在代碼段)。DS——DataSegmentRegister數(shù)據(jù)段寄存器 用來(lái)識(shí)別當(dāng)前數(shù)據(jù)段寄存器。SS——StackSegmentRegister堆棧段寄存器, 用來(lái)識(shí)別當(dāng)前堆棧段。ES——ExtraSegmentRegister附加段寄存器, 用來(lái)識(shí)別當(dāng)前附加段。注意:除CS代碼段寄存器、SP堆棧指針不能隨意修改、需要慎用外,其它通用寄存器都可以直接在指令中使用,用以存放操作數(shù),這是它們的通用之處,其它專用用途在具體指令中介紹。282.3.2.2專用寄存器IP:16位寄存器,用來(lái)存放代碼段中的偏移地址。在程序運(yùn)行過(guò)程中,它始終指向下一條指令的首地址,與CS寄存器聯(lián)用來(lái)確定下一條指令的物理地址SP:堆棧指針寄存器,用來(lái)存放堆棧的偏移地址。與堆棧寄存器SS聯(lián)用來(lái)確定堆棧段中棧頂?shù)牡刂?。FLAGS:程序狀態(tài)字寄存器(PSW),是一個(gè)16位寄存器,由條件碼和控制標(biāo)志構(gòu)成1514131211109876543210OFDFIFTFSFZFAFPFCF

9個(gè)標(biāo)志按其作用分狀態(tài)標(biāo)志和控制標(biāo)志兩類

狀態(tài)標(biāo)志:OF、SF、ZF、AF、PF、CF

共6個(gè)記錄指令運(yùn)行過(guò)程或運(yùn)算結(jié)果的狀態(tài)信息。常作為后續(xù)轉(zhuǎn)移指令的控制條件,又稱為條件碼??刂茦?biāo)志:DF、IF、TF

共3個(gè)

作用是控制CPU的操作。CF:進(jìn)位標(biāo)志(CarryFlag)反應(yīng)運(yùn)算過(guò)程中,最高位是否產(chǎn)生進(jìn)位/借位。(最高位對(duì)字節(jié)操作指D7位,對(duì)字操作指D15位)

加法,最高有效位有進(jìn)位CF=1,否則CF=0

減法,最高有效位有借位CF=1,否則CF=0AF:輔助進(jìn)位標(biāo)志(AuxiliaryCarryFlag)反應(yīng)運(yùn)算過(guò)程中,對(duì)字節(jié)操作D3位是否產(chǎn)生進(jìn)位。對(duì)字操作D7位是否產(chǎn)生進(jìn)位。有進(jìn)位或借位時(shí),AF=1,否則AF=0。PF:奇偶標(biāo)志(ParityFlag)反應(yīng)運(yùn)算結(jié)果中“1”的個(gè)數(shù)情況。有偶數(shù)個(gè)“1”時(shí),PF=1,否則PF=0。ZF:零標(biāo)志(ZeroFlag)

反應(yīng)運(yùn)算結(jié)果是否為0。

運(yùn)算結(jié)果為0時(shí),ZF=1,否則ZF=0SF:符號(hào)標(biāo)志(SignFlag)

反應(yīng)運(yùn)算結(jié)果的符號(hào)位。對(duì)字節(jié)操作SF=D7

對(duì)字操作SF=D15TF:跟蹤標(biāo)志為調(diào)試程序設(shè)置的一個(gè)控制標(biāo)志。當(dāng)TF=1時(shí),CPU按單步方式執(zhí)行指令I(lǐng)F:中斷標(biāo)志當(dāng)IF=1時(shí),允許CPU響應(yīng)可屏蔽中斷申請(qǐng)。當(dāng)IF=0時(shí),禁止CPU響應(yīng)可屏蔽中斷申請(qǐng)。方向標(biāo)志DF:方向標(biāo)志在串操作指令中控制地址變化的方向。當(dāng)DF=1時(shí),地址遞減;當(dāng)DF=0時(shí),地址遞增。OF:溢出標(biāo)志(OverflowFlag)

反應(yīng)運(yùn)算過(guò)程中是否產(chǎn)生溢出。產(chǎn)生溢出,OF=1,否則為0。29 10110101被加數(shù)8位

+

10001111加數(shù)8位進(jìn)位1

111111

01000100和8位PSW標(biāo)志寄存器運(yùn)算器標(biāo)志寄存器運(yùn)算器被加數(shù)加數(shù)和進(jìn)位例

8位二進(jìn)制加法如下,給出各狀態(tài)標(biāo)志位的值

最高位D7位產(chǎn)生進(jìn)位:CF=1D3位產(chǎn)生進(jìn)位:AF=1相加的結(jié)果為44H,不為0:ZF=0結(jié)果的最高位為0:SF=0兩負(fù)數(shù)相加結(jié)果為正,溢出:OF=1結(jié)果中有2個(gè)1,偶數(shù)個(gè)1:PF=1100111302.4存儲(chǔ)器2.4.1存儲(chǔ)單元的地址和內(nèi)容78H56H12H34H5AHAFH0000H0001H0002H0003H0004H0005H0006H地址字單元[0002h]=1234H雙字單元[0002H]=78561234H字節(jié)單元[0002h]=34H內(nèi)容計(jì)算機(jī)存儲(chǔ)信息的基本單位是一個(gè)二進(jìn)制位在存儲(chǔ)器中以字節(jié)為單位存儲(chǔ)信息一個(gè)存儲(chǔ)單元中存放的信息稱為該存儲(chǔ)單元的內(nèi)容字存入存儲(chǔ)器時(shí),低位字節(jié)存入低地址,高位字節(jié)存入高地址同一個(gè)地址既可以看作字節(jié)單元的地址,也可以看作字單元的地址機(jī)器是以偶地址訪問(wèn)存儲(chǔ)器的312.4.2實(shí)模式下存儲(chǔ)器尋址2.4.2.1存儲(chǔ)器地址的分段采用存儲(chǔ)器分段方法來(lái)解決16位地址表示1M字節(jié)的問(wèn)題。每個(gè)段可達(dá)64K,段必須從任一小段的首地址開(kāi)始。首地址:是一個(gè)16進(jìn)制表示的地址,最低位為0物理地址:每個(gè)存儲(chǔ)單元都有一個(gè)唯一的20位地址,稱為該存儲(chǔ)單元的物理地址段地址:每一小段的起始地址,其低4位是0偏移地址:在段內(nèi)相對(duì)于段起始地址的偏移值邏輯地址:存儲(chǔ)單元地址的表達(dá)形式。即段地址:偏移地址。每個(gè)存儲(chǔ)單元的邏輯地址不唯一。321.內(nèi)存物理地址的形成

取指令、取數(shù)、存數(shù)時(shí),都要訪問(wèn)內(nèi)存,被訪問(wèn)內(nèi)存單元的地址由CPU提供。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器33

8086/8088有20根地址線,可尋址220=1M個(gè)內(nèi)存單元,而CPU內(nèi)部寄存器均為16位,故:20位的地址需由一個(gè)附加部件完成。這個(gè)部件就是地址加法器。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器BIUEU348088內(nèi)部20位物理地址形成存儲(chǔ)器地址分段

8088地址總線是20位的,CPU中的寄存器是16位的,

20位地址無(wú)法用16位寄存器表示,必須分段。 程序員在編制程序時(shí)把存儲(chǔ)器劃分成段。

段內(nèi)地址16位,每個(gè)段的大小最大可達(dá)64KB; 實(shí)際可以根據(jù)需要來(lái)確定段大小,可以是1,100,1000, 在64K范圍內(nèi)的任意字節(jié)數(shù)。

IBMPC機(jī)對(duì)段的起始地址有限制,即段不能從任意地址開(kāi)始:

必須從任一小段(paragraph)的首地址開(kāi)始。

小段的概念 從0地址開(kāi)始每16字節(jié)為一小段, 對(duì)于16位地址總線,段內(nèi)存儲(chǔ)器小段地址如下:如:0000H,0001H,0002H,……,000EH,000FH一個(gè)小段

0010H,0011H,0012H,……,001EH,001FH 0020H,0021H,0022H,……,002EH,002FH … …FFF0H,FFF1H,FFF2H,……,FFFEH,FFFFH

其中:第一列就是每個(gè)小段的首地址。每個(gè)小段首地址特征:在16進(jìn)制表示的地址中,最低位為0H

(即20位地址的低4位為0000B)。在1M字節(jié)的地址空間,共有64K個(gè)小段其首地址為:00000H00010H…41230H41240H…FFFE0HFFFF0H

20位物理地址形成

物理地址:在1M字節(jié)存儲(chǔ)器里,每個(gè)存儲(chǔ)單元都有一個(gè)唯一的20位地址作為該存儲(chǔ)單元的物理地址。

CPU訪問(wèn)存儲(chǔ)器時(shí),必須先確定所要訪問(wèn)的存儲(chǔ)單元的物理地址才能取出(或存入)該單元中的內(nèi)容。

20位物理地址形成:由16位段地址和16位偏移地址組成。段地址:只取段起始地址高16位值。偏移地址:指在段內(nèi)某內(nèi)存單元物理地址相對(duì)段起始地址的偏移值。物理地址的計(jì)算方法:

16d*段地址+偏移地址=物理地址16位段地址000015016位偏移地址150

20位物理地址段地址*16d,也就是將保存段地址時(shí)省略的0補(bǔ)回位對(duì)齊39物理地址PA=段地址+偏移地址

=(段寄存器)×10H+偏移地址段寄存器有4個(gè):DS、ES、CS、SS

偏移地址由IP、SP、BX、BP、SI、DI

或一個(gè)8位或16位二進(jìn)制數(shù)得到。這種存儲(chǔ)器管理方式叫分段編址。40段地址0000偏移地址150150存儲(chǔ)器所選存儲(chǔ)單元段基地址所選段最大64KB實(shí)模式存儲(chǔ)器尋址41例:某內(nèi)存單元的段地址由DS、偏移地址由BX給出。若(DS)=2000H,(BX)=1000H,計(jì)算其物理地址。

PA=(DS)×10H+(BX)=2000H×10H+1000H=21000HA19A16A12A8A4A020根地址線:42要點(diǎn):(段地址由16位的段寄存器給出,可將段地址直接用16位表示)

物理地址20位,段地址16位,偏移地址16位。物理地址PA=段地址+偏移地址

=(段寄存器)×10H+偏移地址

由16位段寄存器決定有216=64K個(gè)段值

由16位偏移地址決定每個(gè)段的大小為0~64K

每個(gè)段最大64K,但不一定是64K,可據(jù)需要分配。43

指令的地址固定由CS和IP兩個(gè)寄存器決定。(代碼段寄存器和指令指針寄存器)DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器44例

開(kāi)機(jī)或RESET復(fù)位后,(CS)=FFFFH,(IP)=0故8086/8088執(zhí)行的第一條指令所在內(nèi)存的地址為:

PA=(CS)×10H+(IP)=FFFFH×10H+0=FFFF0H45邏輯地址來(lái)源操作類型正常使用(隱含)段基址可替換段地址偏移地址物理地址計(jì)算取指令CS無(wú)IP(CS)16d+(IP)堆棧操作SS無(wú)SP(SS)16d+(SP)BP間址SSCS,DS,ES有效地址EA(SS)16d+EA存取變量DSCS,ES,SS有效地址EA(DS)16d+EA源字符串DSCS,ES,SSSI(DS)16d+(SI)目標(biāo)字符串ES無(wú)DI(ES)16d+(DI)取指令:

自動(dòng)選擇代碼段寄存器CS, 再加上由IP決定的16位偏移量, 計(jì)算得到要取的指令20位物理地址。堆棧棧頂操作:

自動(dòng)選擇堆棧段寄存器SS, 再加上由SP決定的16位偏移量, 計(jì)算得到堆棧棧頂操作需要的20位物理地址。段寄存器和其他寄存器組合指向存儲(chǔ)單元示意圖歸納段寄存器和其他寄存器組合指向存儲(chǔ)單元示意圖如下:各段在存儲(chǔ)器中分配各段在存儲(chǔ)器中分配分4種情況討論:(1)由操作系統(tǒng)負(fù)責(zé)分配 一般情況,各段在存儲(chǔ)器中的分配是由操作系統(tǒng)負(fù)責(zé)。每個(gè)段可以獨(dú)立地占用64K存儲(chǔ)區(qū)。(2)各段也可以允許重迭 每個(gè)段的大小允許根據(jù)實(shí)際需要分配,不一定要占64KB。每個(gè)存儲(chǔ)單元的內(nèi)容不允許發(fā)生沖突

(段可重迭,但使用時(shí)防止沖突)。(3)在程序的首部設(shè)定各段寄存器的值如果程序中的四個(gè)段都是64K的范圍之內(nèi),程序運(yùn)行時(shí)所需要的信息都在本程序所定義的段區(qū)之內(nèi),程序員只要在程序的首部設(shè)定各段寄存器的值就可以了。(4)動(dòng)態(tài)地修改段寄存器的內(nèi)容

如果程序的某一段(如數(shù)據(jù)段)在程序運(yùn)行過(guò)程中會(huì)超過(guò)64K空間,或者程序中可能訪問(wèn)除本身四個(gè)段以外的其他段區(qū)的信息,那么在程序中必須動(dòng)態(tài)地修改段寄存器的內(nèi)容。64KB為一段代碼段范圍:01000H~10FFFH各段允許重迭:代碼段:01000H~10FFFH數(shù)據(jù)段:02000H~027FFH堆棧段:02800H~028FFH注意:

以8088CPU的IBMPC系統(tǒng)中,存儲(chǔ)器首尾地址的用途固定。

00000H~003FFH共1K內(nèi)存單元用于存放中斷向量。

FFFF0H~FFFFFH是存儲(chǔ)器底部的16個(gè)單元。系統(tǒng)加電復(fù)位時(shí),會(huì)自動(dòng)轉(zhuǎn)到FFFF0H單元執(zhí)行,而在FFFF0H處存放一條無(wú)條件轉(zhuǎn)移指令,轉(zhuǎn)向系統(tǒng)初始化程序。2.4.2.2段寄存器

四個(gè)專門存放地址的寄存器,稱為段寄存器。分別是:代碼段CS,數(shù)據(jù)段DS,堆棧段SS,附加段ES。

溫馨提示

  • 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)論