微機原理課件完整版電子教案_第1頁
微機原理課件完整版電子教案_第2頁
微機原理課件完整版電子教案_第3頁
微機原理課件完整版電子教案_第4頁
微機原理課件完整版電子教案_第5頁
已閱讀5頁,還剩437頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.1 微型計算機的發(fā)展和應用1946年,世界上出現第一臺數字式電子計算機ENIAC(電子數據和計算器)發(fā)展到以大規(guī)模集成電路為主要部件的第四代,產生了微型計算機1971年,Intel公司設計了世界上第一個微處理器芯片Intel4004,開創(chuàng)了一個全新的計算機時代1.1.1 微型計算機的發(fā)展第一時期微型計算機(1971年1973年)4位和低檔8位CPU,4004-4040-8080第二時期微型計算機(1974年1977年) 中高檔8位CPU,Z80、 MC6800第三時期微型計算機(1978年1984年)16位CPU和微機,8086-8088-80286第四時期微型計算機(1985年1993年

2、) 32位高檔CPU, 80386- 80486第五時期微型計算機(1993年至今) 64位高檔CPU,Pentium-PentiumII-PentiumIII- Pentium1.1.2 微型計算機的應用科學計算、科學研究、數值處理和信息處理方面科學計算,數據處理計算機輔助設計功能越強越好、使用越方便越好人工智能和過程自動化控制方面工業(yè)PC機、工控機、可編程邏輯控制器、微控制器、數字信號處理器人工智能網絡通信計算機技術與通信技術的結合構成了計算機網絡計算機仿真模擬器構建、虛擬環(huán)境實現1.2微型計算機系統組成和工作原理運算器 控制器 寄存器組 存儲器 總線輸入/輸出接口電路外部設備 軟件微處理

3、器微型計算機微型計算機系統區(qū)別圖1.1 微型計算機的系統組成控制總線CB數據總線DB地址總線AB系統總線形成處理器子系統I/O設備I/O接口存儲器系統總線BUS1.2.1 微型計算機的硬件系統微處理器子系統存儲器I/O設備和I/O接口系統總線系統總線總線是指傳遞信息的一組公用導線總線是傳送信息的公共通道微機系統采用總線結構連接系統功能部件總線信號可分成三組地址總線AB:傳送地址信息數據總線DB :傳送數據信息控制總線CB :傳送控制信息總線信號地址總線AB輸出將要訪問的內存單元或I/O端口的地址地址線的多少決定了系統直接尋址存儲器的范圍數據總線DBCPU讀操作時,外部數據通過數據總線送往CPU

4、 CPU寫操作時,CPU數據通過數據總線送往外部數據線的多少決定了一次能夠傳送數據的位數控制總線CB協調系統中各部件的操作,有輸出控制、輸入狀態(tài)等信號控制總線決定了系統總線的特點,例如功能、適應性等舉例舉例特點1.2.2 微型計算機的軟件系統 操作系統 MS-DOS 匯編程序 MASM和LINK 文本編輯程序 EDIT.COM 調試程序 DEBUG.EXE為什么采用匯編語言?1.2.3 微型計算機系統工作原理取指令分析指令執(zhí)行指令 微型計算機執(zhí)行程序的過程,實際上就是重復的完成上述取指令、分析指令和執(zhí)行指令的過程,直到遇到停機指令時,CPU處于動態(tài)停機狀態(tài),才結束整個機器的運行。1.3 微型計

5、算機接口技術概述接口是指兩個部件之間的交接部件。微型計算機接口的作用有以下幾個方面:匹配工作速度匹配信息格式實現信息傳遞明確3個概念的區(qū)別微處理器(Microprocessor)一個大規(guī)模集成電路芯片內含控制器、運算器和寄存器等微機中的核心芯片微型計算機(Microcomputer)通常指微型計算機的硬件系統還有一般的說法:微機、微型機微型計算機系統(Microcomputer system)指由硬件和軟件共同組成的完整的計算機系統返回Intel 80 x86CPU的地址線條數Intel80 x86地址條數存儲容量8086201MB8088201MB802862416MB80386324GBP

6、entium4返回Intel 80 x86CPU的數據線條數Intel 80 x86數據位數80861680888802861680386Pentium 432返回系統總線的使用特點除了CPU外,還有DMA控制器和協處理器都具有控制系統總線的能力。它們被稱為“總線主控設備”在某一個時刻,只能由一個總線主控設備來控制系統總線在連接系統總線的各個設備中,某一個時刻只能有一個發(fā)送者向總線發(fā)送信號;但可以有多個設備從總線上同時獲得信號返回內部數據總線控制總線數據總線地址總線暫存器累加器ALU標志寄存器指令寄存指令譯碼時序和控制邏輯通 用寄存器組地 址寄存器組地址總線控制數據總線控制2.1 微型計算機硬

7、件結構算術邏輯單元(運算器)寄存器組指令處理單元(控制器)2.1.1 8088/8086的功能結構8088的內部結構從功能分成兩個單元總線接口單元BIU管理8088與系統總線的接口,負責CPU對存儲器和外設進行訪問執(zhí)行單元EU負責指令的譯碼、執(zhí)行和數據的運算兩個單元相互獨立,分別完成各自操作兩個單元可以并行執(zhí)行(演示1),實現指令取指和執(zhí)行的流水線操作2.1.2 8086/8088 寄存器結構8088/8086的寄存器組有8個通用寄存器4個段寄存器1個標志寄存器1個指令指針寄存器寄存器均為16位!圖示1. 通用寄存器8088有8個通用的16位寄存器(1)數據寄存器: AX BX CX DX(2

8、)變址寄存器: SI DI(3)指針寄存器: BP SP4個數據寄存器還可以分成高8位和低8位兩個獨立的寄存器,這樣又形成8個通用的8位寄存器AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)數據寄存器AX稱為累加器(Accumulator)使用頻度最高。用于算術、邏輯運算以及與外設傳送信息等BX稱為基址寄存器(Base address Register)常用做存放存儲器地址CX稱為計數器(Counter)作為循環(huán)和串操作等指令中的隱含計數器DX稱為數據寄存器(Data register)常用來存放雙字長數據的高16位,或存放外設端口地址(2)變址寄存器16位變址寄

9、存器SI和DI常用于存儲器變址尋址方式時提供地址SI是源地址寄存器(Source Index)DI是目的地址寄存器(Destination Index)在串操作類指令中,SI、DI還有較特殊的用法(3)指針寄存器指針寄存器用于尋址內存堆棧內的數據SP為堆棧指針寄存器(Stack Pointer),指示堆棧段棧頂的位置(偏移地址)BP為基址指針寄存器(Base Pointer),表示數據在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯合使用以確定堆棧段中的存儲單元地址2. 指令指針寄存器IP(Instruction Pointer)為指令指針寄存器,指示主存儲器指令的位置隨著指令的執(zhí)行,IP將

10、自動修改以指示下一條指令所在的存儲器位置IP寄存器是一個專用寄存器IP寄存器與CS段寄存器聯合使用以確定下一條指令的存儲單元地址3. 標志寄存器標志(Flag)用于反映指令執(zhí)行結果或控制指令執(zhí)行形式8088處理器的各種標志形成了一個16位的標志寄存器FLAGS(程序狀態(tài)字PSW寄存器) 程序設計需要利用標志的狀態(tài)標志寄存器-分類狀態(tài)標志用來記錄程序運行結果的狀態(tài)信息,許多指令的執(zhí)行都將相應地設置它CF ZF SF PF OF AF控制標志可由程序根據需要用指令設置,用于控制處理器執(zhí)行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0標志寄存器F

11、LAGS進位標志CF(Carry Flag)當運算結果的最高有效位有進位(加法)或借位(減法)時,進位標志置1,即CF1; 否則CF03AH + 7CHB6H,沒有進位:CF = 0AAH + 7CH(1)26H,有進位:CF = 1零標志ZF(Zero Flag)若運算結果為0,則ZF1,否則ZF03AH7CHB6H,結果不是零:ZF084H7CH(1)00H,結果是零:ZF1符號標志SF(Sign Flag)運算結果最高位為1,則SF1; 否則SF0有符號數據用最高有效位表示數據的符號所以,最高有效位就是符號標志的狀態(tài)3AH7CHB6H,最高位D71:SF184H7CH(1)00H,最高位

12、D70:SF0奇偶標志PF(Parity Flag)當運算結果最低字節(jié)中“1”的個數為零或偶數時,PF1;否則PF0 PF標志僅反映最低8位中“1”的個數是偶或奇,即使是進行16位字操作3AH7CHB6H10110110B結果中有5個“1”,是奇數:PF0溢出標志OF(Overflow Flag)若算術運算的結果有溢出,則OF1; 否則 OF03AH + 7CHB6H,產生溢出:OF1AAH + 7CH(1)26H,沒有溢出:OF0什么是溢出處理器內部以補碼表示有符號數8位表達的整數范圍是:127 12816位表達的范圍是:32767 32768如果運算結果超出這個范圍,就產生了溢出有溢出,說

13、明有符號數的運算結果不正確3AH7CHB6H,就是58124182,已經超出128127范圍,產生溢出,故OF1;補碼B6H表達真值是74,顯然運算結果也不正確 B6H10110110B,最高位為1,作為有符號數是負數 對B6H求反加1等于:01001001B101001010B4AH74 所以,B6H表達有符號數的真值為74溢出和進位的區(qū)別溢出標志OF和進位標志CF是兩個意義不同的標志進位標志表示無符號數運算結果是否超出范圍,運算結果仍然正確溢出標志表示有符號數運算結果是否超出范圍,運算結果已經不正確溢出的判斷判斷運算結果是否溢出有一個簡單的規(guī)則:只有當兩個相同符號數相加(包括不同符號數相減

14、),而運算結果的符號與原數據符號相反時,產生溢出;因為,此時的運算結果顯然不正確其他情況下,則不會產生溢出例1:3AH7CHB6H 溢出例2:AAH7CH 無溢出例3:3AH7CH無溢出例4:AAH7CH2DH溢出輔助進位標志AF(Auxiliary Carry Flag)運算時D3位(低半字節(jié))有進位或借位時,AF1;否則AF0這個標志主要由處理器內部使用,用于十進制算術運算調整指令中,用戶一般不必關心3AH7CHB6H,D3有進位:AF1方向標志DF(Direction Flag)用于串操作指令中,控制地址的變化方向:設置DF0,存儲器地址自動增加;設置DF1,存儲器地址自動減少CLD指令

15、復位方向標志:DF0STD指令置位方向標志:DF1中斷允許標志IF(Interrupt-enable Flag)控制可屏蔽中斷是否可以被處理器響應:設置IF1,則允許中斷;設置IF0,則禁止中斷CLI指令復位中斷標志:IF0STI指令置位中斷標志:IF1陷阱標志TF(Trap Flag)用于控制處理器進入單步操作方式:設置TF0,處理器正常工作;設置TF1,處理器單步執(zhí)行指令單步執(zhí)行指令處理器在每條指令執(zhí)行結束時,便產生一個編號為1的內部中斷這種內部中斷稱為單步中斷所以TF也稱為單步標志利用單步中斷可對程序進行逐條指令的調試這種逐條指令調試程序的方法就是單步調試2.1.3 8088/8086的

16、存儲器結構 存儲器是計算機存儲信息的地方。掌握數據存儲格式,以及存儲器的分段管理對以后的匯編程序設計非常重要1.寄存器、存儲器和外存的區(qū)別寄存器是微處理器(CPU)內部暫存數據的存儲單元,以名稱表示,例如:AX,BX.等存儲器也就是平時所說的主存,也叫內存,可直接與CPU進行數據交換。主存利用地址區(qū)別外存主要指用來長久保存數據的外部存儲介質,常見的有硬盤、光盤、磁帶、U盤等。外存的數據只能通過主存間接地與CPU交換數據程序及其數據可以長久存放在外存,在運行需要時才進入主存存儲單元及其存儲內容每個存儲單元都有一個編號;被稱為存儲器地址每個存儲單元存放一個字節(jié)的內容0002H單元存放有一個數據34

17、H表達為0002H34H多字節(jié)數據存放方式多字節(jié)數據在存儲器中占連續(xù)的多個存儲單元:存放時,低字節(jié)存入低地址,高字節(jié)存入高地址;表達時,用它的低地址表示多字節(jié)數據占據的地址空間。80 x86處理器采用“低對低、高對高”的存儲形式,被稱為“小端方式Little Endian”。相對應還存在“大端方式Big Endian”。2.存儲器的分段管理8088CPU有20條地址線最大可尋址空間為2201MB物理地址范圍從00000HFFFFFH8088CPU將1MB空間分成許多邏輯段(Segment)每個段最大限制為64KB段地址的低4位為0000B這樣,一個存儲單元除具有一個唯一的物理地址外,還具有多個

18、邏輯地址物理地址和邏輯地址8088CPU有20條地址線8088CPU存儲系統中,對應每個物理存儲單元都有一個唯一的20位編號,就是物理地址,從00000H FFFFFH分段后在用戶編程時,采用邏輯地址,形式為段基地址 : 段內偏移地址物理地址 14700H邏輯地址 1460H:100H邏輯地址8088CPU有20條地址線段地址說明邏輯段在主存中的起始位置8088規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數據表示,就能用16位段寄存器表達段地址偏移地址說明主存單元距離段起始位置的偏移量每段不超過64KB,偏移地址也可用16位數據表示物理地址和邏輯地址的轉換

19、將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址一個物理地址可以有多個邏輯地址邏輯地址1460:100、1380:F00物理地址14700H 14700H3. 段寄存器8088有4個16位段寄存器CS(代碼段)指明代碼段的起始地址SS(堆棧段)指明堆棧段的起始地址DS(數據段)指明數據段的起始地址ES(附加段)指明附加段的起始地址每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途代碼段寄存器CS(Code Segment)代碼段用來存放程序的指令序列代碼段寄存器CS存放代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址理器利用CS:IP取得下一條要執(zhí)行的指令堆

20、棧段寄存器SS(Stack Segment)堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂的偏移地址處理器利用SS:SP操作堆棧頂的數據數據段寄存器DS(Data Segment)數據段存放運行程序所用的數據數據段寄存器DS存放數據段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用DS:EA存取數據段中的數據附加段寄存器ES(Extra Segment)附加段是附加的數據段,也保存數據:附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址處理器利用ES:EA存取附加段中的數據串

21、操作指令將附加段作為其目的操作數的存放區(qū)域如何分配各個邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數據默認是安排在數據段,也經常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數據的存放比較靈活,實際上可以存放在任何一種邏輯段中演示2寄存器的總結8088有8個8位通用寄存器、8個16位通用寄存器8088有6個狀態(tài)標志和3個控制標志8088將1MB存儲空間分段管理,有4個段寄存器,對應4種邏輯段8088有4個段超越前綴指令,用于明確指定數據所在的邏輯段2.2 微型計算機軟件體系立即數尋址方式寄存器尋址方式直接尋址方式寄存器間接尋址方式寄存器相對尋址方式基址變址尋址方式相對

22、基址變址尋址方式2.2.1 立即數尋址方式指令中的操作數直接存放在機器代碼中,緊跟在操作碼之后(操作數作為指令的一部分存放在操作碼之后的主存單元中)這種操作數被稱為立即數imm它可以是8位數值i8(00HFFH)也可以是16位數值i16(0000HFFFFH)立即數尋址方式常用來給寄存器賦值MOV AL,05H;AL05HMOV AX,0102H;AX0102H2.2.2 寄存器尋址方式操作數存放在CPU的內部寄存器reg中:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個段寄存器seg:CS、DS、SS、ES

23、MOV AX,1234H;AX1234HMOV BX,AX;BXAX2.2.3 直接尋址方式有效地址在指令中直接給出默認的段地址在DS段寄存器,可使用段超越前綴改變MOV AX,2000H;AXDS:2000H;指令代碼:A1 00 20MOV AX,ES:2000H;AXES:2000H;指令代碼:26 A1 00 20演示32.2.4 寄存器間接尋址方式有效地址存放在基址寄存器(BX或BP)或變址寄存器SI、DI中BX 、SI、DI默認的段地址在DS段寄存器,而BP默認的段地址在SS段寄存器.可使用段超越前綴改變MOV AX,SI;AXDS:SIMOV AX,ES:SI;AXES:SI演示

24、42.2.5 寄存器相對尋址方式有效地址是寄存器內容與有符號8位或16位位移量之和,寄存器可以是BX/BP或SI/DI有效地址BX/BP/SI/DI8/16位位移量段地址對應BX/SI/DI寄存器默認在DS,對應BP寄存器默認在SS;可用段超越前綴MOV AX,DI+06H ;AXDS:DI+06HMOV AX,BP+06H ;AXSS:BP+06H演示52.2.6 基址變址尋址方式有效地址由基址寄存器(BX或BP)的內容加上變址寄存器(SI或DI)的內容構成:有效地址BX/BPSI/DI段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴MOV AX,BX+SI

25、;AXDS:BX+SIMOV AX,BP+DI ;AXSS:BP+DIMOV AX,DS:BP+DI ;AXDS:BP+DI演示62.2.7 相對基址變址尋址方式有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴MOV AX,BX+SI+06H;AXDS:BX+SI+06H演示72.3 微處理器外部特性 8086的引腳信號2.3.1 8086/8088的工作模式兩種組態(tài)構成兩種不同規(guī)模的應用系統最小組態(tài)模式構成小規(guī)模的應用系統808

26、8本身提供所有的系統總線信號最大組態(tài)模式構成較大規(guī)模的應用系統,例如可以接入數值協處理器80878088和總線控制器8288共同形成系統總線信號2.3.1 8086/8088的工作模式(續(xù))兩種組態(tài)利用MN/MX*引腳區(qū)別MN/MX*接高電平為最小組態(tài)模式MN/MX*接低電平為最大組態(tài)模式兩種組態(tài)下的內部操作并沒有區(qū)別IBM PC/XT采用最大組態(tài)2.3.2 最小工作模式 8086/8088最小模式下的系統結構圖2.3.3 最小組態(tài)的引腳信號數據和地址引腳讀寫控制引腳中斷請求和響應引腳總線請求和響應引腳其它引腳1. 數據和地址引腳AD7AD0(Address/Data)地址/數據分時復用引腳,

27、雙向、三態(tài)在訪問存儲器或外設的總線操作周期中,這些引腳在第一個時鐘周期輸出存儲器或I/O端口的低8位地址A7A0其他時間用于傳送8位數據D7D0 1. 數據和地址引腳(續(xù)1)A15A8(Address) 中間8位地址引腳,輸出、三態(tài)這些引腳在訪問存儲器或外設時,提供全部20位地址中的中間8位地址A15A81. 數據和地址引腳(續(xù)2)A19/S6A16/S3(Address/Status)地址/狀態(tài)分時復用引腳,輸出、三態(tài)這些引腳在訪問存儲器的第一個時鐘周期輸出高4位地址A19A16在訪問外設的第一個時鐘周期全部輸出低電平無效其他時間輸出狀態(tài)信號S6S32. 讀寫控制引腳ALE(Address

28、Latch Enable)地址鎖存允許,輸出、三態(tài)、高電平有效ALE引腳高有效時,表示復用引腳:AD7AD0和A19/S6A16/S3正在傳送地址信息由于地址信息在這些復用引腳上出現的時間很短暫,所以系統可以利用ALE引腳將地址鎖存起來2. 讀寫控制引腳(續(xù)1)IO/M*(Input and Output/Memory) I/O或存儲器訪問,輸出、三態(tài)該引腳輸出高電平時,表示CPU將訪問I/O端口,這時地址總線A15A0提供16位I/O口地址該引腳輸出低電平時,表示CPU將訪問存儲器,這時地址總線A19A0提供20位存儲器地址 2. 讀寫控制引腳(續(xù)2)WR*(Write) 寫控制,輸出、三態(tài)

29、、低電平有效有效時,表示CPU正在寫出數據給存儲器或I/O端口RD*(Read)讀控制,輸出、三態(tài)、低電平有效有效時,表示CPU正在從存儲器或I/O端口讀入數據 2. 讀寫控制引腳(續(xù)3)IO/M*、WR*和RD*是最基本的控制信號組合后,控制4種基本的總線周期總線周期IO/M*WR*RD*存儲器讀低高低存儲器寫低低高I/O讀高高低I/O寫高低高2. 讀寫控制引腳(續(xù)4)READY 存儲器或I/O口就緒,輸入、高電平有效在總線操作周期中,8088 CPU會在第3個時鐘周期的前沿測試該引腳如果測到高有效,CPU直接進入第4個時鐘周期如果測到無效,CPU將插入等待周期TwCPU在等待周期中仍然要監(jiān)

30、測READY信號,有效則進入第4個時鐘周期,否則繼續(xù)插入等待周期Tw。 2. 讀寫控制引腳(續(xù)5)DEN*(Data Enable) 數據允許,輸出、三態(tài)、低電平有效有效時,表示當前數據總線上正在傳送數據,可利用他來控制對數據總線的驅動 DT/R*(Data Transmit/Receive)數據發(fā)送/接收,輸出、三態(tài)該信號表明當前總線上數據的流向高電平時數據自CPU輸出(發(fā)送)低電平時數據輸入CPU(接收) 2. 讀寫控制引腳(續(xù)6)SS0*(System Status 0) 最小組態(tài)模式下的狀態(tài)輸出信號它與IO/M*和DT/R*一道,通過編碼指示CPU在最小組態(tài)下的8種工作狀態(tài):1. 取指

31、5. 中斷響應2. 存儲器讀6. I/O讀3. 存儲器寫7. I/O寫4. 過渡狀態(tài)8. 暫停3. 中斷請求和響應引腳INTR(Interrupt Request) 可屏蔽中斷請求,輸入、高電平有效有效時,表示請求設備向CPU申請可屏蔽中斷該請求的優(yōu)先級別較低,并可通過關中斷指令CLI清除標志寄存器中的IF標志、從而對中斷請求進行屏蔽3. 中斷請求和響應引腳(續(xù)1)INTA*(Interrupt Acknowledge) 可屏蔽中斷響應,輸出、低電平有效有效時,表示來自INTR引腳的中斷請求已被CPU響應,CPU進入中斷響應周期中斷響應周期是連續(xù)的兩個,每個都發(fā)出有效響應信號,以便通知外設他們

32、的中斷請求已被響應、并令有關設備將中斷向量號送到數據總線 3. 中斷請求和響應引腳(續(xù)2)NMI(Non-Maskable Interrupt) 不可屏蔽中斷請求,輸入、上升沿有效有效時,表示外界向CPU申請不可屏蔽中斷該請求的優(yōu)先級別高于INTR,并且不能在CPU內被屏蔽當系統發(fā)生緊急情況時,可通過他向CPU申請不可屏蔽中斷服務主機與外設進行數據交換通常采用可屏蔽中斷不可屏蔽中斷通常用于處理掉電等系統故障4. 總線請求和響應引腳HOLD總線保持(即總線請求),輸入、高電平有效有效時,表示總線請求設備向CPU申請占有總線該信號從有效回到無效時,表示總線請求設備對總線的使用已經結束,通知CPU收

33、回對總線的控制權 DMA控制器等主控設備通過HOLD申請占用系統總線(通常由CPU控制)4. 總線請求和響應引腳(續(xù)1)HLDA(HOLD Acknowledge)總線保持響應(即總線響應),輸出、高電平有效有效時,表示CPU已響應總線請求并已將總線釋放此時CPU的地址總線、數據總線及具有三態(tài)輸出能力的控制總線將全面呈現高阻,使總線請求設備可以順利接管總線待到總線請求信號HOLD無效,總線響應信號HLDA也轉為無效,CPU重新獲得總線控制權 5. 其它引腳RESET復位請求,輸入、高電平有效該信號有效,將使CPU回到其初始狀態(tài);當他再度返回無效時,CPU將重新開始工作8088復位后CSFFFF

34、H、IP0000H,所以程序入口在物理地址FFFF0H5. 其它引腳(續(xù)1)CLK(Clock) 時鐘輸入系統通過該引腳給CPU提供內部定時信號。8088的標準工作時鐘為5MHzIBM PC/XT機的8088采用了4.77MHz的時鐘,其周期約為210ns 5. 其它引腳(續(xù)2)Vcc電源輸入,向CPU提供5V電源GND接地,向CPU提供參考地電平MN/MX*(Minimum/Maximum)組態(tài)選擇,輸入接高電平時,8088引腳工作在最小組態(tài);反之,8088工作在最大組態(tài) 5. 其它引腳(續(xù)3)TEST*測試,輸入、低電平有效該引腳與WAIT指令配合使用當CPU執(zhí)行WAIT指令時,他將在每個

35、時鐘周期對該引腳進行測試:如果無效,則程序踏步并繼續(xù)測試;如果有效,則程序恢復運行也就是說,WAIT指令使CPU產生等待,直到引腳有效為止在使用協處理器8087時,通過引腳和WAIT指令,可使8088與8087的操作保持同步 2.4 微型計算機工作時序時鐘周期微處理器執(zhí)行指令的最小時間單位,通常稱為一個T狀態(tài)指令周期指從取指令到執(zhí)行完畢所需要的時間總線周期指通過外部總線對存儲器或I/O端口進行一次讀/寫操作的過程2.4.1 8086/8088 操作時序時序就是對信號隨時間變化的規(guī)律以及信號間的相互關系的描述。這些相互關系通過時序圖來描述??偩€時序是指在總線操作中相關信號的時序??偩€操作是指發(fā)生

36、在總線上的某些特定的操作,包括:存儲器讀和I/O讀、存儲器寫和I/O寫、中斷響應、總線請求及響應等。2.4.2 最小模式下總線操作時序微處理器最基本的4種總線周期存儲器讀總線周期存儲器寫總線周期I/O讀總線周期I/O寫總線周期存儲器寫總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸出數據A19A16S6S3READY(高電平)IO/M*WR*T1狀態(tài)輸出20位存儲器地址A19A0IO/M*輸出低電平,表示存儲器操作;ALE輸出正脈沖,表示復用總線輸出地址T2狀態(tài)輸出控制信號WR*和數據D7D0T3和Tw狀態(tài)檢測數據傳送是否能夠完成T4狀態(tài)完

37、成數據傳送I/O寫總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸出數據0000S6S3READY(高電平)IO/M*WR*T1狀態(tài)輸出16位I/O地址A15A0IO/M*輸出高電平,表示I/O操作;ALE輸出正脈沖,表示復用總線輸出地址T2狀態(tài)輸出控制信號WR*和數據D7D0T3和Tw狀態(tài)檢測數據傳送是否能夠完成T4狀態(tài)完成數據傳送存儲器讀總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸入數據A19A16S6S3READY(高電平)IO/M*RD*T1狀態(tài)輸出20位存儲器地址A19A0

38、IO/M*輸出低電平,表示存儲器操作;ALE輸出正脈沖,表示復用總線輸出地址T2狀態(tài)輸出控制信號RD*T3和Tw狀態(tài)檢測數據傳送是否能夠完成T4狀態(tài)前沿讀取數據,完成數據傳送I/O讀總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸入數據S6S3READY(高電平)IO/M*RD*0000T1狀態(tài)輸出16位I/O地址A15A0IO/M*輸出高電平,表示I/O操作;ALE輸出正脈沖,表示復用總線輸出地址T2狀態(tài)輸出控制信號RD*T3和Tw狀態(tài)檢測數據傳送是否能夠完成T4狀態(tài)前沿讀取數據,完成數據傳送插入等待狀態(tài)Tw同步時序通過插入等待狀態(tài),來使

39、速度差別較大的兩部分保持同步在讀寫總線周期中,判斷是否插入Tw1. 在T3的前沿檢測READY引腳是否有效2. 如果READY無效,在T3和T4之間插入一個等效于T3的Tw ,轉13. 如果READY有效,執(zhí)行完該T狀態(tài),進入T4狀態(tài)8088的內部結構1 2 3 4 內部暫存器 IP ES SS DS CS輸入/輸出控制電路外部總線執(zhí)行部分控制電路ALU標志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器地址加法器指令隊列執(zhí)行部件 (EU)總線接口部件 (BIU)16位20位8位8位返回8088的指令執(zhí)行過程返回什么是分時復用?分時復用就是一個引腳在不同的

40、時刻具有兩個甚至多個作用最常見的總線復用是數據和地址引腳復用 總線復用的目的是為了減少對外引腳個數8088 /8086CPU的數據地址線采用了總線復用方法基本控制信號的組合方法I/O讀I/O寫存儲器讀存儲器寫邏輯段的分配匯編語言及開發(fā)環(huán)境3.1 匯編語言程序設計基礎以助記符形式表示計算機指令助記符(mnemonic)是便于人們記憶、并能描述指令功能和指令操作數的符號助記符是表明指令功能的英語單詞或其縮寫匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(Assembly Language)匯編語言程序:用匯編語言書寫的程序匯編程序:將匯編語言程序“匯編”成機器代碼目標模塊的程序3.1.1 匯

41、編語言特點匯編語言的優(yōu)點:直接控制計算機硬件部件編寫“時間”和“空間”兩方面最有效程序匯編語言的缺點:與處理器密切有關需要熟悉計算機硬件系統、考慮許多細節(jié)編寫繁瑣,調試、維護、交流和移植困難3.1.2 8086指令系統概述Intel 8086指令系統共有117條基本指令可分成6個功能組數據傳送類指令算術運算類指令位操作類指令串操作類指令控制轉移類指令處理機控制類指令由4部分組成:標號:-標號表示該指令在主存中的邏輯地址指令助記符-代表一種指令目的操作數,源操作數-表示參與操作的對象;注釋-對該指令或程序段功能的說明3.1.2 8086指令系統概述1.數據傳送類指令數據傳送指令是將源操作數傳送到

42、目標操作數,即將數據、地址或立即數從一個位置傳送到存儲單元中。數據傳送指令是最常使用的一類指令除標志寄存器傳送指令外,均不影響標志位指令包括:MOV,PUSH,POP,XCHG,LEA,LDS/LES,XLAT,IN,OUT(1)傳送指令MOVMOV reg/mem,imm立即數送寄存器或主存MOV reg/mem/seg,reg寄存器送(段)寄存器或主存MOV reg/seg,mem主存送(段)寄存器MOV reg/mem,seg段寄存器送寄存器或主存 舉例演示8立即數段寄存器CS DS ES SS通用寄存器AX BX CX DXBP SP SI DI存儲器MOV 舉例例:MOV數據傳送MO

43、V AL, 20HMOV AH, ALMOV SI, 200HMOV AX, BXMOV DI, AXMOV AX, DSMOV ES, AXMOV BYTE PTR SI,0AHMov WORD PTR SI+2,0BH(2)堆棧指令PUSH POP堆棧:后進先出FILO,位于堆棧段;SS段寄存器記錄其段地址堆棧只有一個出口,即當前棧頂;用堆棧指針寄存器SP指定演示9PUSH格式:PUSH src操作:SPSP2,SS:SPsrc,將堆棧指針SP減2,再將src壓入堆棧頂部,src為16位操作數例: PUSH AX ;將AX內容壓入堆棧 ;(SP)1AH,高地址存入高字節(jié) ; (SP)2AL

44、,低地址存入低字節(jié) ; (SP)(SP)2,SP指向新棧頂PUSH壓入堆棧指令演示10POP格式:POP dest操作:destSS:SP,SPSP 2,將棧頂的一個字彈出傳送到dest,再將SP加2,將SP指向新的棧頂,dest 的尋址方式是除立即尋址之外的所有存儲器尋址方式和寄存器尋址方式。例: POP BX ;將棧頂內容彈出到BX ;(BL)(SP),低地址彈出到低字節(jié) ;(BH)(SP) 1,高地址彈出到高字節(jié) ;(SP)(SP) 2,SP指向新棧頂POP彈出堆棧指令演示11DOS命令環(huán)境(介紹DEBUG命令P110)(3)交換指令XCHG把兩個地方的數據進行互換XCHG reg,re

45、g/mem ;reg reg/mem寄存器與寄存器之間對換數據寄存器與存儲器之間對換數據不能在存儲器與存儲器之間對換數據舉例演示12(3)交換指令XCHG 舉例例:MOV AX, 1234H XCHG AH, AL ;AX高低字節(jié)交換, ;結果:AX = 3412HMOV BX, 0ABCDH XCHG AX, BX ;AX與BX交換內容, ;結果:AX = 0ABCDH ;BX = 3412HXCHG 2000H, CL 將DS:2000H內容與 ;CL計數器低字節(jié)進行字節(jié)交換(4)有效地址傳送指令LEA將存儲器操作數的有效地址傳送至指定的16位寄存器中LEA r16,mem ;r16mem

46、的有效地址EA舉例(4)有效地址傳送指令LEA 舉例例:設:(SI)=2000HLEABX,SI3412H 執(zhí)行指令結果將偏移地址3010H傳送到BX,即(BX)=5412H(5) LDS/LES指針傳送指令LDS r16,mem;r16mem,;DSmem+2LDS指令將主存中mem指定的字送至r16,并將mem的下一字送DS寄存器LES r16,mem;r16mem,;ESmem+2LES指令將主存中mem指定的字送至r16,并將mem的下一字送ES寄存器(6)XLAT換碼指令將BX指定的緩沖區(qū)中、AL指定的位移處的一個字節(jié)數據取出賦給ALXLAT ;ALDS:BX+AL換碼指令執(zhí)行前:主

47、存建立一個字節(jié)量表格,含要轉換成的目的代碼表格首地址存放于BX,AL存放相對表格首的位移量換碼指令執(zhí)行后:將AL寄存器的內容轉換為目標代碼演示132.輸入輸出指令8086通過輸入輸出指令與外設進行數據交換;呈現給程序員的外設是端口(Port)即I/O地址8086用于尋址外設端口的地址線為16條,端口最多為21665536(64K)個,端口號為0000HFFFFH每個端口用于傳送一個字節(jié)的外設數據(1)IN輸入指令將外設數據傳送給CPU內的AL/AXIN AL,i8;字節(jié)輸入:ALI/O端口(i8直接尋址)IN AL,DX;字節(jié)輸入:ALI/O端口(DX間接尋址)IN AX,i8;字輸入:AXI

48、/O端口(i8直接尋址)IN AX,DX;字輸入:AXI/O端口(DX間接尋址)舉例例:IN AL, 80H ;(AL)(80H端口),從80H端口讀入字節(jié)信息存放在AL寄存器IN AX, DX ;(AL)(DX),從DX中裝載的端口讀入字信息存放在AX寄存器(1)IN輸入指令 舉例(2)OUT輸入指令將CPU內的AL/AX數據傳送給外設OUT i8,AL;字節(jié)輸出:I/O端口AL(i8直接尋址)OUT DX,AL;字節(jié)輸出:I/O端口AL(DX間接尋址)OUT i8,AX;字輸出:I/O端口AX(i8直接尋址)OUT DX,AX;字輸出:I/O端口AX(DX間接尋址)舉例(2)OUT輸入指令

49、 舉例例:以下指令實現將外部設備端口80H的字節(jié)信息傳送到存儲單元DDATA;從外設端口0A2FH端口讀入一字信息,再將讀入的信息輸出到端口0AA5H的外設上。DDATA DW ?IN AX, 80HMOV DDATA, AXMOV DX, 0A2FHIN AX, DXMOV DX, 0AA5HOUT DX, AX3.算術運算指令四則運算是計算機經常進行的一種操作。算術運算指令實現二進制(和十進制)數據的四則運算請注意算術運算類指令對標志的影響指令包括:ADD、ADC、INC、DAA、AAA、SUB、SBB、DEC、CMP、NEG、AAS/DAS、MUL、IMUL、DIV、IDIV、CBW、C

50、WD、(1) ADD加法指令ADD指令將源與目的操作數相加,結果送到目的操作數ADD指令按狀態(tài)標志的定義相應設置ADD reg,imm/reg/mem;regregimm/reg/memADD mem,imm/reg;memmemimm/reg舉例(1) ADD加法指令 舉例例:ADD AL, 12H ;AL中內容和12H相加,結果放在AL中ADD SI, BX20H ;SI中內容和BX20H;BX21H所指兩存儲單元內容相加,結果在SI中ADD SI, CX ;SI和CX內容相加,結果在SI中ADD BXSI, AX ;BXSI和BXSI1兩單元內容與AX中內容相加;結果在BXSI,BXSI

51、1所指單元中(2) ADC帶進位的加法ADC指令將源與目的操作數相加,再加上進位CF標志,結果送到目的操作數ADC指令按狀態(tài)標志的定義相應設置ADC指令主要與ADD配合,實現多精度加法運算ADC reg,imm/reg/mem;regregimm/reg/memCFADC mem,imm/reg;memmemimm/regCF舉例(2) ADC帶進位的加法 舉例例:ADC AL, 34H ;AL(AL)34H(CF)ADC AX, CX ;AX(AX)(CX)(CF)ADC BX,DI ;BX(BX)DI1DI(CF)(3) INC加1指令 INC指令對操作數加1(增量)INC指令不影響進位C

52、F標志,按定義設置其他狀態(tài)標志INC reg/mem;reg/memreg/mem1例:INC BXINC BYTE PTR BX(4) SUB 不考慮借位的減法指令SUB指令將目的操作數減去源操作數,結果送到目的操作數SUB指令按照定義相應設置狀態(tài)標志SUB reg,imm/reg/mem;regregimm/reg/memSUB mem,imm/reg;memmemimm/reg舉例(4) SUB 不考慮借位的減法指令 舉例例:SUB AH, 0F0H ;AH (AH) 0F0HSUB BX20H, DX ;BX20H (BX20H) (DX)SUB AX, CX(5) SBB 考慮借位的

53、減法指令SBB指令將目的操作數減去源操作數,再減去借位CF(進位),結果送到目的操作數。SBB指令按照定義相應設置狀態(tài)標志SBB指令主要與SUB配合,實現多精度減法運算SBB reg,imm/reg/mem;regregimm/reg/memCFSBB mem,imm/reg;memmemimm/regCF舉例(5) SBB 考慮借位的減法指令 舉例例:MOV AX, 5678HMOV DX, 1234HSUB AX, 6789H;CF = 1SBB DX, 1122H;DX = 0111H(6) DEC 減1指令DEC指令對操作數減1(減量)DEC指令不影響進位CF標志,按定義設置其他狀態(tài)標

54、志DEC reg/mem;reg/memreg/mem1(7) CMP 比較指令CMP指令將目的操作數減去源操作數,按照定義相應設置狀態(tài)標志CMP指令執(zhí)行的功能與SUB指令,但結果不回送目的操作數CMP reg,imm/reg/mem;regimm/reg/memCMP mem,imm/reg;memimm/reg舉例(7) CMP 比較指令 舉例例:CMP AL, 0AHCMP CX, DICMP DI, BX03CMP AX, AREA1(7) NEG 求補指令NEG指令對操作數執(zhí)行求補運算:用零減去操作數,然后結果返回操作數求補運算也可以表達成:將操作數按位取反后加1NEG指令對標志的影

55、響與用零作減法的SUB指令一樣NEG reg/mem;reg/mem0reg/mem(8)乘法指令舉例MUL r8/m8;無符號字節(jié)乘法;AXALr8/m8MUL r16/m16;無符號字乘法;DX.AXAXr16/m16IMUL r8/m8;有符號字節(jié)乘法;AXALr8/m8IMUL r16/m16;有符號字乘法;DX.AXAXr16/m16(8)乘法指令 舉例例1:2AH 3EHMOV AL, 2AHMOV BL, 3EHMUL BL ;AX=0A2CH,OF = CF = 1 ;AX高8位含有有效數值,非符號擴展例264H 0A5HMOV AL, 64HMOV BL, 0A5HIMUL

56、BL ;AX = 0DC74H,9100,OF = CF = 1 ;AX高8位含有有效數值,非符號擴展舉例(9)除法指令DIV r8/m8;無符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數DIV r16/m16;無符號字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余數IDIV r8/m8;有符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數IDIV r16/m16;有符號字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余數(9)除法指令 舉例例:3E2CH 5BHMOV AX, 3E2CHMOV BL, 5BHD

57、IV BLMOV AX,0400H ;AX=400H=1024MOV BL,0b4H ;BL=b4H=76IDIV BL ;商ALF3h13 ;余數AH24H36(10)其它算術指令舉例CBW;AL的符號擴展至AH;如AL的最高有效位是0,則AH00;AL的最高有效位為1,則AHFFH。AL不變CWD;AX的符號擴展至DX;如AX的最高有效位是0,則DX00;AX的最高有效位為1,則DXFFFFH。AX不變(10)其它算術指令 舉例例:MOV AL, 0ABHCBW ;AX = 0FFABHMOV AX, 1234HCWD ;DX = 0000H,AX = 1234H4.位操作指令位操作類指令

58、以二進制位為基本單位進行數據的操作這是一類常用的指令,都應該掌握注意這些指令對標志位的影響邏輯運算指令AND OR XOR NOT TEST移位指令SHL SHR SAR ROL ROR RCL RCR(1) AND 邏輯“與”指令對兩個操作數執(zhí)行邏輯與運算,結果送到目的操作數AND reg,imm/reg/memregregimm/reg/memAND mem,imm/reg;memmemimm/regAND指令設置CF = OF = 0,根據結果設置SF、ZF和PF狀態(tài),而對AF未定義例:AND AL, 10010011 ;將AL中的第0、1、4、7位保留,其他位清零(2) OR邏輯“或”

59、指令對兩個操作數執(zhí)行邏輯或運算,結果送到目的操作數OR reg,imm/reg/mem;regregimm/reg/memOR mem,imm/reg;memmemimm/regOR指令設置CF = OF = 0,根據結果設置SF、ZF和PF狀態(tài),而對AF未定義例:OR BL, 0F0H ;將BL的高4為置1,其他位不變(3)XOR邏輯“異或”指令對兩個操作數執(zhí)行邏輯異或運算,結果送到目的操作數XOR reg,imm/reg/mem;regregimm/reg/memXOR mem,imm/reg;memmemimm/regXOR指令設置CF = OF = 0,根據結果設置SF、ZF和PF狀態(tài)

60、,而對AF未定義例:XOR AL, 0A5H ;將AL的第0、2、5和7位取反,其他位不變(4) TEST 測試指令對兩個操作數執(zhí)行邏輯與運算,結果不回送到目的操作數TEST reg,imm/reg/mem;regimm/reg/memTEST mem,imm/reg;memimm/regTEST指令設置CF = OF = 0,根據結果設置SF、ZF和PF狀態(tài),而對AF未定義例:TEST AX, 0010H ;若ZF = 0,則AX第4位為1,否則,第4位為0(5) NOT邏輯“非”指令對一個操作數執(zhí)行邏輯非運算NOT reg/mem;reg/memreg/memNOT指令是一個單操作數指令N

溫馨提示

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

評論

0/150

提交評論