微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)、寄存器組、存儲(chǔ)器組織課件_第1頁(yè)
微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)、寄存器組、存儲(chǔ)器組織課件_第2頁(yè)
微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)、寄存器組、存儲(chǔ)器組織課件_第3頁(yè)
微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)、寄存器組、存儲(chǔ)器組織課件_第4頁(yè)
微機(jī)原理2-1:8088CPU內(nèi)部結(jié)構(gòu)、寄存器組、存儲(chǔ)器組織課件_第5頁(yè)
已閱讀5頁(yè),還剩91頁(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)介

第二部分8086/8088微處理器

一、8086/8088CPU的內(nèi)部結(jié)構(gòu)二、8086/8088的內(nèi)部寄存器三、8086/8088的存儲(chǔ)器組織

四、微處理器的指令系統(tǒng)五、8086/8088的引腳及工作摸式六、時(shí)序與總線周期

第二部分8086/8088微處理器一、802控制總線數(shù)據(jù)總線地址總線內(nèi)部數(shù)據(jù)總線暫存器累加器ALU標(biāo)志寄存器指令寄存指令譯碼時(shí)序和控制邏輯通用寄存器組地址寄存器組地址總線控制數(shù)據(jù)總線控制一、8086/8088CPU的內(nèi)部結(jié)構(gòu)算術(shù)邏輯單元(運(yùn)算器)寄存器組指令處理單元(控制器)8位微處理器的內(nèi)部結(jié)構(gòu)2控制總線數(shù)據(jù)總線地址總線內(nèi)部數(shù)據(jù)總線暫存器累加器ALU標(biāo)志316位微處理器也具有以上結(jié)構(gòu)中的基本單元,但更為復(fù)雜。以8088為例講解16位微處理器的功能結(jié)構(gòu)。8088是8086的簡(jiǎn)化版本。兩個(gè)芯片都是16位微處理器,內(nèi)部運(yùn)算器和寄存器都是16位的,同樣具有20位地址線;8088的外部數(shù)據(jù)總線為8位,而8086為16位8088/8086的功能結(jié)構(gòu)316位微處理器也具有以上結(jié)構(gòu)中的基本單元,但更為復(fù)雜。80

AH

ALBH

BL

CL

CH

DH

DLSPBPDISI通用寄存器

CSDSSSES

IP內(nèi)部通信寄存器總線控制邏輯1234AXBXCXDX數(shù)據(jù)總線暫存寄存器ALU標(biāo)志寄存器外部總線指令隊(duì)列16位執(zhí)行控制電路執(zhí)行單元地址加法器20位16位

段寄存器指令指針(EU)總線接口單元(BIU)ABDBCBAHALBHBLCLCHDH58088的編程結(jié)構(gòu)從功能分成兩個(gè)單元總線接口單元BIU(BusInterfaceUnit)——管理8088與系統(tǒng)總線的接口,負(fù)責(zé)CPU對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪問(wèn)執(zhí)行單元EU(ExecutionUnit)——負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算兩個(gè)單元相互獨(dú)立,分別完成各自操作兩個(gè)單元可以并行執(zhí)行,實(shí)現(xiàn)指令取指和執(zhí)行的流水線操作58088的編程結(jié)構(gòu)從功能分成兩個(gè)單元6并行操作的意義EU執(zhí)行指令的同時(shí),BIU可以繼續(xù)讀取后續(xù)指令,并存入指令隊(duì)列(firstinfirstout)。這叫做“指令預(yù)取”。8位的CPU沒(méi)有指令預(yù)取功能,執(zhí)行指令前必須等待“取指”操作完成。取指操作是CPU最頻繁的操作。這種操作方式節(jié)省了CPU大量的取指等待時(shí)間?!爸噶盍魉€”。6并行操作的意義EU執(zhí)行指令的同時(shí),BIU可以繼續(xù)讀取后續(xù)指7二、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ù)寄存器data7二、8088寄存器結(jié)構(gòu) 8088共有8個(gè)的通用寄8 ②指針和變址寄存器 共BP、SP、SI、DI四個(gè)BP:基址指針寄存器BasePointer,默認(rèn)表示堆棧段基地址; SP:堆棧指針寄存器StackPointer,指示棧頂 SI:源變址寄存器SourceIndex DI:目的變址寄存器DestinationIndex

8 ②指針和變址寄存器9

標(biāo)志寄存器(FR)是一個(gè)十六位的寄存器,但只利用了其中的9位:六個(gè)條件標(biāo)志和三個(gè)控制標(biāo)志。

FR的格式

CF

PF

AF

ZF

SF

TFIFDFOF0123456789101112131415校驗(yàn)進(jìn)位

輔助進(jìn)位零標(biāo)志方向標(biāo)志溢出標(biāo)志2、標(biāo)志寄存器中斷標(biāo)志陷阱標(biāo)志符號(hào)標(biāo)志9FR的格式CFPFAF10進(jìn)位標(biāo)志CF(CarryFlag)當(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 沒(méi)有進(jìn)位:CF=0AAH+7CH=(1)26H 有進(jìn)位:CF=110進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運(yùn)算結(jié)果的最高有效11溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則OF=0。問(wèn)題:什么是溢出?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運(yùn)用?如何判斷是否溢出?P30找答案11溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)12什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)8位表達(dá)的整數(shù)范圍是:+127~-12816位表達(dá)的范圍是:+32767~-32768如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確12什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)13溢出和進(jìn)位的對(duì)比例1:3AH+7CH=B6H無(wú)符號(hào)數(shù)運(yùn)算: 58+124=182

范圍內(nèi),無(wú)進(jìn)位有符號(hào)數(shù)運(yùn)算: 58+124=182

范圍外,有溢出例2:AAH+7CH=(1)26H無(wú)符號(hào)數(shù)運(yùn)算: 170+124=294

范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算: -86+124=28

范圍內(nèi),無(wú)溢出13溢出和進(jìn)位的對(duì)比例1:3AH+7CH=B6H例2:AAH14處理器對(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īng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出。14處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào)數(shù)求得結(jié)果,并相15全零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為全0,則ZF=1,否則ZF=0。 例如:3AH+7CH=B6H 結(jié)果不是零:ZF=086H+7CH=00H 結(jié)果是全零:ZF=115全零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為全0,則Z16符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH+7CH=B6H 最高位D7=1:SF=186H+7AH=00H 最高位D7=0:SF=0

有符號(hào)數(shù)利用最高有效位(MSB)來(lái)表示它的符號(hào)。所以,運(yùn)算結(jié)果的MSB與符號(hào)標(biāo)志SF相一致。(1)16符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則17奇偶標(biāo)志PF(ParityFlag)當(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奇偶標(biāo)志PF(ParityFlag)當(dāng)運(yùn)算結(jié)果最低字節(jié)18輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFlag)運(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輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFla19方向標(biāo)志DF(DirectionFlag)用于串操作指令中,控制地址的變化方向:設(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)志DF(DirectionFlag)用于串操作指20中斷允許標(biāo)志IF(Interrupt-enableFlag)用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF=1,則允許中斷;設(shè)置IF=0,則禁止中斷。CLI指令復(fù)位中斷標(biāo)志:IF=0STI指令置位中斷標(biāo)志:IF=120中斷允許標(biāo)志IF(Interrupt-enableFl21陷阱標(biāo)志TF(TrapFlag)用于控制處理器是否進(jìn)入單步執(zhí)行方式:設(shè)置TF=0,處理器正常工作;設(shè)置TF=1,處理器每執(zhí)行一條指令就中斷一次,中斷編號(hào)為1(稱單步中斷),TF

也被稱為單步標(biāo)志。單步執(zhí)行和單步調(diào)試?yán)脝尾街袛嗫蓪?duì)程序進(jìn)行逐條指令的調(diào)試。這種逐條指令調(diào)試程序的方法就是單步調(diào)試。21陷阱標(biāo)志TF(TrapFlag)用于控制處理器是否進(jìn)入22OF111512DF10IF9TF8SF7ZF65AF43PF21CF0控制反映結(jié)果狀態(tài)反應(yīng)運(yùn)算過(guò)程22OF111512DF10IF9TF8SF7Z23

3、段寄存器(CS、DS、SS、ES) 在8088可尋址的1MB內(nèi)存空間中,可以存在四種分工不同的邏輯段:代碼段、數(shù)據(jù)段、堆棧段和附加段。 段寄存器即是存放各個(gè)邏輯段段首地址的寄存器。23 3、段寄存器(CS、DS、SS、ES)24存儲(chǔ)器的分段管理8088有20條地址線,最大可尋址空間為220=1MB,可尋址的地址范圍為00000H~FFFFFH該地址稱物理地址硬件用20位的物理地址來(lái)對(duì)存儲(chǔ)單元進(jìn)行尋址24存儲(chǔ)器的分段管理8088有20條地址線,25存儲(chǔ)器的分段管理由于8088中的地址寄存器都是16位的,用戶不能直接使用20位的物理地址,編程時(shí)需要使用邏輯地址來(lái)尋址存儲(chǔ)單元。邏輯地址由兩個(gè)16位數(shù)構(gòu)成,其形式為:

段的起始地址:

段內(nèi)的偏移地址(16位段地址):(16位偏移量)分隔符物理地址14700H邏輯地址1460H:100H25存儲(chǔ)器的分段管理由于8088中的地址寄存器都是16位的,26

地址加法器

將16位的邏輯地址轉(zhuǎn)換為20位的物理地址,具體操作過(guò)程為:先將段寄存器提供的16位段地址左移四位,低位補(bǔ)0,恢復(fù)為20位地址,然后與由各種尋址方式提供的16位偏移地址相加,即得到20位的物理地址。邏輯地址26 地址加法器 邏輯地址27物理地址:20位邏輯地址:段基址(段寄存器的內(nèi)容)16位偏移地址(字節(jié)距離)16位段基址16位偏移地址16位物理地址20位0000+邏輯地址27物理地址:20位段基址16位偏28存儲(chǔ)器的分段管理邏輯地址的表示——段地址:偏移地址地址偏移量(xxxxH)段首(xxxx0H)低址段尾某邏輯段某尋址單元28存儲(chǔ)器的分段管理邏輯地址的表示——段地址:偏移地址地址偏29段地址說(shuō)明邏輯段在存儲(chǔ)器中的起始位置,為模16地址:xxxx0H,省略低4位后,可用1個(gè)16位數(shù)來(lái)表示,該地址可被存放在不同的段寄存器CS/SS/DS/ES中。偏移地址說(shuō)明尋址單元距離段首的偏移量,因每段長(zhǎng)度不超過(guò)64KB,所以偏移地址也可用1個(gè)16位數(shù)來(lái)表示。存儲(chǔ)器的分段管理29段地址說(shuō)明邏輯段在存儲(chǔ)器中的起始位置,為模16地址:xx30存儲(chǔ)器的分段管理一個(gè)存儲(chǔ)單元可以擁有多個(gè)邏輯地址,但只可能擁有一個(gè)唯一的物理地址。邏輯地址 1460:100、1380:F00物理地址 14700H14700H30存儲(chǔ)器的分段管理一個(gè)存儲(chǔ)單元可以擁有多個(gè)邏輯地址,但只可31如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中。31如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段;32段跨越前綴指令沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;若使用BP訪問(wèn)存儲(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段跨越前綴指令沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;33段超越的例子沒(méi)有段超越的指令實(shí)例:MOVAX,[2000H] ;AX←DS:[2000H],;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:MOVAX,ES:[2000H] ;AX←ES:[2000H],;從指定的ES附加段取出數(shù)據(jù)33段超越的例子沒(méi)有段超越的指令實(shí)例:34段寄存器的使用規(guī)定(表2.1)存儲(chǔ)器訪問(wèn)方式 默認(rèn)段寄存器 段超越 偏移地址取指令 CS 無(wú) IP堆棧操作 SS 無(wú) SP一般數(shù)據(jù)訪問(wèn) DS CS/ES/SS 有效地址EA下列特殊情況除外串操作的源操作數(shù) DS CS/ES/SS SI串操作的目的操作數(shù)ES 無(wú) DIBP基址的尋址方式 SS CS/DS/ES 有效地址EA34段寄存器的使用規(guī)定(表2.1)存儲(chǔ)器訪問(wèn)方式 默認(rèn)段寄存35

IP(InstructionPointer)中存放即將要執(zhí)行的指令的有效地址,IP具有自增量功能。在每取出一條指令后,IP自增一,指令指針指向下一條指令。4、指令指針寄存器(IP)35 IP(InstructionPointer)中存放36總結(jié)一下:通用寄存器

8 AX/BX/CX/DX BP/SPDI/SI

指令指針寄存器 1 IP

標(biāo)志寄存器 1 PSW段寄存器 4 CS/SS/DS/ES

掌握通用寄存器的作用熟悉PSW中各個(gè)標(biāo)志的含義切實(shí)理解存儲(chǔ)器組織和存儲(chǔ)空間分段的概念36總結(jié)一下:通用寄存器 8 AX/BX/CX/DX378088的寄存器組378088的寄存器組38堆棧的概念堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。它采用先進(jìn)后出FILO(FirstInLastOut)或后進(jìn)先出LIFO(LastInFirstOut)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。堆棧指針——它指示棧頂位置,在8086/8086中,棧頂由SS和SP共同指示,即SS:SP。堆棧操作處理器自動(dòng)維持(子程序調(diào)用時(shí)的斷點(diǎn)處理)用戶操作(PUSH/POP指令)38堆棧的概念堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。39三、8088/8086的存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)存儲(chǔ)格式,以及存儲(chǔ)器的分段管理對(duì)以后的匯編程序設(shè)計(jì)非常重要你能區(qū)別寄存器、存儲(chǔ)器(主存)、外存(包括硬盤、光盤、磁帶等存儲(chǔ)介質(zhì))嗎?39三、8088/8086的存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)40寄存器、存儲(chǔ)器和外存的區(qū)別寄存器是微處理器(CPU)內(nèi)部暫存數(shù)據(jù)的存儲(chǔ)單元,以名稱表示,例如:AX,BX..….等存儲(chǔ)器也就是平時(shí)所說(shuō)的主存,也叫內(nèi)存,可直接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別外存主要指用來(lái)長(zhǎng)久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),常見(jiàn)的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)只能通過(guò)主存間接地與CPU交換數(shù)據(jù)程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在運(yùn)行需要時(shí)才進(jìn)入主存40寄存器、存儲(chǔ)器和外存的區(qū)別寄存器是微處理器(CPU)內(nèi)部412.58086/8088的存儲(chǔ)器結(jié)構(gòu)

數(shù)據(jù)的存儲(chǔ)格式計(jì)算機(jī)中表示信息的單位有:位(bit)、字節(jié)(byte)、字(word)、雙字(doubleword)等在存儲(chǔ)器中,信息的存儲(chǔ)單位是:字節(jié);即每個(gè)存儲(chǔ)單元的內(nèi)容是一個(gè)字節(jié)。412.58086/8088的存儲(chǔ)器結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)格42信息的表示單位最低有效位LSB(LeastSignificantBit):指數(shù)據(jù)的最低位,即D0位;最高有效位MSB(MostSignificantBit):指數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、字、雙字分別指D7、D15、D31位。42信息的表示單位最低有效位LSB(LeastSignif43圖2.38088的存儲(chǔ)格式00000H00001H00002H00003H00004H00005H34H12H56H78H00006HD7D0低地址雙字D0D31字D0D15字節(jié)D0D7LSBMSB43圖2.38088的存儲(chǔ)格式00000H00001H044存儲(chǔ)單元及其存儲(chǔ)內(nèi)容每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào)——存儲(chǔ)器地址例如:圖2.3(下頁(yè))中,0002H單元存放有一個(gè)數(shù)據(jù)34H,表示為[0002H]=34H如何存儲(chǔ)一個(gè)字或雙字呢?小端方式44存儲(chǔ)單元及其存儲(chǔ)內(nèi)容每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào)——存儲(chǔ)器地45多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占據(jù)多個(gè)連續(xù)的存儲(chǔ)單元:存放時(shí),低字節(jié)存于低地址,高字節(jié)存于高地址;多字節(jié)數(shù)據(jù)占據(jù)的地址空間用它的低地址來(lái)表示。例如:圖2.3中,2號(hào)“字”單元: [0002H]=1234H 2號(hào)“雙字”單元: [0002H]=78561234H80x86處理器的“低對(duì)低、高對(duì)高”的存儲(chǔ)形式,被稱為“小端方式(littleendian)”。相對(duì)應(yīng)還存在“大端方式(BigEndian)”。45多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占據(jù)多個(gè)連續(xù)的存儲(chǔ)單元:46地址對(duì)齊同一個(gè)存儲(chǔ)器地址可以表示:字節(jié)單元地址、字單元地址、雙字單元地址等等(視指令的具體情況)。

將字單元安排在偶地址(xx…xx0B),將雙字單元安排在模4地址(xx…xx00B)的做法,被稱為“地址對(duì)齊(Align)”。

對(duì)于地址不對(duì)齊的數(shù)據(jù),處理器訪問(wèn)時(shí),需要付出額外的訪問(wèn)時(shí)間。要取得較高的存取速度,應(yīng)該將數(shù)據(jù)的地址對(duì)齊。46地址對(duì)齊同一個(gè)存儲(chǔ)器地址可以表示:字47程序分段的圖例(圖2.4)8088對(duì)邏輯段的要求是: 只能從模16地址開(kāi)始一個(gè)段,即段地址低4位均為0,為xxxx0H形式;省略最低四位0,即可用16位的段寄存器存儲(chǔ)。每段最大不超過(guò)64KB。8088對(duì)每個(gè)段不要求必須是64KB,不要求各段之間完全分開(kāi)、即可以重疊。圖2.4a是各自獨(dú)立段的分配示例圖2.4b是相互重疊段的分配示例1MB空間最多能分成多少個(gè)段?1MB空間最少能分成多少個(gè)段?47程序分段的圖例(圖2.4)8088對(duì)邏輯段的要求是:481MB空間的分段1MB空間最多能分成多少個(gè)邏輯段?

每隔16個(gè)存儲(chǔ)單元就可以開(kāi)始一個(gè)段,所以1MB最多可以有:220÷16=216=64K個(gè)段1MB空間最少能分成多少個(gè)邏輯段?

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

個(gè)段481MB空間的分段1MB空間最多能分成多少個(gè)邏輯段?49圖2.4a各個(gè)邏輯段獨(dú)立的實(shí)例49圖2.4a各個(gè)邏輯段獨(dú)立的實(shí)例50圖2.4b各個(gè)邏輯段重疊的實(shí)例50圖2.4b各個(gè)邏輯段重疊的實(shí)例512.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種邏輯段。512.2節(jié)的總結(jié)8088有8個(gè)8位通用寄存器、8個(gè)16位通52第2章:作業(yè)習(xí)題2(第57頁(yè)):

2.1,2.3,2.4,2.5,2.652第2章:作業(yè)習(xí)題2(第57頁(yè)):5353第二部分8086/8088微處理器

一、8086/8088CPU的內(nèi)部結(jié)構(gòu)二、8086/8088的內(nèi)部寄存器三、8086/8088的存儲(chǔ)器組織

四、微處理器的指令系統(tǒng)五、8086/8088的引腳及工作摸式六、時(shí)序與總線周期

第二部分8086/8088微處理器一、8055控制總線數(shù)據(jù)總線地址總線內(nèi)部數(shù)據(jù)總線暫存器累加器ALU標(biāo)志寄存器指令寄存指令譯碼時(shí)序和控制邏輯通用寄存器組地址寄存器組地址總線控制數(shù)據(jù)總線控制一、8086/8088CPU的內(nèi)部結(jié)構(gòu)算術(shù)邏輯單元(運(yùn)算器)寄存器組指令處理單元(控制器)8位微處理器的內(nèi)部結(jié)構(gòu)2控制總線數(shù)據(jù)總線地址總線內(nèi)部數(shù)據(jù)總線暫存器累加器ALU標(biāo)志5616位微處理器也具有以上結(jié)構(gòu)中的基本單元,但更為復(fù)雜。以8088為例講解16位微處理器的功能結(jié)構(gòu)。8088是8086的簡(jiǎn)化版本。兩個(gè)芯片都是16位微處理器,內(nèi)部運(yùn)算器和寄存器都是16位的,同樣具有20位地址線;8088的外部數(shù)據(jù)總線為8位,而8086為16位8088/8086的功能結(jié)構(gòu)316位微處理器也具有以上結(jié)構(gòu)中的基本單元,但更為復(fù)雜。80

AH

ALBH

BL

CL

CH

DH

DLSPBPDISI通用寄存器

CSDSSSES

IP內(nèi)部通信寄存器總線控制邏輯1234AXBXCXDX數(shù)據(jù)總線暫存寄存器ALU標(biāo)志寄存器外部總線指令隊(duì)列16位執(zhí)行控制電路執(zhí)行單元地址加法器20位16位

段寄存器指令指針(EU)總線接口單元(BIU)ABDBCBAHALBHBLCLCHDH588088的編程結(jié)構(gòu)從功能分成兩個(gè)單元總線接口單元BIU(BusInterfaceUnit)——管理8088與系統(tǒng)總線的接口,負(fù)責(zé)CPU對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪問(wèn)執(zhí)行單元EU(ExecutionUnit)——負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算兩個(gè)單元相互獨(dú)立,分別完成各自操作兩個(gè)單元可以并行執(zhí)行,實(shí)現(xiàn)指令取指和執(zhí)行的流水線操作58088的編程結(jié)構(gòu)從功能分成兩個(gè)單元59并行操作的意義EU執(zhí)行指令的同時(shí),BIU可以繼續(xù)讀取后續(xù)指令,并存入指令隊(duì)列(firstinfirstout)。這叫做“指令預(yù)取”。8位的CPU沒(méi)有指令預(yù)取功能,執(zhí)行指令前必須等待“取指”操作完成。取指操作是CPU最頻繁的操作。這種操作方式節(jié)省了CPU大量的取指等待時(shí)間。“指令流水線”。6并行操作的意義EU執(zhí)行指令的同時(shí),BIU可以繼續(xù)讀取后續(xù)指60二、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ù)寄存器data7二、8088寄存器結(jié)構(gòu) 8088共有8個(gè)的通用寄61 ②指針和變址寄存器 共BP、SP、SI、DI四個(gè)BP:基址指針寄存器BasePointer,默認(rèn)表示堆棧段基地址; SP:堆棧指針寄存器StackPointer,指示棧頂 SI:源變址寄存器SourceIndex DI:目的變址寄存器DestinationIndex

8 ②指針和變址寄存器62

標(biāo)志寄存器(FR)是一個(gè)十六位的寄存器,但只利用了其中的9位:六個(gè)條件標(biāo)志和三個(gè)控制標(biāo)志。

FR的格式

CF

PF

AF

ZF

SF

TFIFDFOF0123456789101112131415校驗(yàn)進(jìn)位

輔助進(jìn)位零標(biāo)志方向標(biāo)志溢出標(biāo)志2、標(biāo)志寄存器中斷標(biāo)志陷阱標(biāo)志符號(hào)標(biāo)志9FR的格式CFPFAF63進(jìn)位標(biāo)志CF(CarryFlag)當(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 沒(méi)有進(jìn)位:CF=0AAH+7CH=(1)26H 有進(jìn)位:CF=110進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運(yùn)算結(jié)果的最高有效64溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則OF=0。問(wèn)題:什么是溢出?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運(yùn)用?如何判斷是否溢出?P30找答案11溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)65什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)8位表達(dá)的整數(shù)范圍是:+127~-12816位表達(dá)的范圍是:+32767~-32768如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確12什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)66溢出和進(jìn)位的對(duì)比例1:3AH+7CH=B6H無(wú)符號(hào)數(shù)運(yùn)算: 58+124=182

范圍內(nèi),無(wú)進(jìn)位有符號(hào)數(shù)運(yùn)算: 58+124=182

范圍外,有溢出例2:AAH+7CH=(1)26H無(wú)符號(hào)數(shù)運(yùn)算: 170+124=294

范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算: -86+124=28

范圍內(nèi),無(wú)溢出13溢出和進(jìn)位的對(duì)比例1:3AH+7CH=B6H例2:AAH67處理器對(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īng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出。14處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào)數(shù)求得結(jié)果,并相68全零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為全0,則ZF=1,否則ZF=0。 例如:3AH+7CH=B6H 結(jié)果不是零:ZF=086H+7CH=00H 結(jié)果是全零:ZF=115全零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為全0,則Z69符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH+7CH=B6H 最高位D7=1:SF=186H+7AH=00H 最高位D7=0:SF=0

有符號(hào)數(shù)利用最高有效位(MSB)來(lái)表示它的符號(hào)。所以,運(yùn)算結(jié)果的MSB與符號(hào)標(biāo)志SF相一致。(1)16符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則70奇偶標(biāo)志PF(ParityFlag)當(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奇偶標(biāo)志PF(ParityFlag)當(dāng)運(yùn)算結(jié)果最低字節(jié)71輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFlag)運(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輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFla72方向標(biāo)志DF(DirectionFlag)用于串操作指令中,控制地址的變化方向:設(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)志DF(DirectionFlag)用于串操作指73中斷允許標(biāo)志IF(Interrupt-enableFlag)用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF=1,則允許中斷;設(shè)置IF=0,則禁止中斷。CLI指令復(fù)位中斷標(biāo)志:IF=0STI指令置位中斷標(biāo)志:IF=120中斷允許標(biāo)志IF(Interrupt-enableFl74陷阱標(biāo)志TF(TrapFlag)用于控制處理器是否進(jìn)入單步執(zhí)行方式:設(shè)置TF=0,處理器正常工作;設(shè)置TF=1,處理器每執(zhí)行一條指令就中斷一次,中斷編號(hào)為1(稱單步中斷),TF

也被稱為單步標(biāo)志。單步執(zhí)行和單步調(diào)試?yán)脝尾街袛嗫蓪?duì)程序進(jìn)行逐條指令的調(diào)試。這種逐條指令調(diào)試程序的方法就是單步調(diào)試。21陷阱標(biāo)志TF(TrapFlag)用于控制處理器是否進(jìn)入75OF111512DF10IF9TF8SF7ZF65AF43PF21CF0控制反映結(jié)果狀態(tài)反應(yīng)運(yùn)算過(guò)程22OF111512DF10IF9TF8SF7Z76

3、段寄存器(CS、DS、SS、ES) 在8088可尋址的1MB內(nèi)存空間中,可以存在四種分工不同的邏輯段:代碼段、數(shù)據(jù)段、堆棧段和附加段。 段寄存器即是存放各個(gè)邏輯段段首地址的寄存器。23 3、段寄存器(CS、DS、SS、ES)77存儲(chǔ)器的分段管理8088有20條地址線,最大可尋址空間為220=1MB,可尋址的地址范圍為00000H~FFFFFH該地址稱物理地址硬件用20位的物理地址來(lái)對(duì)存儲(chǔ)單元進(jìn)行尋址24存儲(chǔ)器的分段管理8088有20條地址線,78存儲(chǔ)器的分段管理由于8088中的地址寄存器都是16位的,用戶不能直接使用20位的物理地址,編程時(shí)需要使用邏輯地址來(lái)尋址存儲(chǔ)單元。邏輯地址由兩個(gè)16位數(shù)構(gòu)成,其形式為:

段的起始地址:

段內(nèi)的偏移地址(16位段地址):(16位偏移量)分隔符物理地址14700H邏輯地址1460H:100H25存儲(chǔ)器的分段管理由于8088中的地址寄存器都是16位的,79

地址加法器

將16位的邏輯地址轉(zhuǎn)換為20位的物理地址,具體操作過(guò)程為:先將段寄存器提供的16位段地址左移四位,低位補(bǔ)0,恢復(fù)為20位地址,然后與由各種尋址方式提供的16位偏移地址相加,即得到20位的物理地址。邏輯地址26 地址加法器 邏輯地址80物理地址:20位邏輯地址:段基址(段寄存器的內(nèi)容)16位偏移地址(字節(jié)距離)16位段基址16位偏移地址16位物理地址20位0000+邏輯地址27物理地址:20位段基址16位偏81存儲(chǔ)器的分段管理邏輯地址的表示——段地址:偏移地址地址偏移量(xxxxH)段首(xxxx0H)低址段尾某邏輯段某尋址單元28存儲(chǔ)器的分段管理邏輯地址的表示——段地址:偏移地址地址偏82段地址說(shuō)明邏輯段在存儲(chǔ)器中的起始位置,為模16地址:xxxx0H,省略低4位后,可用1個(gè)16位數(shù)來(lái)表示,該地址可被存放在不同的段寄存器CS/SS/DS/ES中。偏移地址說(shuō)明尋址單元距離段首的偏移量,因每段長(zhǎng)度不超過(guò)64KB,所以偏移地址也可用1個(gè)16位數(shù)來(lái)表示。存儲(chǔ)器的分段管理29段地址說(shuō)明邏輯段在存儲(chǔ)器中的起始位置,為模16地址:xx83存儲(chǔ)器的分段管理一個(gè)存儲(chǔ)單元可以擁有多個(gè)邏輯地址,但只可能擁有一個(gè)唯一的物理地址。邏輯地址 1460:100、1380:F00物理地址 14700H14700H30存儲(chǔ)器的分段管理一個(gè)存儲(chǔ)單元可以擁有多個(gè)邏輯地址,但只可84如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中。31如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段;85段跨越前綴指令沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;若使用BP訪問(wèn)存儲(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段跨越前綴指令沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;86段超越的例子沒(méi)有段超越的指令實(shí)例:MOVAX,[2000H] ;AX←DS:[2000H],;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:MOVAX,ES:[2000H] ;AX←ES:[2000H],;從指定的ES附加段取出數(shù)據(jù)33段超越的例子沒(méi)有段超越的指令實(shí)例:87段寄存器的使用規(guī)定(表2.1)存儲(chǔ)器訪問(wèn)方式 默認(rèn)段寄存器 段超越 偏移地址取指令 CS 無(wú) IP堆棧操作 SS 無(wú) SP一般數(shù)據(jù)訪問(wèn) DS CS/ES/SS 有效地址EA下列特殊情況除外串操作的源操作數(shù) DS CS/ES/SS SI串操作的目的操作數(shù)ES 無(wú) DIBP基址的尋址方式 SS CS/DS/ES 有效地址EA34段寄存器的使用規(guī)定(表2.1)存儲(chǔ)器訪問(wèn)方式 默認(rèn)段寄存88

IP(InstructionPointer)中存放即將要執(zhí)行的指令的有效地址,IP具有自增量功能。在每取出一條指令后,IP自增一,指令指針指向下一條指令。4、指令指針寄存器(IP)35 IP(InstructionPointer)中存放89總結(jié)一下:通用寄存器

8 AX/BX/CX/DX BP/SPDI/SI

指令指針寄存器 1 IP

標(biāo)志寄存器 1 PSW段寄存器 4 CS/SS/DS/ES

掌握通用寄存器的作用熟悉PSW中各個(gè)標(biāo)志的含義切實(shí)理解存儲(chǔ)器組織和存儲(chǔ)空間分段的概念36總結(jié)一下:通用寄存器 8 AX/BX/CX/DX908088的寄存器組378088的寄存器組91堆棧的概念堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。它采用先進(jìn)后出FILO(FirstInLastOut)或后進(jìn)先出LIFO(LastInFirstOut)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。堆棧指針——它指示棧頂位置,在8086/8086中,棧頂由SS和SP共同指示,即SS:SP。堆棧操作處理器自動(dòng)維持(子程序調(diào)用時(shí)的斷點(diǎn)處理)用戶操作(PUSH/POP指令)38堆棧的概念堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。92三、8088/8086的存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)存儲(chǔ)格式,以及存儲(chǔ)器的分段管理對(duì)以后的匯編程序設(shè)計(jì)非常重要你能區(qū)別寄存器、存儲(chǔ)器(主存)、外存(包括硬盤、光盤、磁帶等存儲(chǔ)介質(zhì))嗎?39三、8088/8086的存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)93寄存器、存儲(chǔ)器和外存的區(qū)別寄存器是微處理器(CPU)內(nèi)部暫存數(shù)據(jù)的存儲(chǔ)單元,以名稱表示,例如:AX,BX..….等存儲(chǔ)器也就是平時(shí)所說(shuō)的主存,也叫內(nèi)存,可直接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別外存主要指用來(lái)長(zhǎng)久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),常見(jiàn)的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)只能通過(guò)主存間接地與CPU交換數(shù)據(jù)程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在運(yùn)行需要時(shí)才進(jìn)入主存40寄存器、存儲(chǔ)器和外存的區(qū)別寄存器是微處理器(CPU)內(nèi)部942.58086/8088的存儲(chǔ)器結(jié)構(gòu)

數(shù)據(jù)的存儲(chǔ)格式計(jì)算機(jī)中表示信息的單位有:位(bit)、字

溫馨提示

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