微機原理與接口技術第2章_第1頁
微機原理與接口技術第2章_第2頁
微機原理與接口技術第2章_第3頁
微機原理與接口技術第2章_第4頁
微機原理與接口技術第2章_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

本次課主要內容2.28088/8086微處理器(重點)

8088/8086CPU的功能結構(書2.2.3)

8088/8086CPU的存儲器組織(書2.2.4)第2章

微處理器與總線小結第2章:教學要求2.1微處理器概述2.2(重點)8088/8086微處理器8088/8086CPU功能結構(書2.2.3)

8088/8086CPU存儲器組織(書2.2.4)

8088CPU外部引腳及其功能(書2.2.2)8088/8086CPU工作時序(書2.2.5)

2.32.4(一般了解)80386,

Pentium微處理器2.5總線8088系統總線

(書2.5.4)

第2章

微處理器與總線本章教學重點8088內部寄存器、存儲器組織

、最小組態下的引腳定義上次課回顧

-----與前面所學知識的銜接匯編語言程序員看到的硬件中央處理單元CPU(Intel80x86)對匯編語言程序員,最關心其中的寄存器內存(主存儲器)呈現給匯編語言程序員的,是主存儲器地址存儲器地址是存儲器中存儲單元的編號外部設備(接口電路)匯編語言程序員看到的是端口(I/O地址)I/O接口內存系統總線CPU寄存器控制器運算器輔助存儲器輸入設備輸出設備微型計算機的系統組成CPU

CPUMOVAL,DLCPU內存

MOVAL,ES:[5678H]CPUI/O接口

IN AL,56H上次課回顧結束返回一.8086CPU功能結構◆

8086的內部結構◆

8086的寄存器結構

1.通用寄存器(8個)

2.指令指針寄存器IP

☆3.標志寄存器PSW

從應用角度(不是從內部工作原理)展開為學習指令系統打好基礎例如:關心用戶“可編程”寄存器,不關心無法操縱的“透明”寄存器1.8086CPU內部結構8088的基本組成8088的內部結構從功能上分成兩個單元1.總線接口單元BIU管理8088與系統總線的接口負責CPU對存儲器和外設進行訪問2.執行單元EU負責指令的譯碼、執行和數據的運算兩個單元相互獨立,分別完成各自操作,還可以并行執行,實現指令預取(指令讀取和執行的流水線操作)

1.算術邏輯單元ALU(運算器)2.寄存器組3.指令處理單元(控制器)圖示8086的內部結構123456內部寄存器

IP

ES

SSDSCS輸入/輸出控制電路外部總線執行部分控制電路ALU標志寄存器

AXAHALSPBPSIDI通用寄存器地址加法器指令隊列執行單元(EU)總線接口單元(BIU)16位20位地址總線16位

BXBHBL

DXDHDL

CXCHCLALU數據總線2.8088/8086的內部寄存器8086的內部寄存器組有數據寄存器指針寄存器通用寄存器變址寄存器指令指針寄存器狀態標志寄存器段寄存器他們均為16位!圖示

匯編語言程序員看到的處理器,就是寄存器所以,一定要熟悉這些寄存器的名稱和作用(1)數據寄存器AX稱為累加器(Accumulator)使用頻度最高。用于算術、邏輯運算以及與外設傳送信息等BX稱為基址寄存器(BaseaddressRegister)常用做存放存儲器地址CX稱為計數器(Counter)作為循環和串操作等指令中的隱含計數器DX稱為數據寄存器(Dataregister)常用來存放雙字長數據的高16位,或存放外設端口地址4個數據寄存器還可以分成高8位和低8位兩個獨立的寄存器,這樣又形成8個通用的8位寄存器AX:AHAL BX:BHBLCX:CHCL DX:DHDL(2)指針寄存器指針寄存器用于尋址內存堆棧內的數據SP為堆棧指針寄存器(StackPointer),指示堆棧段棧頂的位置(偏移地址)BP為基址指針寄存器(BasePointer),表示數據在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯合使用以確定堆棧段中的存儲單元地址堆棧(Stack)是主存中一個特殊的區域,采用“先進后出”或“后進先出”存取操作方式、而不是隨機存取方式。用8088/8086形成的微機系統中,堆棧區域被稱為堆棧段(3)變址寄存器16位變址寄存器SI和DI常用于存儲器變址尋址方式時提供地址SI是源地址寄存器(SourceIndex)DI是目的地址寄存器(DestinationIndex)在串操作類指令中,SI、DI還有較特殊的用法

現在不必完全理解,以后會詳細展開(4)指令指針寄存器IPIP(InstructionPointer)為指令指針寄存器,用來控制CPU指令執行順序隨著指令的執行,IP將自動修改以指示下一條指令所在的內存地址。順序執行時,CPU每取一個指令字節,IP自動加1,指向下一個要讀取的字節IP寄存器與CS段寄存器聯合使用以確定下一條指令的內存地址。(5)狀態標志寄存器(PSW程序狀態字)存放cpu工作過程中狀態,即反映指令執行結果或控制指令執行形式8088處理器的各種標志形成了一個16位(用9位)的狀態標志寄存器PSW狀態標志--用來記錄程序運行結果的狀態信息,許多指令的執行都將相應地設置它CZSPOA控制標志--可由程序根據需要用指令設置,用于控制處理器執行指令的方式

DITO111512D10I9T8S7Z65A43P21C0

程序設計需要利用標志的狀態進位標志C(CarryFlag)當運算結果的最高有效位有進位(加法)或借位(減法)時,進位標志置1,即C=1;否則C=03AH+7CH=B6HAAH+7CH=(1)26H沒有進位:C=0有進位:C=1奇偶標志P(ParityFlag)當運算結果低8位中“1”的個數為零或偶數時,P=1;否則P=03AH+7CH=B6H=P標志僅反映最低8位中“1”的個數是

偶或奇,即使是進行16位字操作10110110B結果中有5個“1”,是奇數:P=0半加標志位(輔助進位)A(AuxiliaryCarryFlag)這個標志主要用于對BCD運算結果的調整,由處理器內部使用,用戶一般不必關心運算時低半字節(D3向D4)有進位(加法)或借位(減法)時,A=1;否則A=0零標志Z(ZeroFlag)若運算結果為0,則Z=1;否則Z=03AH+7CH=84H+7CH=

注意:Z為1表示運算結果是0B6H,結果不是零:Z=

0(1)00H,結果是零:Z=1符號標志S(SignFlag)運算結果最高位為1,則S=1;否則S=03AH+7CH=B6H,最高位D7=1:S=184H+7CH=(1)00H,最高位D7=0:S=0

有符號數據用最高有效位表示數據的符號所以,最高有效位就是符號標志的狀態陷阱標志位T(TrapFlag)(單步標志位)用于控制CPU進入單步操作方式。通常用于程序調試。設置TF=0,處理器正常工作;設置TF=1,處理器單步執行指令中斷允許標志位I(Interrupt-enableFlag)控制CPU是否響應可屏蔽中斷請求設置I=1,則允許中斷;設置I=0,則禁止中斷CLI指令復位中斷標志:I=0STI指令置位中斷標志:I=1方向標志位D(DirectionFlag)用于串操作指令,控制地址的變化方向:設置D=0,存儲器地址自動增加;設置D=1,存儲器地址自動減少CLD指令復位方向標志:D=0STD指令置位方向標志:D=1溢出標志位O(OverflowFlag)若算術運算的結果有溢出,則O=1;否則O=0?什么是溢出處理器內部以補碼表示有符號數8位有符號數表達的整數范圍是:+127~-12816位表達的范圍是:+32767~-32768如果運算結果超出這個范圍,就產生了溢出有溢出,說明有符號數的運算結果不正確溢出舉例分析:3AH+7CH=B6H,就是58+124=182,已經超出-128~+127范圍,產生溢出,故OF=1;補碼B6H表達真值是-74,顯然運算結果也不正確B6H=10110110B,最高位為1,作為有符號數是負數對B6H求反加1等于:01001001B+1=01001010B=4AH=74

所以,B6H表達有符號數的真值為-743AH+7CH=B6H,產生溢出:OF=1溢出的簡單判斷法只有當兩個同符號數相加(包括不同符號數相減),而運算結果的符號與原數據符號相反時,產生溢出;因為,此時的運算結果顯然不正確其他情況下,則不會產生溢出例1:3AH+7CH=B6H 例2:AAH+7CH例3:3AH-7CH 例4:AAH-7CH=2EH 溢出無溢出無溢出溢出PSW小結(6)段寄存器8088有4個16位段寄存器CS(代碼段)指明代碼段的起始地址SS(堆棧段)指明堆棧段的起始地址DS(數據段)指明數據段的起始地址ES(附加段)指明附加段的起始地址每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途返回二.存儲器組織問題一:寄存器、存儲器(內存)、外存都用于存儲信息,為何僅討論CPU的存儲器尋址?解答:存儲器可直接與CPU進行數據交換問題二:

16位寄存器如何能尋址1M內存空間?解答:內存空間分段,邏輯地址/物理地址轉換問題三:CPU如何實現存儲器尋址?

解答:CPU總線接口單元???1.存儲器尋址功能2.存儲器的分段管理3.物理地址和邏輯地址4.段寄存器及邏輯段分配5.CPU存儲器結構6.存儲器數據的存儲格式MemoryAddressing存儲器尋址

---CPU的存儲器結構問題1

問題2

問題31.存儲器尋址的功能

(FunctionofMemoryAddressing)功能AddressingDatainMEMORY存儲器(內存)是計算機存儲信息的地方。可直接與CPU進行數據交換。掌握數據存儲格式,以及存儲器的分段管理對以后的匯編程序設計非常重要寄存器

存儲器

外存

CPU

寄存器、存儲器(內存)、外存區別??寄存器、存儲器和外存的區別寄存器是微處理器(CPU)內部暫存數據的存儲單元,以名稱表示,例如:AX,BX..….等存儲器也就是平時所說的主存,也叫內存,可直接與CPU進行數據交換。主存利用地址區別外存主要指用來長久保存數據的外部存儲介質,常見的有硬盤、光盤、磁帶、U盤等。外存的數據只能通過內存間接地與CPU交換數據程序及其數據可以長久存放在外存,在運行需要時才進入主存2.存儲器的分段管理8088CPU訪問內存有20條地址線共220B=1MB個存儲單元FFFFFH,內存地址00000H~FFFFFH8088CPU將1MB空間分成許多段,有4個16位段寄存器,對應4種邏輯段.

CodeSegment代碼段StackSegment堆棧段DataSegment數據段ExtraSegment附加段每個段最大限制為64KB內部寄存器16位如何尋址20條地址線220=1MB?物理地址邏輯地址3.物理地址和邏輯地址用戶編程時采用邏輯地址,形式為段地址:

偏移地址一個存儲單元具有唯一物理地址(20位,地址線尋址)、多個邏輯地址(16位,編程用)分隔符段寄存器內容有效地址EA邏輯地址 1460H:100H、1380H:F00H物理地址 14700H14700H例:MOVAX,ES:[0100H] ;AX←ES:[0100H]邏輯地址(16位,匯編語言編程時采用)形式為段地址:

偏移地址段地址段寄存器CS,DS,ES,SS內容說明邏輯段在主存中的起始位置偏移地址說明主存單元距離段起始位置的偏移量物理地址(20位,地址線尋址,實際地址)物理地址=段地址*16+偏移地址一個存儲單元具有唯一物理地址(20位,地址線尋址)、多個邏輯地址(16位,編程用)主存儲器物理地址和邏輯地址例:MOVAX,ES:[0100H] ;AX←ES:[0100H]例:邏輯地址1460H:1001380:F00H

物理地址14700H14700H8086CPU引腳線---外部特性CPU引腳是系統總線的基本信號可以分成三類信號16位數據線:D0~D1520位地址線:A0~A19

確定存儲器物理地址控制線CPU內部寄存器(編程用)確定存儲器邏輯地址一個存儲單元具有唯一物理地址(20位,地址線尋址)、多個邏輯地址(16位,編程用)物理地址和邏輯地址的轉換物理地址=段地址*16+偏移地址將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址一個物理地址可以有多個邏輯地址邏輯地址 1460H:100H1380H:F00H物理地址 14700H14700H14600H+

100H14700H13800H+

F00H14700H段地址左移4位加上偏移地址得到物理地址4.段寄存器及邏輯段分配8088有4個16位段寄存器CS(CodeSegmentRegister)指令SS(StackSegmentRegister)堆棧DS(DataSegmentRegister)數據ES(ExtraSegmentRegister)數據每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途如何分配各個邏輯段程序的指令序列必須安排在代碼段CS程序使用的堆棧一定在堆棧段SS程序中的數據默認是安排在數據段DS,也經常安排在附加段ES,尤其是串操作的目的區必須是附加段數據的存放比較靈活,實際上可以存放在任何一種邏輯段中沒有指明時,一般的數據訪問在DS段;使用BP訪問主存,則在SS段演示邏輯段的分配代碼段寄存器CS(CodeSegment)代碼段用來存放程序的指令序列代碼段寄存器CS存放代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址處理器利用CS:IP取得下一條要執行的指令邏輯地址堆棧段寄存器SS(StackSegment)堆棧段確定堆棧所在的主存區域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂的偏移地址處理器利用SS:SP操作堆棧頂的數據邏輯地址數據段寄存器DS(DataSegment)數據段存放運行程序所用的數據數據段寄存器DS存放數據段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用DS:EA存取數據段中的數據邏輯地址附加段寄存器ES(ExtraSegment)附加段是附加的數據段,也保存數據:附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用ES:EA存取附加段中的數據串操作指令將附加段作為其目的操作數的存放區域邏輯地址8086/8088的地址產生小結偏移地址加法器物理地址(20位)

段寄存器(段地址)|0000若CS=2000H,IP=2200H,求當前指令的物理地址?邏輯地址段地址:偏移量段地址:CS,DS,ES,SS段基址寄存器偏移地址:SP,BP,DI,SI,IP等指針寄存器上述寄存器都是16位的物理地址20位實際地址=段地址*16+偏移量演示5.CPU存儲器結構CPU總線接口單元(BIU)負責CPU對存儲器和外設進行訪問地址加法器16位邏輯地址寄存器16位CPU地址線:A0~A1920位物理地址完成物理地址、邏輯地址轉換8086的內部結構123456內部寄存器

IP

ES

SSDSCS輸入/輸出控制電路外部總線執行部分控制電路ALU標志寄存器

AXAHALSPBPSIDI通用寄存器地址加法器指令隊列執行單元(EU)總線接口單元(BIU)16位20位16位

BXBHBL

DXDHDL

CXCHCL8088指令執行過程示意例:MOVAX,0064H機器代碼B8H64H00H執行該指令時CS=1000H,IP=100H物理地址?段地址CS=1000H偏移地址IP=100H邏輯地址1000H:100H物理地址1000H16+100H=10100H8088指令執行過程示意(例:MOVAX,0064H;機器代碼B8H64H00H

執行該指令時CS=1000H,IP=100

)6.存儲器數據的存儲格式計算機中信息的單位二進制位Bit:存儲一位二進制數:0或1字節Byte:8個二進制位,D7~D0字Word:16位,2個字節,D15~D0雙字DWord:32位,4個字節,D31~D0最低有效位LSB:數據的最低位,D0位最高有效位MSB:數據的最高位,對應字節、字、雙字分別指D7、D15、D31位每個存儲單元都有一個編號存儲單元地址(或內存地址、存儲器地址)每個存儲單元存放一個字節(8位二進制數)的內容存儲單元內容例:00002H單元存放有一個數據34H表達為 [00002H]=34H8086存儲主存儲器(內存)存放cpu執行的程序及數據讀出:cpu從內存中取出程序及數據過程寫入:將程序及數據存放于內存的過程主存儲器由許多存儲單元組成每個存儲單元存放8位二進制數(1字節)--存儲單元內容每個存儲單元編不同號碼--存儲單元地址(或內存地址、存儲器地址)8086cpu訪問內存有20位地址線,內存地址00000H~FFFFFH共220B=1MB個存儲單元存儲器地址(Address)存儲器由大量存儲單元組成,需要用編號區別每個單元:編號=地址存儲器地址是存儲器中存儲單元的編號Intel8086具有1兆字節(1MB)存儲器容量存儲器地址表示為:00000H~FFFFFH采用十六進制H數來表達地址內存

MOVAX,ES:[5678H]多字節數據存放方式多字節數據在存儲器中占連續的多個存儲單元存放:低字節存入低地址,高字節存入高地址表達:用它的低地址表示多字節數據占據的地址空間。同一個存儲器地址可以是字節單元地址、字單元地址、雙字單元地址等等(視具體情況來確定)

80x86處理器采用“低對低、高對高”的存儲形式,被稱為“小端方式LittleEndian”。相對應還存在“大端方式BigEndian”。8086存儲8088CPU的存儲格式--小端存儲方式D7D0字節D15D0字D31D0雙字00006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址LSBMSB00002H單元的內容為:[00002H]=34H00002H“字”單元的內容為:[00002H]=1234H00002H號“雙字”單元的內容為:

[00002H]=78561234H多字節數據在存儲器中占連續的多個存儲單元存放:低字節存入低地址,高字節存入高地址表達:用低地址表示多字節數據占據的地址空間同一個存儲器地址可以是字節單元地址、字單元地址、雙字單元地址等等

設DS=000002H“雙字”單元MOVEAX,[0002H]00002H“字”單元MOVAX,[0002H]00002H單元

MOVAH,[0002H高地址存儲單元D7D0存儲器地址數據的地址對齊同一個存儲器地址可以是字節單元地址、字單元地址、雙字單元地址等等字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等,被稱為“地址對齊(Align)”對于不對齊地址的數據,處理器訪問時,需要額外的訪問存儲器時間應該將數據的地址對齊,以取得較高的存取速度內存(存儲器)一般圖示方法56H28E94H12H28E93H34H28E92H內存單元內容(數據)內存單元物理地址內存單元內容(數據)內存單元偏移地址56H0004H12H0003H34H0002H若段地址=28E9H,兩種方法表同一存儲區方法一方法二返回8086的內部結構123456內部寄存器

IP

ES

SSDSCS輸入/輸出控制電路外部總線執行部分控制電路ALU標志寄存器

AXAHALSPBPSIDI通用寄存器地址加法器指令隊列執行單元(EU)總線接口單元(BIU)16位20位16位

BXBHBL

DXDHDL

CXCHCL8086的寄存器組狀態標志寄存器(PSW程序狀態字)存放cpu工作過程中狀態,即反映指令執行結果或控制指令執行形式8088處理器的各種標志形成了一個16位(用9位)的狀態標志寄存器PSW狀態標志--用來記錄程序運行結果的狀態信息,許多指令的執行都將相應地設置它CZSPOA控制標志--可由程序根據需要用指令設置,用于控制處理器執行指令的方式

DITO111512D10I9T8S7Z65A43P21C0

程序設計需要利用標志的狀態8086CPU引腳線---外部特性CPU引腳是系統總線的基本信號可以分成三類信號16位數據線:D0~D1520位地址線:A0~A19確定存儲器物理地址共220B=1MB個存儲單,內存地址00000H~FFFFFH控制線CPU內部寄存器(編程用)確定存儲器邏輯地址一個存儲單元具有唯一物理地址(20位,地址線尋址)、多個邏輯地址(16位,編程用)邏輯地址(16位,匯編語言編程時采用)形式為段地址:

偏移地址段地址段寄存器CS,DS,ES,SS內容說明邏輯段在主存中的起始位置偏移地址說明主存單元距離段起始位置的偏移量物理地址(20位,地址線尋址,實際地址)物理地址=段地址*16+偏移地址一個存儲單元具有唯一物理地址(20位,地址線尋址)、多個邏輯地址(16位,編程用)主存儲器物理地址和邏輯地址例:MOVAX,ES:[0100H] ;AX←ES:[0100H]例:邏輯地址1460:1001380:F00

物理地址14700H14700H8088CPU的存儲格式--小端存儲方式D7D0字節D15D0字D31D0雙字00006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址LSBMSB00002H單元的內容為:[00002H]=34H00002H“字”單元的內容為:[00002H]=1234H00002H號“雙字”單元的內容

溫馨提示

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

最新文檔

評論

0/150

提交評論