




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章微機中的微處理器引言微處理器是組成微計算機系統(tǒng)的核心部件。本章重點講解8086微處理器,因為它體現(xiàn)了簡單微處理器的一般原理,也是學(xué)習(xí)匯編語言程序設(shè)計的基礎(chǔ)。主要討論:微處理器的內(nèi)部結(jié)構(gòu)、與之配合的存儲器組織、I/O組織和尋址方式。2010.2.251第二章微機中的微處理器2.18086微處理器的內(nèi)部結(jié)構(gòu)2.28086的寄存器結(jié)構(gòu)2.38086的存儲器組織2.38086的I/O組織2.58086的尋址方式2010.2.252微處理器的功能:MPU是組成計算機系統(tǒng)的核心部件,它具有運算和控制的功能。具體來講,它有以下基本功能支持功能完善的指令系統(tǒng),進行各種算術(shù)邏輯運算,通過程序完成復(fù)雜的科學(xué)計算。支持各種結(jié)構(gòu)的程序的執(zhí)行,如程序的分支、循環(huán)、嵌套、子程序的調(diào)用和返回、中斷服務(wù)程序等。控制與存儲器、外部設(shè)備等相連,組成完整的微機系統(tǒng)。2.1微處理器的內(nèi)部結(jié)構(gòu)2.1微處理器的一般結(jié)構(gòu)2010.2.253微處理器的功能:具體來講,它有以下基本功能①進行算術(shù)運算和邏輯運算;②接收存儲器和I/O接口送來的數(shù)據(jù)和發(fā)送數(shù)據(jù)給存儲器和I/O接口;③暫存少量數(shù)據(jù);④對指令進行寄存、譯碼并執(zhí)行指令所規(guī)定的操作;⑤提供整個系統(tǒng)所需的定時和控制信號;⑥響應(yīng)I/O設(shè)備發(fā)出的中斷請求。2.1微處理器的內(nèi)部結(jié)構(gòu)2.1微處理器的一般結(jié)構(gòu)2010.2.254微處理器的功能:從程序設(shè)計的角度考慮,CPU必須便于處理:①賦值和算術(shù)表達式②無條件轉(zhuǎn)移③條件轉(zhuǎn)移以及關(guān)系和邏輯表達式④循環(huán)⑤數(shù)組和其它數(shù)據(jù)結(jié)構(gòu)⑥子程序⑦輸入/輸出2.1微處理器的內(nèi)部結(jié)構(gòu)2010.2.255CPU的實際工作就是執(zhí)行每一條指令。執(zhí)行每一條指令都可分為三個階段,即:
1.取指令2.分析指令3.執(zhí)行指令2.1微處理器的內(nèi)部結(jié)構(gòu)取指令:從存儲器中讀出現(xiàn)行指令,把指令送入CPU中。分析指令:對指令進行譯碼,分析其指令性質(zhì)。如指令要求操作數(shù),則尋找操作數(shù)地址。
執(zhí)行指令:進行相應(yīng)的操作。2010.2.2563.1.1微處理器的內(nèi)部結(jié)構(gòu)串行處理指令的執(zhí)行過程:取指令—取操作數(shù)(如需要)—執(zhí)行指令—寫入存儲器(如需要)。取指令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標志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊列執(zhí)行單元(EU)總線接口單元(BIU)16位20位16位8位ALU數(shù)據(jù)總線數(shù)據(jù)總線8086總線2.18086微處理器的功能結(jié)構(gòu)2010.2.258總線接口單元(BIU)總線接口單元由下列各部分組成:(1)4個段地址寄存器;CS——16位的代碼段寄存器;DS——16位的數(shù)據(jù)段寄存器;ES——16位的擴展段寄存器;SS——16位的堆棧段寄存器;
(2)16位的指令指針寄存器IP;(3)6字節(jié)的指令隊列寄存器;(4)20位的地址加法器;(5)完成與EU通訊的內(nèi)部寄存器;(6)總線控制邏輯。取指令時:從存儲器指定地址取出指令送入指令隊列排隊;執(zhí)行指令時:根據(jù)EU命令對指定存儲器單元或者I/O端口存取數(shù)據(jù)。2010.2.259執(zhí)行單元(EU)執(zhí)行單元由下列各部分組成:(1)算術(shù)邏輯運算單元(ALU);(2)標志寄存器(FR):(3)通用寄存器組-AX,BX,CX,DX,SP,BP,DI,SI;(4)EU控制器;(5)暫存器。工作:執(zhí)行指令,進行全部的算術(shù)邏輯運算、完成偏移地址的計算,向BIU提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對通用寄存器和標志寄存器進行管理。2010.2.25102.18086的內(nèi)部結(jié)構(gòu)指令和程序執(zhí)行過程如下圖:取指令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標志寄存器 (16位)
2010.2.25122.2.1通用寄存器組4個16位數(shù)據(jù)寄存器(存在于 EU中):包括AX,BX,CX,DX。主要功能:(見P14表2.1)
1.存放數(shù)據(jù) 2.存放地址每一個寄存器又可分為兩個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ù)、邏輯運算,以及與外設(shè)傳送信息等;累加器一般用來存放參加運算的數(shù)據(jù)和結(jié)果。尤其在乘、除法運算、I/O操作中有不可替代的作用。
乘法運算:存放結(jié)果 除法運算:存放商 I/O操作:AX(或AL)與I/O端口進行數(shù)據(jù)通信。2010.2.25142.2.1數(shù)據(jù)寄存器BX——基址寄存器基址寄存器可作數(shù)據(jù)寄存器還可放內(nèi)存的邏輯偏移地址,而AX,CX,DX則不能。如: MOVAX,[BX]但是,如果寫成: MOVAX,[CX]是錯誤的2010.2.25152.2.1數(shù)據(jù)寄存器CX——計數(shù)寄存器計數(shù)寄存器做數(shù)據(jù)寄存器還可以在循環(huán)操作中和移位操作中做計數(shù)器用。如: MOVCX,15(循環(huán)程序中);給cx賦值為15 …………. ………….
循環(huán)操作15次2010.2.25162.2.1數(shù)據(jù)寄存器DXDX做通用數(shù)據(jù)寄存器還在乘、除法運算、帶符號數(shù)的擴展指令中有特殊用途。
2010.2.25172.2.1通用寄存器組地址指針和變址寄存器:變址寄存器,用于在某些間接尋址方式中存放段內(nèi)偏移地址的全部或一部分:SI——源變址寄存器DI——目的變址寄存器串操作類指令中,SI和DI具有特別的功能指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù):SP——堆棧指針,指示棧頂?shù)钠频刂贰P不能再用于其他目的,具有專用目的。BP——基址指針,用于在某些間接尋址方式中存放段內(nèi)偏移地址的一部分。SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址。2010.2.2518BIU設(shè)有4個16位段寄存器(可見P18的2.2.3內(nèi)容)2.2.2段寄存器組段寄存器用來存放段地址,cpu可通過4個段寄存器訪問存儲器中4個不同的段(每段64k)。
CS——代碼段寄存器,存放代碼段的段地址
SS——堆棧段寄存器,存放堆棧段的段地址
DS——數(shù)據(jù)段寄存器,存放數(shù)據(jù)段的段地址
ES——附加段寄存器,存放附加段的段地址2010.2.25192.2.3控制寄存器組指令指針寄存器IP:
保存下一條要執(zhí)行的指令的偏移地址,它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址。計算機通過CS:IP寄存器來控制指令序列的執(zhí)行流程。IP寄存器是一個專用寄存器。2010.2.2520補充內(nèi)容無符號數(shù)和有符號數(shù)原碼、反嗎、和補碼2010.2.2521有符號數(shù)的表示方法二進制數(shù)分為:
無符號數(shù) 有符號數(shù)2010.2.2522有符號數(shù)的表示方法二進制數(shù)分為:無符號數(shù)和有符號數(shù)無符號數(shù) :所有的二進制數(shù)位均為數(shù)值位。例如:10000111=135有符號數(shù) :最高位為符號位,后面的所有位為數(shù)值位。例如:10000111=-72010.2.2523有符號數(shù)的表示方法無符號數(shù) :所有的二進制數(shù)位均為數(shù)值位。例如:10000111=135有符號數(shù) :最高位為符號位,后面的所有位為數(shù)值位。例如:10000111=-72010.2.2524有符號數(shù)的表示方法有符號數(shù):+:用0表示(正數(shù))-:用1表示(負數(shù))用0表示“+”,用1表示“-”。這樣的表示方法就是符號數(shù)字化。即用數(shù)字來表示正負數(shù)的符號。2010.2.2525有符號數(shù)的表示方法8位無符號數(shù)范圍:所有的二進制數(shù)位均為數(shù)值位。
0≤X≤25500000000到111111118位有符號數(shù)的范圍 :最高位為符號位,后面的所有位為數(shù)值位。 -128≤X≤127
10000000到011111112010.2.2526有符號數(shù)的表示方法有符號數(shù)的表示方法:
原碼 反碼 補碼2010.2.2527有符號數(shù)的表示方法原碼
正數(shù)的符號用“0”表示,負數(shù)的符號用“1”表示,絕對值的編碼規(guī)則與無符號數(shù)編碼規(guī)則相同。這樣的表示方法稱為原碼表示法。 一個數(shù)X的原碼記作[x]原
例如:用8位二進制表示: 19的原碼是:[19]原=
00010011(最高位是符號位) -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字長表示范圍n8有符號數(shù)的表示方法2010.2.25292.反碼★正數(shù)的反碼:與原碼相同;★負數(shù)的反碼:原碼的符號位不變,其它各位求反。
例如:用8位二進制表示: 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字長表示范圍n82010.2.25313.補碼★正數(shù)的補碼:與原碼相同;★負數(shù)的補碼:原碼的符號位不變,其它各位求反加1。
例如:用8位二進制表示: 19的反碼是:[19]原=
00010011,[19]反=
00010011
[19]補=
00010011 -19的反碼是:[-19]原=10010011,[-19]反=11101100
[-19]補=111011012010.2.25323.補碼-2n-1~+(2n-1–1)-27~+(27–1)字長表示范圍n8[+0]補=00000000[-0]補=28–|-0|=00000000[+1]補=00000001[-1]補=28–|-1|=11111111[+127]補=01111111[-127]補=28–|-127|=100000012010.2.2533有符號數(shù)的表示方法一個有符號數(shù)X
X≥0
[x]原=[x]反=[x]補
X≤0
[x]反:[x]原符號位不變,其它各位求反 [x]補=[x]反+1練習(xí)2010.2.25343.補碼例:73-2=73+(-2)=71 01001011(73)+ 11111110(-2)
101000111(71)在計算機中,加減法是用補碼來運算的。補碼加法,如果符號位有進位,必須舍棄
2010.2.25352.2.3控制寄存器組標志寄存器(FLAG):
狀態(tài)標志——記錄程序運行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。CFZFSFPFOFAF
控制標志——可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。DFIFTF2010.2.25362.2.3控制寄存器組標志寄存器(FLAG)D15D0OFDFIFTFSFZFAFPFCF進位標志奇偶標志輔助進位標志符號標志單步中斷中斷允許方向標志溢出標志1-有進、借位0-無進、借位1-低8位有偶數(shù)個10-低8位有奇數(shù)個11-低4位向高4位有進、借位0-低4位向高4位無進、借位1-結(jié)果為00-結(jié)果不為0零標志2010.2.2537進位標志CF:當運算結(jié)果的最高有效位有進位(加法)或借位(減法)時,進位標志置1,即CF=1;否則CF=0。(無符號數(shù))標志寄存器(FLAG) 00111010 01111100 10110110+ 10101010 01111100
1 00100110+CF=0CF=13AH+7CH=B6HAAH+7CH=(1)26H2010.2.2538PF:奇偶標志位,如果操作結(jié)果的低8位含有偶數(shù)個1,則PF=1;否則CF=0。標志寄存器(FLAG) 01001000 01100010 10101010+001000110100010001010010000110010111010101011101+PF=1PF=048H+62H=AAH2344H+5219H=755DH2010.2.2539AF:輔助進位標志,如果在加法時D3
有進位或者減法時D3有借位,則AF=1,否則AF=0。標志寄存器(FLAG) 01001000 01100010 10101010+010011000001100101100101+AF=0AF=148H+62H=AAH4CH+19H=65H2010.2.2540ZF:零標志位,如果運算結(jié)果各位都是零,則ZF=1,否則ZF=0。標志寄存器(FLAG) 01001000 01100010 10101010+000110010001100100000000--ZF=0ZF=148H+62H=AAH19H-19H=00H2010.2.2541SF:符號標志位,它總是和結(jié)果的最高位相同。(字節(jié)操作時是D7,字操作時是D15)標志寄存器(FLAG) 01001000 01100010 10101010+SF=148H+62H=AAH001000110100010001010010000110010111010101011101+SF=02344H+5219H=755DH2010.2.2542溢出標志OF:若算術(shù)運算的結(jié)果有溢出,則OF=1;否則OF=0(有符號數(shù))標志寄存器(FLAG)例如: 00111010 01111100 101101103AH+7CH=B6H,產(chǎn)生溢出:OF=1+OF=1 10101010 01111100
1 00100110AAH+7CH=(1)26H,沒有溢出:OF=0+OF=02010.2.2543標志寄存器(FLAG)問題:什么是溢出?溢出和進位有什么區(qū)別?如何判斷是否溢出?2010.2.2544處理器內(nèi)部以補碼表示有符號數(shù)。 8個二進制位能夠表達的整數(shù)范圍是:-128~+127
16位表達的范圍是:-32768~+32767
標志寄存器(FLAG)什么是溢出?如果運算結(jié)果超出了可表達的范圍,就是產(chǎn)生了溢出。有溢出,說明有符號數(shù)的運算結(jié)果不正確。2010.2.2545例:73+72=145>127[x]補=01001001(+73)+[y]補=01001000(+72)
10010001兩個正數(shù)相加結(jié)果變成了負數(shù)?溢出:運算結(jié)果,超出了8位有符號數(shù)所能表示的范圍。補碼運算發(fā)生溢出情況:
1.同號數(shù)相加,可能溢出;2.異號數(shù)相減,可能溢出。2010.2.2546判斷運算結(jié)果是否溢出有一個簡單的規(guī)則:最高位溢出的判斷標志寄存器(FLAG) 1+ 10 0+ 01 1- 00 0- 112010.2.2547溢出標志OF和進位標志CF是兩個意義不同的標志。進位標志表示無符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果仍然正確;溢出標志表示有符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果已經(jīng)不正確。標志寄存器(FLAG)溢出和進位有什么區(qū)別?2010.2.2548例1:3AH+7CH=B6H溢出和進位對比標志寄存器(FLAG) 001110103AH 011111007CH 10110110B6H+B6H=128
CF=0無符號數(shù)運算:58+124=182,范圍內(nèi)0~255,無進位有符號數(shù)運算:58+124=182,范圍外-128~127,有溢出
001110103AH
011111007CH
10110110B6H+[B6H]補=-74
OF=1有符號數(shù)最高位是符號位2010.2.2549溢出和進位對比標志寄存器(FLAG)例2:AAH+7CH=(1)26H 10101010AAH 011111007CH
10010011026H+CF=1,(1)26H=294無符號數(shù)運算:170+124=294,范圍外0~255,有進位有符號數(shù)運算:-86+124=28,范圍內(nèi)-128~127,無溢出OF=0
10101010AAH
011111007CH
1
0010011026H+訓(xùn)練2010.2.2550
處理器對兩個操作數(shù)進行運算時,按照無符號數(shù)求得結(jié)果,并相應(yīng)設(shè)置進位標志CF;同時,根據(jù)是否超出有符號數(shù)的范圍設(shè)置溢出標志OF。如何運用溢出和進位標志寄存器(FLAG)應(yīng)該利用哪個標志,則由程序員來決定。 無符號數(shù)運算,影響進位; 有符號數(shù)運算,則影響溢出位。2010.2.2551可用指令設(shè)置。字符串操作時,受它的控制。當DF=0時,執(zhí)行串操作指令,變址寄存器自動遞增;當DF=1時,則變址寄存器地址自動遞減。即該位可控制變址寄存器的地址朝增大的方向或減小的方向改變。DF:方向標志位標志寄存器(FLAG)2010.2.2552可用指令設(shè)置當IF=1時,CPU可響應(yīng)可屏蔽中斷請求;當IF=0時,CPU不響應(yīng)可屏蔽中斷請求。IF:中斷允許標志標志寄存器(FLAG)2010.2.2553若TF=1,則CPU處于單步執(zhí)行指令工作方式。每執(zhí)行一條指令就會自動產(chǎn)生一次類型1的內(nèi)部中斷。在調(diào)試程序的過程中,每執(zhí)行一條指令,就利用這種中斷,來顯示所有寄存器的當前值和將要執(zhí)行的下一條指令。一般情況下,TF=0。只有在調(diào)試程序時,可能會用到單步執(zhí)行時,才設(shè)置TF=1。TF:陷阱標志位標志寄存器(FLAG)2010.2.2554計數(shù)制:指用一組固定的數(shù)字符號和統(tǒng)一的規(guī)則來表示數(shù)的方法。基數(shù):各種進制中數(shù)字符號的個數(shù)。權(quán):在位置記數(shù)法中,對每一個數(shù)位賦以不同的位值。2.38086的存儲器組織2010.2.2555各種數(shù)制2.38086的存儲器組織十進制二進制十六進制數(shù)碼0~90,10~9,A~F基(或模)10216進位原則逢十進一逢二進一逢十六進一位權(quán)值10i2i16i數(shù)制后綴符號D或者省略BH2010.2.2556微計算機的硬件結(jié)構(gòu)(馮.諾依曼結(jié)構(gòu))
從功能或邏輯的角度,微型計算機的硬件由運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大部分組成。
運算器控制器MPU存儲器輸出設(shè)備I/O接口輸入設(shè)備A.BUSD.BUSC.BUS2.38086的存儲器組織2010.2.25572.38086的存儲器組織2.3.1存儲器地址空間和數(shù)據(jù)存儲格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進制地址存儲器存儲器的地址8086的存儲器是以字節(jié)(8位)為單位組織的。8086cpu具有20條地址總線,可尋址的存儲器地址空間容量為220B,地址(1MB)。20條地址總線,16條數(shù)據(jù)總線2010.2.25582.38086的存儲器組織2.3.1存儲器地址空間和數(shù)據(jù)存儲格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進制地址存儲器存儲器的地址每個存儲單元都有一個唯一的地址編號—存儲器地址其范圍是0~220-1,(用十六進制表示為
00000H~FFFFFH),每個存儲單元存放一個字節(jié)的內(nèi)容(********B,如10001110B)2010.2.25592.38086的存儲器組織2.3.1存儲器地址空間和數(shù)據(jù)存儲格式兩個連續(xù)的字節(jié),為一個字:低地址對應(yīng)低字節(jié),高地址對應(yīng)高字節(jié)(小端方式)。字的地址指低字節(jié)的地址。([00004H])=1122H([00001H])=4455H([00003H])=2233H23H00000H55H00001H44H00002H33H00003H22H00004H00010001B00005H2010.2.25602.38086的存儲器組織2.3.1存儲器地址空間和數(shù)據(jù)存儲格式字的地址為偶地址,稱字的存儲是對準的,訪問時只需一個總線周期。字的地址為奇地址,稱字的存儲是未對準的,訪問時要兩個總線周期(CPU自動完成)。2010.2.25612.38086的存儲器組織2.3.2存儲器分段管理和物理地址的形成8086CPU有20條地址線,物理地址范圍從00000H~FFFFFH。最大可尋址空間為220=1MB,
*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進制地址存儲器1M個內(nèi)存單元2010.2.25622.38086的存儲器組織2.3.2存儲器分段管理和物理地址的形成提供偏移地址或偏移地址的一部分的寄存器BX、IP、SP、BP、SI和DI及ALU都是16位,0000H~FFFFH,其尋址范圍是64KB。*********B0000H0001H0002H0003HFFFDH…………..FFFEHFFFFH十六進制地址存儲器64K個內(nèi)存單元8086CPU采用地址分段方法,將尋址范圍擴大到1MB。2010.2.25632.38086的存儲器組織2.3.2存儲器分段管理和物理地址的形成8086CPU將1MB空間分成許多邏輯段(Segment),每個段最大限制為64KB,段地址的低4位為0000B,即****0H。00000H00001H00002H00003H0FFFDH0FFFEH0FFFFH………一個邏輯段,共64K個單元00010H00011H00012H00013H1000DH1000EH1000FH………下一個邏輯段,共64K個單元2010.2.25642.38086的存儲器組織00000H00010H00020H0FFFFH………存儲器………………………1000FH………1001FH段0段1段22010.2.25652.38086的存儲器組織2.3.2存儲器分段管理和物理地址的形成8086對邏輯段的要求是:
段地址低4位均為0,每段最大不超過64KB。每個段不要求必須是64KB,段與段可以重疊。1MB空間最多能分成多少個段?
每隔64K個存儲單元開始一個段,所以1MB最少有:
220÷216=16個段每隔16個存儲單元就可以開始一個段,所以1MB最多有:
220÷16=216=64K個段1MB空間最少能分成多少個段?2010.2.2566基本概念物理地址起始地址段地址偏移地址邏輯地址2.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織2010.2.25672.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進制地址存儲器物理地址存儲器有1M個內(nèi)存單元,每個內(nèi)存單元都有自己的地址編碼,這個編碼在所有的內(nèi)存單元中是唯一的,這些地址編碼就是存儲單元的物理地址。其范圍是00000H~FFFFFH。物理地址:存儲單元的實際地址編碼。2010.2.25682.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六進制地址存儲器起始地址在存儲器中,每個邏輯段的首地址就是起始地址,起始地址是個物理地址,20位。如右圖:起始地址:00000H2010.2.25692.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織段地址一個段的起始地址(物理地址)的高16位就是該段的段地址。00010H00011H00012H00013H1000DH1000EH1000FH………一個邏輯段,共64K個單元如右圖:此邏輯段起始地址:00010H段地址:0001H段地址由段寄存器(CS,DS,SS,ES)提供2010.2.25702.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織偏移地址在一個段內(nèi),相對于段起始地址的偏移量,就是段內(nèi)偏移地址。其范圍:0000H~FFFFH,都是16位。00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH如右圖(00010H~1000FH)紅色內(nèi)存單元偏移地址:0000H黃色內(nèi)存單元偏移地址:0001H最后一個內(nèi)存單元偏移地址:FFFFH2010.2.25712.3.2存儲器分段管理和物理地址的形成2.38086的存儲器組織00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH邏輯地址其格式為段地址:偏移地址。如右圖:黃色內(nèi)存單元的邏輯地址為:0001:0003段地址偏移地址2010.2.25722.38086的存儲器組織2.3.2存儲器分段管理和物理地址的形成對應(yīng)每個物理存儲單元都有一個唯一的20位編號,即物理地址。00000H~FFFFFH物理地址的形成:
段地址*16+偏移地址=20位物理地址
第四個內(nèi)存單元的物理地址:(邏輯地址為0001:0003)
物理地址=0001H*10H+0003H=00013H2010.2.2573123456內(nèi)部寄存器
IP
ES
SSDSCS總線控制電路EU控制器∑ALU標志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊列執(zhí)行單元(EU)總線接口單元(BIU)16位20位16位8位ALU數(shù)據(jù)總線數(shù)據(jù)總線8086總線物理地址的形成過程2010.2.25742.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系存儲器中的信息可分為:程序代碼數(shù)據(jù)計算機的狀態(tài)2010.2.25752.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系存儲器可分為:程序區(qū)、數(shù)據(jù)區(qū)、堆棧區(qū)。程序區(qū):存儲程序的指令代碼數(shù)據(jù)區(qū):存儲原始數(shù)據(jù)、中間數(shù)據(jù)和最后結(jié)果堆棧區(qū):存儲需要壓入堆棧的數(shù)據(jù)或狀態(tài)信息。2010.2.25762.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系段寄存器的分工:代碼段寄存器CS:劃定并控制著程序區(qū)。數(shù)據(jù)段寄存器DS或附加段寄存器ES:控制著數(shù)據(jù)區(qū)。堆棧段寄存器SS:對應(yīng)著堆棧存儲區(qū)。2010.2.25772.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系一個完整的程序分為:代碼段、數(shù)據(jù)段、堆棧段、附加段當調(diào)用程序時,就把: 代碼段調(diào)入程序區(qū), 數(shù)據(jù)段和附加段調(diào)入數(shù)據(jù)區(qū), 堆棧段調(diào)入堆棧區(qū)。 代碼段:存放程序的指令序列 數(shù)據(jù)段:存放當前運行程序所用的數(shù)據(jù) 堆棧段:存放需要壓棧的信息
附加段:附加的數(shù)據(jù)段,如需要則開辟附加段1、代碼段、數(shù)據(jù)段、堆棧段和附加段對應(yīng)的是程序;2、程序區(qū)、數(shù)據(jù)區(qū)、和堆棧區(qū)對應(yīng)的是存儲區(qū);3、段寄存器:保存段的段地址2010.2.25782.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(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的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系段寄存器
CS:存放代碼段的段地址 DS:存放數(shù)據(jù)段的段地址 SS:存放堆棧段的段地址
ES:存放附加段的段地址2010.2.2580程序員如何分配各個邏輯段?2.38086的存儲器組織2.3.3信息的分段存儲與段寄存器的關(guān)系程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實際上可以存放在任何一種邏輯段中。2010.2.25812.38086的存儲器組織訪問存儲器類型默認段地址可指定段地址段內(nèi)偏移地址來源取指令碼CS無IP堆棧操作SS無SP字符串操作源地址DSCS,ES,SSSI字符串操作目的地址ES無DIBP用作基址寄存器SSCS,DS,ES依尋址方式求得有效地址EA一般數(shù)據(jù)存取DSCS,ES,SS依尋址方式求得有效地址EA下表列出了各類型訪問存儲器時使用的段寄存器和段內(nèi)偏移地址的來源。2010.2.2582各個邏輯段獨立示意圖如右圖:當前段可容納64KB代碼,64KB堆棧,128KB數(shù)據(jù),即共256KB。2010.2.2583各個邏輯段重疊示意圖段可以部分重疊,若不用附加段,則ES和DS重合。2010.2.2584微計算機的硬件結(jié)構(gòu)(馮.諾依曼結(jié)構(gòu))
從功能或邏輯的角度,微型計算機的硬件由運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大部分組成。
運算器控制器MPU存儲器輸出設(shè)備I/O接口輸入設(shè)備A.BUSD.BUSC.BUS2.58086的I/O組織2010.2.25852.58086的I/O組織
I/O接口與CPU之間的通信是利用稱為I/O端口的寄存器來完成的。I/O端口I/O接口1I/O端口I/O接口2I/O端口I/O端口…....…....I/O端口I/O端口每個端口都是一個8位的寄存器(相當于內(nèi)存單元)。系統(tǒng)為每個端口分配一個地址,各個端口有唯一的I/O地址與之對應(yīng),是單獨編址的。2010.2.25862.58086的I/O組織
任何兩個編號相鄰的8位I/O端口可以組成一個16位I/O端口,類似于存儲器的字。
8086CPU地址總線的低16位用來對8位I/O端口尋址,I/O地址空間為65535,即可訪問65535個8位的I/O端口,尋址范圍是0~64K。 I/O地址線和存儲器地址線是共用的,但利用控制總線中的一些控制信號可以區(qū)分是I/O存取還是存儲器存取。2010.2.25872.68086的尋址方式指令由操作碼和操作數(shù)兩部分組成:操作碼:說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。操作碼操作數(shù)操作數(shù):指令執(zhí)行的參與者,即各種操作的對象。有些指令不需要操作數(shù),通常的指令都有一個或兩個操作數(shù),也有個別指令有3個甚至4個操作數(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.存儲器中 ;MOVAX,[0050]8086的尋址方式有:
立即數(shù)尋址方式寄存器尋址方式存儲器尋址方式
尋址:尋找操作數(shù)的地址
尋址方式:尋找操作數(shù)地址的方法2010.2.25902.68086的尋址方式具體的尋址方式: 1.立即數(shù)尋址 2.寄存器尋址 2.直接尋址 4.寄存器間接尋址 5.寄存器相對尋址 6.基址變址尋址 7.基址變址且相對尋址2010.2.25911立即數(shù)尋址
指令中的操作數(shù)直接存放在指令中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)。可以是8位數(shù)i8(00H~FFH),可以是16位數(shù)i16(0000H~FFFFH)。立即數(shù)尋址方式常用來給寄存器賦值。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個段寄存器SEG:CS/DS/SS/ES2010.2.25933存儲器尋址存儲器尋址:操作數(shù)在存儲器中。指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認的段寄存器中或用段超越前綴指定的段寄存器中。首先獲取操作數(shù)的偏移地址EA
獲取段地址通過計算,來獲取操作數(shù)的物理地址
物理地址=段地址*16+EA2010.2.2594存儲器尋址3直接尋址方式有效地址在指令中直接給出,默認的段地址在DS段寄存器。MOVAX,[2000H] ;AX←DS:[2000H];EA=2000H假如(DS)=3200H,EA=2000H操作數(shù)的物理地址=3200*10H+2000H=34000H2010.2.2595存儲器尋址4寄存器間接尋址方式有效地址EA存放在基址寄存器BX,或變址寄存器SI、DI。段地址對應(yīng):BX/SI/DI寄存器默認是DSMOVAX,[BX]
;AX←DS:[BX] ;EA=(BX)假如(DS)=3200H,(BX)=2000H那么:EA=(BX)=2000H操作數(shù)的物理地址=3200*10H+2000H=34000H2010.2.2596存儲器尋址5寄存器相對尋址方式
有效地址是寄存器內(nèi)容與有符號8位或16位位移量之和,寄存器可以是BX或SI、DI。
有效地址=(BX)/(SI)/(DI)+8/1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年家居用品出口合同
- 班級心理素質(zhì)提升的工作安排計劃
- 《2025年勞動合同續(xù)約協(xié)議書》
- 2025合同違約范本大全案例
- 不負師恩燦爛向陽!課件-高中上學(xué)期主題班會
- 網(wǎng)評文章寫作培訓(xùn)
- 檢修工技能培訓(xùn)
- 廣西河池天峨縣達標名校2024屆中考聯(lián)考數(shù)學(xué)試題含解析
- 2025年貴州貨運從業(yè)資格證考試模擬考試題庫及答案大全
- 2025年貴州貨運從業(yè)資格證摸擬考試試題答案
- 《2025急性冠脈綜合征患者管理指南》解讀 2
- 控?zé)熤R培訓(xùn)課件
- 設(shè)備的技改和更新管理制度
- GB/T 5453-2025紡織品織物透氣性的測定
- 2024慢性鼻竇炎診斷和治療指南解讀課件
- 2025年xx村公益性項目購買材料詢價會議記錄
- 六年級下冊數(shù)學(xué)教案-比例 西師大版
- 抗日英雄人物楊靖宇介紹
- AI驅(qū)動的可持續(xù)能源發(fā)展
- 整本書閱讀《林海雪原》【知識精研】六年級語文下冊 (統(tǒng)編版五四制2024)
- 健康日用品設(shè)計與研發(fā)趨勢
評論
0/150
提交評論