微機原理2-1:8088CPU內部結構、寄存器組、存儲器組織_第1頁
微機原理2-1:8088CPU內部結構、寄存器組、存儲器組織_第2頁
微機原理2-1:8088CPU內部結構、寄存器組、存儲器組織_第3頁
微機原理2-1:8088CPU內部結構、寄存器組、存儲器組織_第4頁
微機原理2-1:8088CPU內部結構、寄存器組、存儲器組織_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第二第二部分 8086/80888086/8088微處理器微處理器 一、一、8086/8088CPU8086/8088CPU的內部結構的內部結構 二、二、8086/80888086/8088的內部寄存器的內部寄存器 三、三、8086/8088的存儲器組織的存儲器組織 四、微處理器的指令系統四、微處理器的指令系統 五、五、8086/80888086/8088的引腳及工作摸式的引腳及工作摸式 六、時序與總線周期六、時序與總線周期 2控制總線控制總線數據總線數據總線地址總線地址總線內部數據總線內部數據總線暫存器暫存器累加器累加器ALU標志寄存器標志寄存器指指令令寄寄存存指指令令譯譯碼碼時序時序和和控

2、制控制邏輯邏輯通通 用用寄存器組寄存器組地地 址址寄存器組寄存器組地址地址總線總線控制控制數據數據總線總線控制控制一、 8086/8088CPU的內部結構1.算術邏輯單元(運算器)算術邏輯單元(運算器)2.寄存器組寄存器組3.指令處理單元(控制器)指令處理單元(控制器)8 8位位微處理器的內部結構3n16位微處理器也具有以上結構中的基本單元,位微處理器也具有以上結構中的基本單元,但更為復雜。但更為復雜。n以以8088為例講解為例講解16位微處理器的功能結構。位微處理器的功能結構。n8088是是8086的簡化版本。的簡化版本。n兩個芯片都是兩個芯片都是16位微處理器,內部運算器和位微處理器,內部

3、運算器和寄存器都是寄存器都是16位的位的,同樣具有,同樣具有20位地址線;位地址線;8088的外部數據總線為的外部數據總線為8位位,而,而8086為為16位位8088/8086的功能結構 AH ALBH BL CL CH DH DLSPBPDISI通通 用用 寄寄 存存 器器 CSDSSSES I P 內部通信寄存器內部通信寄存器總線總線控制控制邏輯邏輯 1 234AXBXCXDX數據總線數據總線暫暫 存存 寄寄 存存 器器A L U標志寄存器標志寄存器外部總線外部總線指令隊列指令隊列16 位位執(zhí)行執(zhí)行控制控制電路電路執(zhí)行單元執(zhí)行單元地址加法器地址加法器20 位位16 位位 段段 寄寄 存存

4、器器指令指針指令指針(EU)總線接口單元總線接口單元 (BIU)ABDBCB5n8088的的編程結構編程結構從功能分成兩個單元從功能分成兩個單元n總線接口單元總線接口單元BIU (Bus Interface Unit)管理管理8088與系與系統總線的接口,負責統總線的接口,負責CPU對存儲器和外設進行訪問對存儲器和外設進行訪問n執(zhí)行單元執(zhí)行單元EU (Execution Unit)負責指令的譯碼、執(zhí)行和負責指令的譯碼、執(zhí)行和數據的運算數據的運算n兩個單元相互獨立,分別完成各自操作兩個單元相互獨立,分別完成各自操作n兩個單元可以兩個單元可以并行并行執(zhí)行,實現指令取指和執(zhí)行的流水線執(zhí)行,實現指令取

5、指和執(zhí)行的流水線操作操作6并行操作的意義EU執(zhí)行指令的同時,執(zhí)行指令的同時,BIU可以繼續(xù)讀取后續(xù)指令,可以繼續(xù)讀取后續(xù)指令,并存入指令隊列并存入指令隊列(first in first out)。這叫做。這叫做“指令預指令預取取”。8位的位的CPU沒有指令預取功能,執(zhí)行指令前必須等沒有指令預取功能,執(zhí)行指令前必須等待待“取指取指”操作完成。操作完成。取指操作是取指操作是CPU最頻繁的操作。最頻繁的操作。這種操作方式節(jié)省了這種操作方式節(jié)省了CPU大量的取指等待時間。大量的取指等待時間。“指令流水線指令流水線”。7二、 8088寄存器結構 8088共有共有8個的通用寄存器,個的通用寄存器,1個標志

6、寄存器,個標志寄存器,4個段寄存器和個段寄存器和1個指令指針寄存器。個指令指針寄存器。 1、通用寄存器、通用寄存器 數據寄存器數據寄存器 共共AX、BX、CX、DX四個,每個寄存器即可作四個,每個寄存器即可作為為16位寄存器,又可拆分為兩個位寄存器,又可拆分為兩個8位寄存器,此時記位寄存器,此時記為為AH、AL、BH、BL等。等。 AX(AH、AL):累加器累加器accumulator BX(BH、BL):基址寄存器基址寄存器base CX(CH、CL):計數寄存器計數寄存器counter DX(DH、DL):數據寄存器數據寄存器data 8 指針和變址寄存器指針和變址寄存器 共共BP、SP、

7、SI、DI四個四個 BP:基址指針寄存器基址指針寄存器Base Pointer ,默認表示,默認表示堆棧段基地址;堆棧段基地址;SP:堆棧指針寄存器堆棧指針寄存器Stack Pointer,指示棧頂,指示棧頂 SI:源變址寄存器源變址寄存器Source IndexDI:目的變址寄存器目的變址寄存器Destination Index 9 標志寄存器(標志寄存器(FR)是是十六位的十六位的寄存器,但只利用了其中的寄存器,但只利用了其中的9位:位:六個六個條條件標志件標志和和三個三個控制標志控制標志。2、標志寄存器、標志寄存器10進位標志CF(Carry Flag)n當運算結果的最高有效位有進位(加

8、法)或當運算結果的最高有效位有進位(加法)或借位(減法)時,進位標志置借位(減法)時,進位標志置1,即,即CF = 1;否則否則 CF=0。例如(以例如(以8位運算為例,位運算為例,8088中為中為16位):位):3AH + 7CHB6H沒有進位:沒有進位:CF=0AAH + 7CH(1)26H有進位:有進位:CF=111溢出標志OF(Overflow Flag)n若算術運算的結果有溢出,則若算術運算的結果有溢出,則OF=1;否則否則 OF0。問題:問題:什么是溢出?什么是溢出?溢出和進位有什么區(qū)別?溢出和進位有什么區(qū)別?處理器怎么處理,程序員如何運用?處理器怎么處理,程序員如何運用?如何判斷

9、是否溢出?如何判斷是否溢出?P30找答案12什么是溢出n處理器內部以補碼表示處理器內部以補碼表示有符號數有符號數n8位表達的整數范圍是:位表達的整數范圍是:127 128n16位表達的范圍是:位表達的范圍是:32767 32768n如果運算結果超出這個范圍,就產生了溢出如果運算結果超出這個范圍,就產生了溢出n有溢出,說明有符號數的運算結果不正確有溢出,說明有符號數的運算結果不正確13溢出和進位的對比例例1:3AH7CHB6H無符號數運算:無符號數運算: 58124182范圍內,無進位范圍內,無進位有符號數運算:有符號數運算: 58124182范圍外,有溢出范圍外,有溢出例例2:AAH7CH(1

10、)26H無符號數運算:無符號數運算: 170124294范圍外,有進位范圍外,有進位有符號數運算:有符號數運算: 8612428范圍內,無溢出范圍內,無溢出14處理器對兩個操作數進行運算時,按照無符處理器對兩個操作數進行運算時,按照無符號數求得結果,并相應設置進位標志號數求得結果,并相應設置進位標志CF;同;同時,根據是否超出有符號數的范圍設置溢出時,根據是否超出有符號數的范圍設置溢出標志標志OF應該利用哪個標志,應該利用哪個標志,則由程序員來決定則由程序員來決定。也。也就是說,就是說,如果將參加運算的操作數認為是無如果將參加運算的操作數認為是無符號數,就應該關心進位;認為是有符號數,符號數,

11、就應該關心進位;認為是有符號數,則要注意是否溢出。則要注意是否溢出。15全零標志ZF(Zero Flag)n若運算結果為全若運算結果為全0,則,則ZF=1,否則否則ZF=0。例如:例如:3AH + 7CHB6H結果不是零:結果不是零:ZF=086H + 7CH00H結果是全零:結果是全零:ZF=116符號標志SF(Sign Flag)n運算結果最高位為運算結果最高位為1,則,則SF=1;否則否則SF=0。例如:例如:3AH + 7CHB6H最高位最高位D71:SF=186H + 7AH00H最高位最高位D70:SF=0 有符號數利用最高有效位(有符號數利用最高有效位(MSB)來表示它來表示它的

12、符號。所以,運算結果的的符號。所以,運算結果的MSB與符號標志與符號標志SF相相一致。一致。(1)17奇偶標志PF(Parity Flag)n當運算結果當運算結果最低字節(jié)中最低字節(jié)中“1”的個數為零或的個數為零或偶數時,偶數時,PF=1;否則否則PF=0(奇校驗奇校驗)。)。例如:例如:3AH + 7CHB6H10110110B,結果中有結果中有5個個1,是奇數,則是奇數,則 PF=0注意:注意:PF標志僅反映標志僅反映最低最低8位位中中“1”的個數的個數是偶或奇,即使是進行是偶或奇,即使是進行16位字操作。位字操作。18輔助進位標志AF(Auxiliary Carry Flag)n運算時運算

13、時D3位(低半字節(jié))有進位或借位時,位(低半字節(jié))有進位或借位時,AF=1;否則否則AF=0。 這個標志主要由處理器內部使用,用于這個標志主要由處理器內部使用,用于十進制算術運算的調整,用戶一般不必關心十進制算術運算的調整,用戶一般不必關心。19方向標志DF(Direction Flag)n用于用于串操作指令串操作指令中,控制地址的變化方向:中,控制地址的變化方向:n設置設置DF0,串操作后存儲器地址自動增量(增址)串操作后存儲器地址自動增量(增址) ;n設置設置DF1,串操作后存儲器地址自動減量(減址)串操作后存儲器地址自動減量(減址) 。串:存儲器中一序列字或字節(jié)單元串:存儲器中一序列字或

14、字節(jié)單元 串操作串操作對序列字或字節(jié)單元中的內容進行某種操作對序列字或字節(jié)單元中的內容進行某種操作 ,比如:將一個字符串從源區(qū)傳送到目的區(qū)比如:將一個字符串從源區(qū)傳送到目的區(qū) 。MOVS串傳送指令串傳送指令 CMPS串比較指令串比較指令 SCAS串掃描指令串掃描指令 LODS裝入串指令裝入串指令 STOS存儲存儲串指令串指令 20中斷允許標志IF(Interrupt-enable Flag)n用于控制外部可屏蔽中斷是否可以被處理器用于控制外部可屏蔽中斷是否可以被處理器響應:響應:n設置設置IF1,則則允許中斷允許中斷;n設置設置IF0,則則禁止中斷禁止中斷。nCLI 指令復位中斷標志:指令復位

15、中斷標志:IF0nSTI 指令置位中斷標志:指令置位中斷標志:IF121陷阱標志TF(Trap Flag)n用于控制處理器是否進入用于控制處理器是否進入單步執(zhí)行單步執(zhí)行方式:方式:n設置設置TF0,處理器正常工作;處理器正常工作;n設置設置TF1,處理器每執(zhí)行一條指令就中斷一次,處理器每執(zhí)行一條指令就中斷一次,中斷編號為中斷編號為 1 (稱(稱單步中斷單步中斷),), TF 也被稱為也被稱為單單步標志步標志。n單步執(zhí)行單步執(zhí)行和和單步調試單步調試n利用單步中斷可對程序進行逐條指令的調試。利用單步中斷可對程序進行逐條指令的調試。n這種逐條指令調試程序的方法就是這種逐條指令調試程序的方法就是單步調

16、試單步調試。22OF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0控制控制反映結果狀態(tài)反映結果狀態(tài)反應運算過程反應運算過程233、段寄存器(段寄存器(CS、DS、SS、ES) 在在8088可尋址的可尋址的1MB內存空間中,可以存內存空間中,可以存在四種分工不同的邏輯段:在四種分工不同的邏輯段:代碼段代碼段、數據段數據段、堆堆棧段棧段和和附加段附加段。 段寄存器即是存放各個段寄存器即是存放各個邏輯段邏輯段段首地址的寄段首地址的寄存器。存器。24存儲器的分段管理n8088有有20條地址線,條地址線,n最大可尋址空間為最大可尋址空間為 2201MB,n可尋址的地址范圍為可尋址

17、的地址范圍為 00000HFFFFFHn該地址稱該地址稱物理地址物理地址n硬件用硬件用20位位的的物理地址物理地址來對存儲單元進行尋來對存儲單元進行尋址址25存儲器的分段管理n由于由于8088中的地址寄存器都是中的地址寄存器都是16位的,用位的,用戶不能直接使用戶不能直接使用20位的物理地址,編程時需位的物理地址,編程時需要使用要使用邏輯地址邏輯地址來尋址存儲單元。來尋址存儲單元。n邏輯地址邏輯地址由兩個由兩個16位數構成,其形式為:位數構成,其形式為: 段的起始地址段的起始地址 : 段內的偏移地址段內的偏移地址(16位段地址)位段地址) :( 16位偏移量)位偏移量) 物理地址物理地址 14

18、700H邏輯地址邏輯地址 1460H:100H26地址加法器地址加法器 將將16位的邏輯地址轉換為位的邏輯地址轉換為20位的物位的物理地址,具體理地址,具體操作過程操作過程為:先將段寄存為:先將段寄存器提供的器提供的16位段地址左移四位,低位補位段地址左移四位,低位補0,恢復為恢復為20位地址,然后與由各種尋址方位地址,然后與由各種尋址方式提供的式提供的16位偏移地址位偏移地址相加相加,即得到,即得到20位的位的物理地址物理地址。邏輯地址27 物理地址:物理地址: 20 位位 邏輯地址:邏輯地址: 段基址段基址 (段寄存器的內容)(段寄存器的內容)16位位 偏移地址(字節(jié)距離)偏移地址(字節(jié)距

19、離)16位位段段 基基 址址 16 位位偏偏 移移 地地 址址 16 位位物物 理理 地地 址址 20 位位00 0 0+邏輯地址28存儲器的分段管理邏輯地址的表示邏輯地址的表示段地址:偏移地址段地址:偏移地址地址偏移量(地址偏移量(xxxxH)段首(段首(xxxx0H)低址低址段尾段尾某某邏邏輯輯段段某尋址單元某尋址單元29n段地址段地址說明邏輯段在存儲器中的起始位置,說明邏輯段在存儲器中的起始位置,為模為模16地址:地址:xxxx0H,省略低省略低4位后,可位后,可用用1個個16位數來表示,該地址可被存放在不位數來表示,該地址可被存放在不同的同的段寄存器段寄存器CS/SS/DS/ES中。中

20、。n偏移地址偏移地址說明尋址單元距離段首的偏移量,說明尋址單元距離段首的偏移量,因每段長度不超過因每段長度不超過64KB,所以偏移地址也所以偏移地址也可用可用1個個16位數來表示。位數來表示。存儲器的分段管理30存儲器的分段管理n一個存儲單元可以擁有多個一個存儲單元可以擁有多個邏輯地址邏輯地址,但只,但只可能擁有一個唯一的可能擁有一個唯一的物理地址物理地址。邏輯地址邏輯地址 1460:1001460:100、1380:F001380:F00物理地址物理地址 14700H 14700H14700H 14700H31如何分配各個邏輯段n程序的指令序列必須安排在程序的指令序列必須安排在代碼段代碼段;

21、n程序使用的堆棧一定在程序使用的堆棧一定在堆棧段堆棧段;n程序中的數據默認是安排在數據段,也經常程序中的數據默認是安排在數據段,也經常安排在附加段,尤其是串操作的目的區(qū)必須安排在附加段,尤其是串操作的目的區(qū)必須是是附加段附加段。n數據的存放比較靈活,實際上可以存放在任數據的存放比較靈活,實際上可以存放在任何一種邏輯段中。何一種邏輯段中。32段跨越前綴指令n沒有指明時,一般的數據訪問在沒有指明時,一般的數據訪問在DS段;段;n若使用若使用BP訪問存儲器,則在訪問存儲器,則在SS段。段。n默認的情況允許改變,需要使用段跨越前綴默認的情況允許改變,需要使用段跨越前綴指令,指令,8088指令系統中共有

22、指令系統中共有4個:個:CS: 代碼段超越,使用代碼段的數據代碼段超越,使用代碼段的數據SS:堆棧段超越,使用堆棧段的數據堆棧段超越,使用堆棧段的數據DS:數據段超越,使用數據段的數據數據段超越,使用數據段的數據ES:附加段超越,使用附加段的數據附加段超越,使用附加段的數據33段超越的例子n沒有段超越的指令實例:沒有段超越的指令實例:MOV AX, 2000H;AXDS:2000H,;從默認的從默認的DS數據段取出數據數據段取出數據n采用段超越前綴的指令實例:采用段超越前綴的指令實例:MOV AX, ES:2000H;AXES:2000H,;從指定的從指定的ES附加段取出數據附加段取出數據34

23、段寄存器的使用規(guī)定(表2.1)35IP(Instruction Pointer)中中存放存放即將要執(zhí)行的指令即將要執(zhí)行的指令的的有效地址有效地址,IP具有具有自增量自增量功能。在每取出一條功能。在每取出一條指令后,指令后,IP自增一,指令指針指向自增一,指令指針指向下一條指令。下一條指令。4、指令指針寄存器(指令指針寄存器(IP )36總結一下:通用寄存器通用寄存器8AX/BX/CX/DX BP/SP DI/SI指令指針寄存器指令指針寄存器 1IP標志寄存器標志寄存器1PSW段寄存器段寄存器4 CS/SS/DS/ES掌握通用寄存器的作用掌握通用寄存器的作用熟悉熟悉PSW中各個標志的含義中各個標

24、志的含義切實理解切實理解存儲器組織存儲器組織和和存儲空間分段存儲空間分段的概念的概念378088的寄存器組38堆棧的概念n堆棧堆棧(Stack)是主存中一個特殊的區(qū)域。是主存中一個特殊的區(qū)域。n它采用它采用(First In Last Out)或后或后進先出進先出LIFO(Last In First Out)的原則進行存的原則進行存取操作,而不是隨機存取操作方式。取操作,而不是隨機存取操作方式。n堆棧指針堆棧指針它指示棧頂位置,在它指示棧頂位置,在8086/8086中,棧頂由中,棧頂由SS和和SP共同指示,即共同指示,即SS:SP。n堆棧操作堆棧操作n處理器自動維持(子程序調用時的斷點處理)處

25、理器自動維持(子程序調用時的斷點處理)n用戶操作(用戶操作(PUSH/POP指令)指令)39三、 8088/8086的存儲器結構n存儲器存儲器是計算機存儲信息的地方。掌握數是計算機存儲信息的地方。掌握數據據存儲格式存儲格式,以及存儲器的,以及存儲器的分段管理分段管理對以對以后的匯編程序設計非常重要后的匯編程序設計非常重要n你能區(qū)別你能區(qū)別寄存器寄存器、存儲器存儲器(主存主存)、外存外存(包包括硬盤、光盤、磁帶等存儲介質括硬盤、光盤、磁帶等存儲介質)嗎?嗎?40寄存器、存儲器和外存的區(qū)別n寄存器寄存器是是微處理器(微處理器(CPU)內部)內部暫存數據暫存數據的存儲的存儲單元,以名稱表示,例如:單

26、元,以名稱表示,例如:AX,BX.等等n存儲器存儲器也就是平時所說的也就是平時所說的主存主存,也叫,也叫內存內存,可直,可直接與接與CPU進行數據交換。主存利用地址區(qū)別進行數據交換。主存利用地址區(qū)別n外存外存主要指用來主要指用來長久保存長久保存數據的外部存儲介質,數據的外部存儲介質,常見的有硬盤、光盤、磁帶、常見的有硬盤、光盤、磁帶、U盤等。外存的數據盤等。外存的數據只能通過主存只能通過主存間接地與間接地與CPU交換數據交換數據n程序及其數據可以長久存放在外存,在運行需要程序及其數據可以長久存放在外存,在運行需要時才進入主存時才進入主存412.5 8086/8088的存儲器結構 數據的存儲格式

27、數據的存儲格式n計算機中表示信息的單位有:計算機中表示信息的單位有:位(位(bit)、)、字節(jié)(字節(jié)(byte)、)、字(字(word)、)、雙字(雙字(double word)等等n在存儲器中,信息的存儲單位是:在存儲器中,信息的存儲單位是:字節(jié);即字節(jié);即每個存儲單元的內容是一個字節(jié)。每個存儲單元的內容是一個字節(jié)。42信息的表示單位n最低有效位最低有效位LSB(Least Significant Bit):):指數據的最低位,即指數據的最低位,即D0位;位;n最高有效位最高有效位MSB(Most Significant Bit):):指數據的最高位,對應字節(jié)、字、指數據的最高位,對應字節(jié)、

28、字、雙字分別指雙字分別指D7、D15、D31位。位。43圖2.3 8088的存儲格式00000H00001H00002H00003H00004H00005H34H12H56H78H00006HD7 D0低地址低地址雙字雙字D0D31字字D0D15字節(jié)字節(jié)D0D7LSBMSB44存儲單元及其存儲內容n每個存儲單元都有一個編號每個存儲單元都有一個編號存儲器地址存儲器地址例如:例如:圖圖2.3(下頁)中,(下頁)中,0002H單元存放有單元存放有一個數據一個數據34H,表示為,表示為 0002H34Hn如何存儲一個字或雙字呢?如何存儲一個字或雙字呢?小端方式小端方式45n多字節(jié)數據在存儲器中占據多字

29、節(jié)數據在存儲器中占據多個連續(xù)的存儲單元多個連續(xù)的存儲單元:n存放時,存放時,低字節(jié)低字節(jié)存于存于低地址低地址,高字節(jié)高字節(jié)存于存于高地址高地址;n多字節(jié)數據占據的地址空間用它的多字節(jié)數據占據的地址空間用它的低地址低地址來表示。來表示。n例如:例如:圖圖2.3中,中,2號號“字字”單元:單元: 0002H = 1234H 2號號“雙字雙字”單元:單元: 0002H = 78561234Hn80 x86處理器的處理器的“低對低、高對高低對低、高對高”的存儲形式,的存儲形式,被稱為被稱為“小端方式(小端方式(little endian)”。n相對應還存在相對應還存在“大端方式(大端方式(Big Endian)”。46地址對齊 同一個存儲器地址可以表示:字節(jié)單元地址、同一個存儲器地址可以表示:字節(jié)單元地址、字單元地址、雙字單元地址等等(視指令的具體情字單元地址、雙字單元地址等等(視

溫馨提示

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

評論

0/150

提交評論