微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)寄存器組存儲(chǔ)器組織ppt課件
《微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)寄存器組存儲(chǔ)器組織ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)寄存器組存儲(chǔ)器組織ppt課件(53頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第二部分 8086/8088微處理器,一、8086/8088CPU的內(nèi)部結(jié)構(gòu) 二、8086/8088的內(nèi)部寄存器 三、8086/8088的存儲(chǔ)器組織 四、微處理器的指令系統(tǒng) 五、8086/8088的引腳及工作摸式 六、時(shí)序與總線周期,1,控制總線,數(shù)據(jù)總線,地址總線,一、 8086/8088CPU的內(nèi)部結(jié)構(gòu),算術(shù)邏輯單元(運(yùn)算器) 寄存器組 指令處理單元(控制器),8位微處理器的內(nèi)部結(jié)構(gòu),2,16位微處理器也具有以上結(jié)構(gòu)中的基本單元,但更為復(fù)雜。 以8088為例講解16位微處理器的功能結(jié)構(gòu)。 8088是8086的簡化版本。 兩個(gè)芯片都是16位微處理器,內(nèi)部運(yùn)算器和寄存器都是16位的,同樣具有20位地址線;8088的外部數(shù)據(jù)總線為8位,而8086為16位,8088/8086的功能結(jié)構(gòu),3,,,,,,,,AH,AL,BH,BL,,CL,,CH,DH,DL,SP,BP,DI,SI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,通 用 寄 存 器,CS,DS,SS,ES,,I P,內(nèi)部通信寄存器,總線,控制,邏輯,1,2,3,4,AX,BX,CX,DX,數(shù)據(jù)總線,暫 存 寄 存 器,A L U,標(biāo)志寄存器,,,,,,,,,,,,,,,,,,,,,,,,,外部總線,指令隊(duì)列,16 位,執(zhí)行,控制,電路,執(zhí)行單元,,,,,,,,,,,,,地址加法器,20 位,,,,,,,,,16 位,段 寄 存 器,指令指針,(EU),,,,,,,,,,,AB,DB,CB,4,8088的編程結(jié)構(gòu)從功能分成兩個(gè)單元 總線接口單元BIU (Bus Interface Unit)——管理8088與系統(tǒng)總線的接口,負(fù)責(zé)CPU對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪問 執(zhí)行單元EU (Execution Unit)——負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算 兩個(gè)單元相互獨(dú)立,分別完成各自操作 兩個(gè)單元可以并行執(zhí)行,實(shí)現(xiàn)指令取指和執(zhí)行的流水線操作,5,并行操作的意義,EU執(zhí)行指令的同時(shí),BIU可以繼續(xù)讀取后續(xù)指令,并存入指令隊(duì)列(first in first out)。這叫做“指令預(yù)取”。 8位的CPU沒有指令預(yù)取功能,執(zhí)行指令前必須等待“取指”操作完成。 取指操作是CPU最頻繁的操作。 這種操作方式節(jié)省了CPU大量的取指等待時(shí)間。 “指令流水線”。,6,二、 8088寄存器結(jié)構(gòu),8088共有8個(gè)的通用寄存器,1個(gè)標(biāo)志寄存器,4個(gè)段寄存器和1個(gè)指令指針寄存器。 1、通用寄存器 ① 數(shù)據(jù)寄存器 共AX、BX、CX、DX四個(gè),每個(gè)寄存器即可作為16位寄存器,又可拆分為兩個(gè)8位寄存器,此時(shí)記為AH、AL、BH、BL等。 AX(AH、AL):累加器accumulator BX(BH、BL):基址寄存器base CX(CH、CL):計(jì)數(shù)寄存器counter DX(DH、DL):數(shù)據(jù)寄存器data,7,②指針和變址寄存器 共BP、SP、SI、DI四個(gè) BP:基址指針寄存器Base Pointer ,默認(rèn)表示堆棧段基地址; SP:堆棧指針寄存器Stack Pointer,指示棧頂 SI:源變址寄存器Source Index DI:目的變址寄存器Destination Index,8,標(biāo)志寄存器(FR)是一個(gè)十六位的寄存器,但只利用了其中的9位:六個(gè)條件標(biāo)志和三個(gè)控制標(biāo)志。,2、標(biāo)志寄存器,中斷標(biāo)志,陷阱標(biāo)志,符號(hào)標(biāo)志,9,進(jìn)位標(biāo)志CF(Carry Flag),當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF = 1;否則 CF=0。 例如(以8位運(yùn)算為例,8088中為16位): 3AH + 7CH=B6H 沒有進(jìn)位:CF=0 AAH + 7CH=(1)26H 有進(jìn)位:CF=1,10,溢出標(biāo)志OF(Overflow Flag),若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則 OF=0。 問題: 什么是溢出? 溢出和進(jìn)位有什么區(qū)別? 處理器怎么處理,程序員如何運(yùn)用? 如何判斷是否溢出?,P30找答案,11,什么是溢出,處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù) 8位表達(dá)的整數(shù)范圍是:+127 ~ -128 16位表達(dá)的范圍是:+32767 ~ -32768 如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出 有溢出,說明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確,12,溢出和進(jìn)位的對(duì)比,例1:3AH+7CH=B6H 無符號(hào)數(shù)運(yùn)算: 58+124=182 范圍內(nèi),無進(jìn)位 有符號(hào)數(shù)運(yùn)算: 58+124=182 范圍外,有溢出,例2:AAH+7CH=(1)26H 無符號(hào)數(shù)運(yùn)算: 170+124=294 范圍外,有進(jìn)位 有符號(hào)數(shù)運(yùn)算: -86+124=28 范圍內(nèi),無溢出,13,處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無符號(hào)數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF 應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。也就是說,如果將參加運(yùn)算的操作數(shù)認(rèn)為是無符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出。,,14,全零標(biāo)志ZF(Zero Flag),若運(yùn)算結(jié)果為全0,則ZF=1,否則ZF=0。 例如: 3AH + 7CH=B6H 結(jié)果不是零:ZF=0 86H + 7CH=00H 結(jié)果是全零:ZF=1,,15,符號(hào)標(biāo)志SF(Sign Flag),運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0。 例如: 3AH + 7CH=B6H 最高位D7=1:SF=1 86H + 7AH=00H 最高位D7=0:SF=0 有符號(hào)數(shù)利用最高有效位(MSB)來表示它的符號(hào)。所以,運(yùn)算結(jié)果的MSB與符號(hào)標(biāo)志SF相一致。,(1),,16,奇偶標(biāo)志PF(Parity Flag),當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF=1;否則PF=0(奇校驗(yàn))。 例如: 3AH + 7CH=B6H=10110110B, 結(jié)果中有5個(gè)1,是奇數(shù),則 PF=0 注意:PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)是偶或奇,即使是進(jìn)行16位字操作。,17,輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag),運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF=1;否則AF=0。 這個(gè)標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算的調(diào)整,用戶一般不必關(guān)心。,,18,方向標(biāo)志DF(Direction Flag),用于串操作指令中,控制地址的變化方向: 設(shè)置DF=0,串操作后存儲(chǔ)器地址自動(dòng)增量(增址) ; 設(shè)置DF=1,串操作后存儲(chǔ)器地址自動(dòng)減量(減址) 。,串:存儲(chǔ)器中一序列字或字節(jié)單元,串操作——對(duì)序列字或字節(jié)單元中的內(nèi)容進(jìn)行某種操作 ,比如:將一個(gè)字符串從源區(qū)傳送到目的區(qū) 。 MOVS——串傳送指令 CMPS——串比較指令 SCAS——串掃描指令 LODS——裝入串指令 STOS——存儲(chǔ)串指令,19,中斷允許標(biāo)志IF(Interrupt-enable Flag),用于控制外部可屏蔽中斷是否可以被處理器響應(yīng): 設(shè)置IF=1,則允許中斷; 設(shè)置IF=0,則禁止中斷。 CLI 指令復(fù)位中斷標(biāo)志:IF=0 STI 指令置位中斷標(biāo)志:IF=1,,20,陷阱標(biāo)志TF(Trap Flag),用于控制處理器是否進(jìn)入單步執(zhí)行方式: 設(shè)置TF=0,處理器正常工作; 設(shè)置TF=1,處理器每執(zhí)行一條指令就中斷一次,中斷編號(hào)為 1 (稱單步中斷), TF 也被稱為單步標(biāo)志。 單步執(zhí)行和單步調(diào)試 利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試。 這種逐條指令調(diào)試程序的方法就是單步調(diào)試。,,21,,22,3、段寄存器(CS、DS、SS、ES) 在8088可尋址的1MB內(nèi)存空間中,可以存在四種分工不同的邏輯段:代碼段、數(shù)據(jù)段、堆棧段和附加段。 段寄存器即是存放各個(gè)邏輯段段首地址的寄存器。,23,存儲(chǔ)器的分段管理,8088有20條地址線, 最大可尋址空間為 220=1MB, 可尋址的地址范圍為 00000H~FFFFFH 該地址稱物理地址 硬件用20位的物理地址來對(duì)存儲(chǔ)單元進(jìn)行尋址,24,存儲(chǔ)器的分段管理,由于8088中的地址寄存器都是16位的,用戶不能直接使用20位的物理地址,編程時(shí)需要使用邏輯地址來尋址存儲(chǔ)單元。 邏輯地址由兩個(gè)16位數(shù)構(gòu)成,其形式為: 段的起始地址 : 段內(nèi)的偏移地址 (16位段地址) :( 16位偏移量),分隔符,物理地址 14700H 邏輯地址 1460H:100H,25,地址加法器 將16位的邏輯地址轉(zhuǎn)換為20位的物理地址,具體操作過程為:先將段寄存器提供的16位段地址左移四位,低位補(bǔ)0,恢復(fù)為20位地址,然后與由各種尋址方式提供的16位偏移地址相加,即得到20位的物理地址。,邏輯地址,26,物理地址: 20 位 邏輯地址: 段基址 (段寄存器的內(nèi)容)16位 偏移地址(字節(jié)距離)16位,,+,,邏輯地址,27,存儲(chǔ)器的分段管理,,邏輯地址的表示——段地址:偏移地址,地址偏移量(xxxxH),段首(xxxx0H),低址,,,,,,段尾,,某 邏 輯 段,某尋址單元,28,段地址說明邏輯段在存儲(chǔ)器中的起始位置,為模16地址:xxxx0H,省略低4位后,可用1個(gè)16位數(shù)來表示,該地址可被存放在不同的段寄存器CS/SS/DS/ES中。 偏移地址說明尋址單元距離段首的偏移量,因每段長度不超過64KB,所以偏移地址也可用1個(gè)16位數(shù)來表示。,存儲(chǔ)器的分段管理,29,存儲(chǔ)器的分段管理,一個(gè)存儲(chǔ)單元可以擁有多個(gè)邏輯地址,但只可能擁有一個(gè)唯一的物理地址。,邏輯地址 1460:100、1380:F00 物理地址 14700H 14700H,30,如何分配各個(gè)邏輯段,程序的指令序列必須安排在代碼段; 程序使用的堆棧一定在堆棧段; 程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。 數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中。,31,段跨越前綴指令,沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段; 若使用BP訪問存儲(chǔ)器,則在SS段。 默認(rèn)的情況允許改變,需要使用段跨越前綴指令,8088指令系統(tǒng)中共有4個(gè): CS: ——代碼段超越,使用代碼段的數(shù)據(jù) SS: ——堆棧段超越,使用堆棧段的數(shù)據(jù) DS: ——數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù) ES: ——附加段超越,使用附加段的數(shù)據(jù),32,段超越的例子,沒有段超越的指令實(shí)例: MOV AX, [2000H] ;AX←DS:[2000H], ;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù) 采用段超越前綴的指令實(shí)例: MOV AX, ES:[2000H] ;AX←ES:[2000H], ;從指定的ES附加段取出數(shù)據(jù),33,段寄存器的使用規(guī)定(表2.1),存儲(chǔ)器訪問方式 默認(rèn)段寄存器 段超越 偏移地址 取指令 CS 無 IP 堆棧操作 SS 無 SP 一般數(shù)據(jù)訪問 DS CS/ES/SS 有效地址EA 下列特殊情況除外 串操作的源操作數(shù) DS CS/ES/SS SI 串操作的目的操作數(shù) ES 無 DI BP基址的尋址方式 SS CS/DS/ES 有效地址EA,,,,,,,,,34,IP(Instruction Pointer)中存放即將要執(zhí)行的指令的有效地址,IP具有自增量功能。在每取出一條指令后,IP自增一,指令指針指向下一條指令。,4、指令指針寄存器(IP ),35,總結(jié)一下:,通用寄存器 8 AX/BX/CX/DX BP/SP DI/SI 指令指針寄存器 1 IP 標(biāo)志寄存器 1 PSW 段寄存器 4 CS/SS/DS/ES 掌握通用寄存器的作用 熟悉PSW中各個(gè)標(biāo)志的含義 切實(shí)理解存儲(chǔ)器組織和存儲(chǔ)空間分段的概念,36,8088的寄存器組,37,堆棧的概念,堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。 它采用先進(jìn)后出FILO(First In Last Out)或后進(jìn)先出LIFO(Last In First Out)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。 堆棧指針——它指示棧頂位置,在8086/8086中,棧頂由SS和SP共同指示,即SS:SP。 堆棧操作 處理器自動(dòng)維持(子程序調(diào)用時(shí)的斷點(diǎn)處理) 用戶操作(PUSH/POP指令),,38,三、 8088/8086的存儲(chǔ)器結(jié)構(gòu),存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)存儲(chǔ)格式,以及存儲(chǔ)器的分段管理對(duì)以后的匯編程序設(shè)計(jì)非常重要 你能區(qū)別寄存器、存儲(chǔ)器(主存)、外存(包括硬盤、光盤、磁帶等存儲(chǔ)介質(zhì))嗎?,39,寄存器、存儲(chǔ)器和外存的區(qū)別,寄存器是微處理器(CPU)內(nèi)部暫存數(shù)據(jù)的存儲(chǔ)單元,以名稱表示,例如:AX,BX….等 存儲(chǔ)器也就是平時(shí)所說的主存,也叫內(nèi)存,可直接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別 外存主要指用來長久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),常見的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)只能通過主存間接地與CPU交換數(shù)據(jù) 程序及其數(shù)據(jù)可以長久存放在外存,在運(yùn)行需要時(shí)才進(jìn)入主存,40,2.5 8086/8088的存儲(chǔ)器結(jié)構(gòu),數(shù)據(jù)的存儲(chǔ)格式 計(jì)算機(jī)中表示信息的單位有: 位(bit)、字節(jié)(byte)、 字(word)、雙字(double word)等 在存儲(chǔ)器中,信息的存儲(chǔ)單位是:字節(jié);即每個(gè)存儲(chǔ)單元的內(nèi)容是一個(gè)字節(jié)。,41,信息的表示單位,最低有效位LSB(Least Significant Bit):指數(shù)據(jù)的最低位,即D0位; 最高有效位MSB(Most Significant Bit):指數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、字、雙字分別指D7、D15、D31位。,42,圖2.3 8088的存儲(chǔ)格式,00000H,,00001H,,00002H,00003H,00004H,00005H,00006H,,,D7 D0,,,,,,,,,,低地址,,,,43,存儲(chǔ)單元及其存儲(chǔ)內(nèi)容,每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào)——存儲(chǔ)器地址 例如:圖2.3(下頁)中,0002H單元存放有一個(gè)數(shù)據(jù)34H,表示為 [0002H]=34H 如何存儲(chǔ)一個(gè)字或雙字呢?,小端方式,44,多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占據(jù)多個(gè)連續(xù)的存儲(chǔ)單元: 存放時(shí),低字節(jié)存于低地址,高字節(jié)存于高地址; 多字節(jié)數(shù)據(jù)占據(jù)的地址空間用它的低地址來表示。 例如:圖2.3中, 2號(hào)“字”單元: [ 0002H ] = 1234H 2號(hào)“雙字”單元: [ 0002H ] = 78561234H 80x86處理器的“低對(duì)低、高對(duì)高”的存儲(chǔ)形式,被稱為“小端方式(little endian)”。 相對(duì)應(yīng)還存在“大端方式(Big Endian)”。,45,地址對(duì)齊,同一個(gè)存儲(chǔ)器地址可以表示:字節(jié)單元地址、字單元地址、雙字單元地址等等(視指令的具體情況)。 將字單元安排在偶地址(xx…xx0 B),將雙字單元安排在模4地址(xx…xx00 B)的做法,被稱為“地址對(duì)齊(Align)”。 對(duì)于地址不對(duì)齊的數(shù)據(jù),處理器訪問時(shí),需要付出額外的訪問時(shí)間。要取得較高的存取速度,應(yīng)該將數(shù)據(jù)的地址對(duì)齊。,46,程序分段的圖例(圖2.4),8088對(duì)邏輯段的要求是: 只能從模16地址開始一個(gè)段,即段地址低4位均為0,為xxxx0H形式;省略最低四位0,即可用16位的段寄存器存儲(chǔ)。每段最大不超過64KB。 8088對(duì)每個(gè)段不要求必須是64KB,不要求各段之間完全分開、即可以重疊。 圖2.4a是各自獨(dú)立段的分配示例 圖2.4b是相互重疊段的分配示例 1MB空間最多能分成多少個(gè)段? 1MB空間最少能分成多少個(gè)段?,47,1MB空間的分段,1MB空間最多能分成多少個(gè)邏輯段? 每隔16個(gè)存儲(chǔ)單元就可以開始一個(gè)段,所以1MB最多可以有: 220÷16=216=64K 個(gè)段 1MB空間最少能分成多少個(gè)邏輯段? 每隔64K個(gè)存儲(chǔ)單元開始一個(gè)段,所以1MB最少可以有: 220÷216=16 個(gè)段,,48,圖2.4a 各個(gè)邏輯段獨(dú)立的實(shí)例,,49,圖2.4b 各個(gè)邏輯段重疊的實(shí)例,,50,2.2節(jié)的總結(jié),8088有8個(gè)8位通用寄存器、8個(gè)16位通用寄存器 8088有6個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志 8088將1MB存儲(chǔ)空間分段管理,有4個(gè)段寄存器,對(duì)應(yīng)4種邏輯段 。,51,第2章:作業(yè),習(xí)題2(第57 頁 ): 2.1,2.3,2.4,2.5,2.6,52,,,53,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 微機(jī) 原理 8088 CPU 內(nèi)部結(jié)構(gòu) 寄存器 存儲(chǔ)器 組織 ppt 課件
鏈接地址:http://www.hcyjhs8.com/p-1819465.html