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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

3、器微型計(jì)算機(jī)微型計(jì)算機(jī)系統(tǒng)區(qū)別圖1.1 微型計(jì)算機(jī)的系統(tǒng)組成控制總線(xiàn)CB數(shù)據(jù)總線(xiàn)DB地址總線(xiàn)AB系統(tǒng)總線(xiàn)形成處理器子系統(tǒng)I/O設(shè)備I/O接口存儲(chǔ)器系統(tǒng)總線(xiàn)BUS1.2.1 微型計(jì)算機(jī)的硬件系統(tǒng)微處理器子系統(tǒng)存儲(chǔ)器I/O設(shè)備和I/O接口系統(tǒng)總線(xiàn)系統(tǒng)總線(xiàn)總線(xiàn)是指?jìng)鬟f信息的一組公用導(dǎo)線(xiàn)總線(xiàn)是傳送信息的公共通道微機(jī)系統(tǒng)采用總線(xiàn)結(jié)構(gòu)連接系統(tǒng)功能部件總線(xiàn)信號(hào)可分成三組地址總線(xiàn)AB:傳送地址信息數(shù)據(jù)總線(xiàn)DB :傳送數(shù)據(jù)信息控制總線(xiàn)CB :傳送控制信息總線(xiàn)信號(hào)地址總線(xiàn)AB輸出將要訪(fǎng)問(wèn)的內(nèi)存單元或I/O端口的地址地址線(xiàn)的多少?zèng)Q定了系統(tǒng)直接尋址存儲(chǔ)器的范圍數(shù)據(jù)總線(xiàn)DBCPU讀操作時(shí),外部數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)送往CPU

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

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

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

7、件結(jié)構(gòu)算術(shù)邏輯單元(運(yùn)算器)寄存器組指令處理單元(控制器)2.1.1 8088/8086的功能結(jié)構(gòu)8088的內(nèi)部結(jié)構(gòu)從功能分成兩個(gè)單元總線(xiàn)接口單元BIU管理8088與系統(tǒng)總線(xiàn)的接口,負(fù)責(zé)CPU對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪(fǎng)問(wèn)執(zhí)行單元EU負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算兩個(gè)單元相互獨(dú)立,分別完成各自操作兩個(gè)單元可以并行執(zhí)行(演示1),實(shí)現(xiàn)指令取指和執(zhí)行的流水線(xiàn)操作2.1.2 8086/8088 寄存器結(jié)構(gòu)8088/8086的寄存器組有8個(gè)通用寄存器4個(gè)段寄存器1個(gè)標(biāo)志寄存器1個(gè)指令指針寄存器寄存器均為16位!圖示1. 通用寄存器8088有8個(gè)通用的16位寄存器(1)數(shù)據(jù)寄存器: AX BX CX DX(2

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

9、存器SI和DI常用于存儲(chǔ)器變址尋址方式時(shí)提供地址SI是源地址寄存器(Source Index)DI是目的地址寄存器(Destination Index)在串操作類(lèi)指令中,SI、DI還有較特殊的用法(3)指針寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器(Stack Pointer),指示堆棧段棧頂?shù)奈恢茫ㄆ频刂罚〣P為基址指針寄存器(Base Pointer),表示數(shù)據(jù)在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址2. 指令指針寄存器IP(Instruction Pointer)為指令指針寄存器,指示主存儲(chǔ)器指令的位置隨著指令的執(zhí)行,IP將

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

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

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

13、明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確3AH7CHB6H,就是58124182,已經(jīng)超出128127范圍,產(chǎn)生溢出,故OF1;補(bǔ)碼B6H表達(dá)真值是74,顯然運(yùn)算結(jié)果也不正確 B6H10110110B,最高位為1,作為有符號(hào)數(shù)是負(fù)數(shù) 對(duì)B6H求反加1等于:01001001B101001010B4AH74 所以,B6H表達(dá)有符號(hào)數(shù)的真值為74溢出和進(jìn)位的區(qū)別溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確溢出的判斷判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù)相減

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

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

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

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

18、邏輯地址物理地址和邏輯地址8088CPU有20條地址線(xiàn)8088CPU存儲(chǔ)系統(tǒng)中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的20位編號(hào),就是物理地址,從00000H FFFFFH分段后在用戶(hù)編程時(shí),采用邏輯地址,形式為段基地址 : 段內(nèi)偏移地址物理地址 14700H邏輯地址 1460H:100H邏輯地址8088CPU有20條地址線(xiàn)段地址說(shuō)明邏輯段在主存中的起始位置8088規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址偏移地址說(shuō)明主存單元距離段起始位置的偏移量每段不超過(guò)64KB,偏移地址也可用16位數(shù)據(jù)表示物理地址和邏輯地址的轉(zhuǎn)換

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

20、棧段寄存器SS(Stack Segment)堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂诽幚砥骼肧S:SP操作堆棧頂?shù)臄?shù)據(jù)數(shù)據(jù)段寄存器DS(Data Segment)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)附加段寄存器ES(Extra Segment)附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用ES:EA存取附加段中的數(shù)據(jù)串

21、操作指令將附加段作為其目的操作數(shù)的存放區(qū)域如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中演示2寄存器的總結(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種邏輯段8088有4個(gè)段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段2.2 微型計(jì)算機(jī)軟件體系立即數(shù)尋址方式寄存器尋址方式直接尋址方式寄存器間接尋址方式寄存器相對(duì)尋址方式基址變址尋址方式相對(duì)

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

23、MOV AX,1234H;AX1234HMOV BX,AX;BXAX2.2.3 直接尋址方式有效地址在指令中直接給出默認(rèn)的段地址在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默認(rèn)的段地址在DS段寄存器,而B(niǎo)P默認(rèn)的段地址在SS段寄存器.可使用段超越前綴改變MOV AX,SI;AXDS:SIMOV AX,ES:SI;AXES:SI演示

24、42.2.5 寄存器相對(duì)尋址方式有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX/BP或SI/DI有效地址BX/BP/SI/DI8/16位位移量段地址對(duì)應(yīng)BX/SI/DI寄存器默認(rèn)在DS,對(duì)應(yīng)BP寄存器默認(rèn)在SS;可用段超越前綴MOV AX,DI+06H ;AXDS:DI+06HMOV AX,BP+06H ;AXSS:BP+06H演示52.2.6 基址變址尋址方式有效地址由基址寄存器(BX或BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址BX/BPSI/DI段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是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 相對(duì)基址變址尋址方式有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴MOV AX,BX+SI+06H;AXDS:BX+SI+06H演示72.3 微處理器外部特性 8086的引腳信號(hào)2.3.1 8086/8088的工作模式兩種組態(tài)構(gòu)成兩種不同規(guī)模的應(yīng)用系統(tǒng)最小組態(tài)模式構(gòu)成小規(guī)模的應(yīng)用系統(tǒng)808

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

42、目標(biāo)操作數(shù),即將數(shù)據(jù)、地址或立即數(shù)從一個(gè)位置傳送到存儲(chǔ)單元中。數(shù)據(jù)傳送指令是最常使用的一類(lèi)指令除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位指令包括:MOV,PUSH,POP,XCHG,LEA,LDS/LES,XLAT,IN,OUT(1)傳送指令MOVMOV reg/mem,imm立即數(shù)送寄存器或主存MOV reg/mem/seg,reg寄存器送(段)寄存器或主存MOV reg/seg,mem主存送(段)寄存器MOV reg/mem,seg段寄存器送寄存器或主存 舉例演示8立即數(shù)段寄存器CS DS ES SS通用寄存器AX BX CX DXBP SP SI DI存儲(chǔ)器MOV 舉例例:MOV數(shù)據(jù)傳送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堆棧:后進(jìn)先出FILO,位于堆棧段;SS段寄存器記錄其段地址堆棧只有一個(gè)出口,即當(dāng)前棧頂;用堆棧指針寄存器SP指定演示9PUSH格式:PUSH src操作:SPSP2,SS:SPsrc,將堆棧指針SP減2,再將src壓入堆棧頂部,src為16位操作數(shù)例: PUSH AX ;將AX內(nèi)容壓入堆棧 ;(SP)1AH,高地址存入高字節(jié) ; (SP)2AL

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

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

46、的有效地址EA舉例(4)有效地址傳送指令LEA 舉例例:設(shè):(SI)=2000HLEABX,SI3412H 執(zhí)行指令結(jié)果將偏移地址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指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給ALXLAT ;ALDS:BX+AL換碼指令執(zhí)行前:主

47、存建立一個(gè)字節(jié)量表格,含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對(duì)表格首的位移量換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼演示132.輸入輸出指令8086通過(guò)輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port)即I/O地址8086用于尋址外設(shè)端口的地址線(xiàn)為16條,端口最多為21665536(64K)個(gè),端口號(hào)為0000HFFFFH每個(gè)端口用于傳送一個(gè)字節(jié)的外設(shè)數(shù)據(jù)(1)IN輸入指令將外設(shè)數(shù)據(jù)傳送給CPU內(nèi)的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é)信息存放在A(yíng)L寄存器IN AX, DX ;(AL)(DX),從DX中裝載的端口讀入字信息存放在A(yíng)X寄存器(1)IN輸入指令 舉例(2)OUT輸入指令將CPU內(nèi)的AL/AX數(shù)據(jù)傳送給外設(shè)OUT i8,AL;字節(jié)輸出:I/O端口A(yíng)L(i8直接尋址)OUT DX,AL;字節(jié)輸出:I/O端口A(yíng)L(DX間接尋址)OUT i8,AX;字輸出:I/O端口A(yíng)X(i8直接尋址)OUT DX,AX;字輸出:I/O端口A(yíng)X(DX間接尋址)舉例(2)OUT輸入指令

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

50、WD、(1) ADD加法指令A(yù)DD指令將源與目的操作數(shù)相加,結(jié)果送到目的操作數(shù)ADD指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADD reg,imm/reg/mem;regregimm/reg/memADD mem,imm/reg;memmemimm/reg舉例(1) ADD加法指令 舉例例:ADD AL, 12H ;AL中內(nèi)容和12H相加,結(jié)果放在A(yíng)L中ADD SI, BX20H ;SI中內(nèi)容和BX20H;BX21H所指兩存儲(chǔ)單元內(nèi)容相加,結(jié)果在SI中ADD SI, CX ;SI和CX內(nèi)容相加,結(jié)果在SI中ADD BXSI, AX ;BXSI和BXSI1兩單元內(nèi)容與AX中內(nèi)容相加;結(jié)果在BXSI,BXSI

51、1所指單元中(2) ADC帶進(jìn)位的加法ADC指令將源與目的操作數(shù)相加,再加上進(jìn)位CF標(biāo)志,結(jié)果送到目的操作數(shù)ADC指令按狀態(tài)標(biāo)志的定義相應(yīng)設(shè)置ADC指令主要與ADD配合,實(shí)現(xiàn)多精度加法運(yùn)算ADC reg,imm/reg/mem;regregimm/reg/memCFADC mem,imm/reg;memmemimm/regCF舉例(2) ADC帶進(jìn)位的加法 舉例例: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指令對(duì)操作數(shù)加1(增量)INC指令不影響進(jìn)位C

52、F標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志INC reg/mem;reg/memreg/mem1例:INC BXINC BYTE PTR BX(4) SUB 不考慮借位的減法指令SUB指令將目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù)SUB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志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指令將目的操作數(shù)減去源操作數(shù),再減去借位CF(進(jìn)位),結(jié)果送到目的操作數(shù)。SBB指令按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志SBB指令主要與SUB配合,實(shí)現(xiàn)多精度減法運(yùn)算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指令對(duì)操作數(shù)減1(減量)DEC指令不影響進(jìn)位CF標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)

54、志DEC reg/mem;reg/memreg/mem1(7) CMP 比較指令CMP指令將目的操作數(shù)減去源操作數(shù),按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志CMP指令執(zhí)行的功能與SUB指令,但結(jié)果不回送目的操作數(shù)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 求補(bǔ)指令NEG指令對(duì)操作數(shù)執(zhí)行求補(bǔ)運(yùn)算:用零減去操作數(shù),然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取反后加1NEG指令對(duì)標(biāo)志的影

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論