版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1.1 微型計(jì)算機(jī)的發(fā)展和應(yīng)用1946年,世界上出現(xiàn)第一臺數(shù)字式電子計(jì)算機(jī)ENIAC(電子數(shù)據(jù)和計(jì)算器)發(fā)展到以大規(guī)模集成電路為主要部件的第四代,產(chǎn)生了微型計(jì)算機(jī)1971年,Intel公司設(shè)計(jì)了世界上第一個微處理器芯片Intel4004,開創(chuàng)了一個全新的計(jì)算機(jī)時代1.1.1 微型計(jì)算機(jī)的發(fā)展第一時期微型計(jì)算機(jī)(1971年1973年)4位和低檔8位CPU,4004-4040-8080第二時期微型計(jì)算機(jī)(1974年1977年) 中高檔8位CPU,Z80、 MC6800第三時期微型計(jì)算機(jī)(1978年1984年)16位CPU和微機(jī),8086-8088-80286第四時期微型計(jì)算機(jī)(1985年1993年
2、) 32位高檔CPU, 80386- 80486第五時期微型計(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)越好、使用越方便越好人工智能和過程自動化控制方面工業(yè)PC機(jī)、工控機(jī)、可編程邏輯控制器、微控制器、數(shù)字信號處理器人工智能網(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)算器 控制器 寄存器組 存儲器 總線輸入/輸出接口電路外部設(shè)備 軟件微處理
3、器微型計(jì)算機(jī)微型計(jì)算機(jī)系統(tǒng)區(qū)別圖1.1 微型計(jì)算機(jī)的系統(tǒng)組成控制總線CB數(shù)據(jù)總線DB地址總線AB系統(tǒng)總線形成處理器子系統(tǒng)I/O設(shè)備I/O接口存儲器系統(tǒng)總線BUS1.2.1 微型計(jì)算機(jī)的硬件系統(tǒng)微處理器子系統(tǒng)存儲器I/O設(shè)備和I/O接口系統(tǒng)總線系統(tǒng)總線總線是指傳遞信息的一組公用導(dǎo)線總線是傳送信息的公共通道微機(jī)系統(tǒng)采用總線結(jié)構(gòu)連接系統(tǒng)功能部件總線信號可分成三組地址總線AB:傳送地址信息數(shù)據(jù)總線DB :傳送數(shù)據(jù)信息控制總線CB :傳送控制信息總線信號地址總線AB輸出將要訪問的內(nèi)存單元或I/O端口的地址地址線的多少決定了系統(tǒng)直接尋址存儲器的范圍數(shù)據(jù)總線DBCPU讀操作時,外部數(shù)據(jù)通過數(shù)據(jù)總線送往CPU
4、 CPU寫操作時,CPU數(shù)據(jù)通過數(shù)據(jù)總線送往外部數(shù)據(jù)線的多少決定了一次能夠傳送數(shù)據(jù)的位數(shù)控制總線CB協(xié)調(diào)系統(tǒng)中各部件的操作,有輸出控制、輸入狀態(tài)等信號控制總線決定了系統(tǒng)總線的特點(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為什么采用匯編語言?1.2.3 微型計(jì)算機(jī)系統(tǒng)工作原理取指令分析指令執(zhí)行指令 微型計(jì)算機(jī)執(zhí)行程序的過程,實(shí)際上就是重復(fù)的完成上述取指令、分析指令和執(zhí)行指令的過程,直到遇到停機(jī)指令時,CPU處于動態(tài)停機(jī)狀態(tài),才結(jié)束整個機(jī)器的運(yùn)行。1.3 微型計(jì)
5、算機(jī)接口技術(shù)概述接口是指兩個部件之間的交接部件。微型計(jì)算機(jī)接口的作用有以下幾個方面:匹配工作速度匹配信息格式實(shí)現(xiàn)信息傳遞明確3個概念的區(qū)別微處理器(Microprocessor)一個大規(guī)模集成電路芯片內(nèi)含控制器、運(yùn)算器和寄存器等微機(jī)中的核心芯片微型計(jì)算機(jī)(Microcomputer)通常指微型計(jì)算機(jī)的硬件系統(tǒng)還有一般的說法:微機(jī)、微型機(jī)微型計(jì)算機(jī)系統(tǒng)(Microcomputer system)指由硬件和軟件共同組成的完整的計(jì)算機(jī)系統(tǒng)返回Intel 80 x86CPU的地址線條數(shù)Intel80 x86地址條數(shù)存儲容量8086201MB8088201MB802862416MB80386324GBP
6、entium4返回Intel 80 x86CPU的數(shù)據(jù)線條數(shù)Intel 80 x86數(shù)據(jù)位數(shù)80861680888802861680386Pentium 432返回系統(tǒng)總線的使用特點(diǎn)除了CPU外,還有DMA控制器和協(xié)處理器都具有控制系統(tǒng)總線的能力。它們被稱為“總線主控設(shè)備”在某一個時刻,只能由一個總線主控設(shè)備來控制系統(tǒng)總線在連接系統(tǒng)總線的各個設(shè)備中,某一個時刻只能有一個發(fā)送者向總線發(fā)送信號;但可以有多個設(shè)備從總線上同時獲得信號返回內(nèi)部數(shù)據(jù)總線控制總線數(shù)據(jù)總線地址總線暫存器累加器ALU標(biāo)志寄存器指令寄存指令譯碼時序和控制邏輯通 用寄存器組地 址寄存器組地址總線控制數(shù)據(jù)總線控制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)從功能分成兩個單元總線接口單元BIU管理8088與系統(tǒng)總線的接口,負(fù)責(zé)CPU對存儲器和外設(shè)進(jìn)行訪問執(zhí)行單元EU負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算兩個單元相互獨(dú)立,分別完成各自操作兩個單元可以并行執(zhí)行(演示1),實(shí)現(xiàn)指令取指和執(zhí)行的流水線操作2.1.2 8086/8088 寄存器結(jié)構(gòu)8088/8086的寄存器組有8個通用寄存器4個段寄存器1個標(biāo)志寄存器1個指令指針寄存器寄存器均為16位!圖示1. 通用寄存器8088有8個通用的16位寄存器(1)數(shù)據(jù)寄存器: AX BX CX DX(2
8、)變址寄存器: SI DI(3)指針寄存器: BP SP4個數(shù)據(jù)寄存器還可以分成高8位和低8位兩個獨(dú)立的寄存器,這樣又形成8個通用的8位寄存器AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)數(shù)據(jù)寄存器AX稱為累加器(Accumulator)使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等BX稱為基址寄存器(Base address Register)常用做存放存儲器地址CX稱為計(jì)數(shù)器(Counter)作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器DX稱為數(shù)據(jù)寄存器(Data register)常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址(2)變址寄存器16位變址寄
9、存器SI和DI常用于存儲器變址尋址方式時提供地址SI是源地址寄存器(Source Index)DI是目的地址寄存器(Destination Index)在串操作類指令中,SI、DI還有較特殊的用法(3)指針寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器(Stack Pointer),指示堆棧段棧頂?shù)奈恢茫ㄆ频刂罚〣P為基址指針寄存器(Base Pointer),表示數(shù)據(jù)在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址2. 指令指針寄存器IP(Instruction Pointer)為指令指針寄存器,指示主存儲器指令的位置隨著指令的執(zhí)行,IP將
10、自動修改以指示下一條指令所在的存儲器位置IP寄存器是一個專用寄存器IP寄存器與CS段寄存器聯(lián)合使用以確定下一條指令的存儲單元地址3. 標(biāo)志寄存器標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式8088處理器的各種標(biāo)志形成了一個16位的標(biāo)志寄存器FLAGS(程序狀態(tài)字PSW寄存器) 程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài)標(biāo)志寄存器-分類狀態(tài)標(biāo)志用來記錄程序運(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)位(加法)或借位(減法)時,進(jìn)位標(biāo)志置1,即CF1; 否則CF03AH + 7CHB6H,沒有進(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符號標(biāo)志SF(Sign Flag)運(yùn)算結(jié)果最高位為1,則SF1; 否則SF0有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號所以,最高有效位就是符號標(biāo)志的狀態(tài)3AH7CHB6H,最高位D71:SF184H7CH(1)00H,最高位
12、D70:SF0奇偶標(biāo)志PF(Parity Flag)當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個數(shù)為零或偶數(shù)時,PF1;否則PF0 PF標(biāo)志僅反映最低8位中“1”的個數(shù)是偶或奇,即使是進(jìn)行16位字操作3AH7CHB6H10110110B結(jié)果中有5個“1”,是奇數(shù):PF0溢出標(biāo)志OF(Overflow Flag)若算術(shù)運(yùn)算的結(jié)果有溢出,則OF1; 否則 OF03AH + 7CHB6H,產(chǎn)生溢出:OF1AAH + 7CH(1)26H,沒有溢出:OF0什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號數(shù)8位表達(dá)的整數(shù)范圍是:127 12816位表達(dá)的范圍是:32767 32768如果運(yùn)算結(jié)果超出這個范圍,就產(chǎn)生了溢出有溢出,說
13、明有符號數(shù)的運(yùn)算結(jié)果不正確3AH7CHB6H,就是58124182,已經(jīng)超出128127范圍,產(chǎn)生溢出,故OF1;補(bǔ)碼B6H表達(dá)真值是74,顯然運(yùn)算結(jié)果也不正確 B6H10110110B,最高位為1,作為有符號數(shù)是負(fù)數(shù) 對B6H求反加1等于:01001001B101001010B4AH74 所以,B6H表達(dá)有符號數(shù)的真值為74溢出和進(jìn)位的區(qū)別溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個意義不同的標(biāo)志進(jìn)位標(biāo)志表示無符號數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確溢出標(biāo)志表示有符號數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確溢出的判斷判斷運(yùn)算結(jié)果是否溢出有一個簡單的規(guī)則:只有當(dāng)兩個相同符號數(shù)相加(包括不同符號數(shù)相減
14、),而運(yùn)算結(jié)果的符號與原數(shù)據(jù)符號相反時,產(chǎn)生溢出;因?yàn)?,此時的運(yùn)算結(jié)果顯然不正確其他情況下,則不會產(chǎn)生溢出例1:3AH7CHB6H 溢出例2:AAH7CH 無溢出例3:3AH7CH無溢出例4:AAH7CH2DH溢出輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag)運(yùn)算時D3位(低半字節(jié))有進(jìn)位或借位時,AF1;否則AF0這個標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算調(diào)整指令中,用戶一般不必關(guān)心3AH7CHB6H,D3有進(jìn)位:AF1方向標(biāo)志DF(Direction Flag)用于串操作指令中,控制地址的變化方向:設(shè)置DF0,存儲器地址自動增加;設(shè)置DF1,存儲器地址自動減少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é)束時,便產(chǎn)生一個編號為1的內(nèi)部中斷這種內(nèi)部中斷稱為單步中斷所以TF也稱為單步標(biāo)志利用單步中斷可對程序進(jìn)行逐條指令的調(diào)試這種逐條指令調(diào)試程序的方法就是單步調(diào)試2.1.3 8088/8086的
16、存儲器結(jié)構(gòu) 存儲器是計(jì)算機(jī)存儲信息的地方。掌握數(shù)據(jù)存儲格式,以及存儲器的分段管理對以后的匯編程序設(shè)計(jì)非常重要1.寄存器、存儲器和外存的區(qū)別寄存器是微處理器(CPU)內(nèi)部暫存數(shù)據(jù)的存儲單元,以名稱表示,例如:AX,BX.等存儲器也就是平時所說的主存,也叫內(nèi)存,可直接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別外存主要指用來長久保存數(shù)據(jù)的外部存儲介質(zhì),常見的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)只能通過主存間接地與CPU交換數(shù)據(jù)程序及其數(shù)據(jù)可以長久存放在外存,在運(yùn)行需要時才進(jìn)入主存存儲單元及其存儲內(nèi)容每個存儲單元都有一個編號;被稱為存儲器地址每個存儲單元存放一個字節(jié)的內(nèi)容0002H單元存放有一個數(shù)據(jù)34
17、H表達(dá)為0002H34H多字節(jié)數(shù)據(jù)存放方式多字節(jié)數(shù)據(jù)在存儲器中占連續(xù)的多個存儲單元:存放時,低字節(jié)存入低地址,高字節(jié)存入高地址;表達(dá)時,用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。80 x86處理器采用“低對低、高對高”的存儲形式,被稱為“小端方式Little Endian”。相對應(yīng)還存在“大端方式Big Endian”。2.存儲器的分段管理8088CPU有20條地址線最大可尋址空間為2201MB物理地址范圍從00000HFFFFFH8088CPU將1MB空間分成許多邏輯段(Segment)每個段最大限制為64KB段地址的低4位為0000B這樣,一個存儲單元除具有一個唯一的物理地址外,還具有多個
18、邏輯地址物理地址和邏輯地址8088CPU有20條地址線8088CPU存儲系統(tǒng)中,對應(yīng)每個物理存儲單元都有一個唯一的20位編號,就是物理地址,從00000H FFFFFH分段后在用戶編程時,采用邏輯地址,形式為段基地址 : 段內(nèi)偏移地址物理地址 14700H邏輯地址 1460H:100H邏輯地址8088CPU有20條地址線段地址說明邏輯段在主存中的起始位置8088規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址偏移地址說明主存單元距離段起始位置的偏移量每段不超過64KB,偏移地址也可用16位數(shù)據(jù)表示物理地址和邏輯地址的轉(zhuǎn)換
19、將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址一個物理地址可以有多個邏輯地址邏輯地址1460:100、1380:F00物理地址14700H 14700H3. 段寄存器8088有4個16位段寄存器CS(代碼段)指明代碼段的起始地址SS(堆棧段)指明堆棧段的起始地址DS(數(shù)據(jù)段)指明數(shù)據(jù)段的起始地址ES(附加段)指明附加段的起始地址每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途代碼段寄存器CS(Code Segment)代碼段用來存放程序的指令序列代碼段寄存器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)得到存儲器中操作數(shù)的偏移地址處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)附加段寄存器ES(Extra Segment)附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲器中操作數(shù)的偏移地址處理器利用ES:EA存取附加段中的數(shù)據(jù)串
21、操作指令將附加段作為其目的操作數(shù)的存放區(qū)域如何分配各個邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中演示2寄存器的總結(jié)8088有8個8位通用寄存器、8個16位通用寄存器8088有6個狀態(tài)標(biāo)志和3個控制標(biāo)志8088將1MB存儲空間分段管理,有4個段寄存器,對應(yīng)4種邏輯段8088有4個段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段2.2 微型計(jì)算機(jī)軟件體系立即數(shù)尋址方式寄存器尋址方式直接尋址方式寄存器間接尋址方式寄存器相對尋址方式基址變址尋址方式相對
22、基址變址尋址方式2.2.1 立即數(shù)尋址方式指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)這種操作數(shù)被稱為立即數(shù)imm它可以是8位數(shù)值i8(00HFFH)也可以是16位數(shù)值i16(0000HFFFFH)立即數(shù)尋址方式常用來給寄存器賦值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個段寄存器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段寄存器,而BP默認(rèn)的段地址在SS段寄存器.可使用段超越前綴改變MOV AX,SI;AXDS:SIMOV AX,ES:SI;AXES:SI演示
24、42.2.5 寄存器相對尋址方式有效地址是寄存器內(nèi)容與有符號8位或16位位移量之和,寄存器可以是BX/BP或SI/DI有效地址BX/BP/SI/DI8/16位位移量段地址對應(yīng)BX/SI/DI寄存器默認(rèn)在DS,對應(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段地址對應(yīng)BX基址寄存器默認(rèn)是DS,對應(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 相對基址變址尋址方式有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量段地址對應(yīng)BX基址寄存器默認(rèn)是DS,對應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴MOV AX,BX+SI+06H;AXDS:BX+SI+06H演示72.3 微處理器外部特性 8086的引腳信號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)總線信號最大組態(tài)模式構(gòu)成較大規(guī)模的應(yīng)用系統(tǒng),例如可以接入數(shù)值協(xié)處理器80878088和總線控制器8288共同形成系統(tǒng)總線信號2.3.1 8086/8088的工作模式(續(xù))兩種組態(tài)利用MN/MX*引腳區(qū)別MN/MX*接高電平為最小組態(tài)模式MN/MX*接低電平為最大組態(tài)模式兩種組態(tài)下的內(nèi)部操作并沒有區(qū)別IBM PC/XT采用最大組態(tài)2.3.2 最小工作模式 8086/8088最小模式下的系統(tǒng)結(jié)構(gòu)圖2.3.3 最小組態(tài)的引腳信號數(shù)據(jù)和地址引腳讀寫控制引腳中斷請求和響應(yīng)引腳總線請求和響應(yīng)引腳其它引腳1. 數(shù)據(jù)和地址引腳AD7AD0(Address/Data)地址/數(shù)據(jù)分時復(fù)用引腳,
27、雙向、三態(tài)在訪問存儲器或外設(shè)的總線操作周期中,這些引腳在第一個時鐘周期輸出存儲器或I/O端口的低8位地址A7A0其他時間用于傳送8位數(shù)據(jù)D7D0 1. 數(shù)據(jù)和地址引腳(續(xù)1)A15A8(Address) 中間8位地址引腳,輸出、三態(tài)這些引腳在訪問存儲器或外設(shè)時,提供全部20位地址中的中間8位地址A15A81. 數(shù)據(jù)和地址引腳(續(xù)2)A19/S6A16/S3(Address/Status)地址/狀態(tài)分時復(fù)用引腳,輸出、三態(tài)這些引腳在訪問存儲器的第一個時鐘周期輸出高4位地址A19A16在訪問外設(shè)的第一個時鐘周期全部輸出低電平無效其他時間輸出狀態(tài)信號S6S32. 讀寫控制引腳ALE(Address
28、Latch Enable)地址鎖存允許,輸出、三態(tài)、高電平有效ALE引腳高有效時,表示復(fù)用引腳:AD7AD0和A19/S6A16/S3正在傳送地址信息由于地址信息在這些復(fù)用引腳上出現(xiàn)的時間很短暫,所以系統(tǒng)可以利用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正在寫出數(shù)據(jù)給存儲器或I/O端口RD*(Read)讀控制,輸出、三態(tài)、低電平有效有效時,表示CPU正在從存儲器或I/O端口讀入數(shù)據(jù) 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直接進(jìn)入第4個時鐘周期如果測到無效,CPU將插入等待周期TwCPU在等待周期中仍然要監(jiān)
30、測READY信號,有效則進(jìn)入第4個時鐘周期,否則繼續(xù)插入等待周期Tw。 2. 讀寫控制引腳(續(xù)5)DEN*(Data Enable) 數(shù)據(jù)允許,輸出、三態(tài)、低電平有效有效時,表示當(dāng)前數(shù)據(jù)總線上正在傳送數(shù)據(jù),可利用他來控制對數(shù)據(jù)總線的驅(qū)動 DT/R*(Data Transmit/Receive)數(shù)據(jù)發(fā)送/接收,輸出、三態(tài)該信號表明當(dāng)前總線上數(shù)據(jù)的流向高電平時數(shù)據(jù)自CPU輸出(發(fā)送)低電平時數(shù)據(jù)輸入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. 中斷響應(yīng)2. 存儲器讀6. I/O讀3. 存儲器寫7. I/O寫4. 過渡狀態(tài)8. 暫停3. 中斷請求和響應(yīng)引腳INTR(Interrupt Request) 可屏蔽中斷請求,輸入、高電平有效有效時,表示請求設(shè)備向CPU申請可屏蔽中斷該請求的優(yōu)先級別較低,并可通過關(guān)中斷指令CLI清除標(biāo)志寄存器中的IF標(biāo)志、從而對中斷請求進(jìn)行屏蔽3. 中斷請求和響應(yīng)引腳(續(xù)1)INTA*(Interrupt Acknowledge) 可屏蔽中斷響應(yīng),輸出、低電平有效有效時,表示來自INTR引腳的中斷請求已被CPU響應(yīng),CPU進(jìn)入中斷響應(yīng)周期中斷響應(yīng)周期是連續(xù)的兩個,每個都發(fā)出有效響應(yīng)信號,以便通知外設(shè)他們
32、的中斷請求已被響應(yīng)、并令有關(guān)設(shè)備將中斷向量號送到數(shù)據(jù)總線 3. 中斷請求和響應(yīng)引腳(續(xù)2)NMI(Non-Maskable Interrupt) 不可屏蔽中斷請求,輸入、上升沿有效有效時,表示外界向CPU申請不可屏蔽中斷該請求的優(yōu)先級別高于INTR,并且不能在CPU內(nèi)被屏蔽當(dāng)系統(tǒng)發(fā)生緊急情況時,可通過他向CPU申請不可屏蔽中斷服務(wù)主機(jī)與外設(shè)進(jìn)行數(shù)據(jù)交換通常采用可屏蔽中斷不可屏蔽中斷通常用于處理掉電等系統(tǒng)故障4. 總線請求和響應(yīng)引腳HOLD總線保持(即總線請求),輸入、高電平有效有效時,表示總線請求設(shè)備向CPU申請占有總線該信號從有效回到無效時,表示總線請求設(shè)備對總線的使用已經(jīng)結(jié)束,通知CPU收
33、回對總線的控制權(quán) DMA控制器等主控設(shè)備通過HOLD申請占用系統(tǒng)總線(通常由CPU控制)4. 總線請求和響應(yīng)引腳(續(xù)1)HLDA(HOLD Acknowledge)總線保持響應(yīng)(即總線響應(yīng)),輸出、高電平有效有效時,表示CPU已響應(yīng)總線請求并已將總線釋放此時CPU的地址總線、數(shù)據(jù)總線及具有三態(tài)輸出能力的控制總線將全面呈現(xiàn)高阻,使總線請求設(shè)備可以順利接管總線待到總線請求信號HOLD無效,總線響應(yīng)信號HLDA也轉(zhuǎn)為無效,CPU重新獲得總線控制權(quán) 5. 其它引腳RESET復(fù)位請求,輸入、高電平有效該信號有效,將使CPU回到其初始狀態(tài);當(dāng)他再度返回?zé)o效時,CPU將重新開始工作8088復(fù)位后CSFFFF
34、H、IP0000H,所以程序入口在物理地址FFFF0H5. 其它引腳(續(xù)1)CLK(Clock) 時鐘輸入系統(tǒng)通過該引腳給CPU提供內(nèi)部定時信號。8088的標(biāo)準(zhǔn)工作時鐘為5MHzIBM PC/XT機(jī)的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指令配合使用當(dāng)CPU執(zhí)行WAIT指令時,他將在每個
35、時鐘周期對該引腳進(jìn)行測試:如果無效,則程序踏步并繼續(xù)測試;如果有效,則程序恢復(fù)運(yùn)行也就是說,WAIT指令使CPU產(chǎn)生等待,直到引腳有效為止在使用協(xié)處理器8087時,通過引腳和WAIT指令,可使8088與8087的操作保持同步 2.4 微型計(jì)算機(jī)工作時序時鐘周期微處理器執(zhí)行指令的最小時間單位,通常稱為一個T狀態(tài)指令周期指從取指令到執(zhí)行完畢所需要的時間總線周期指通過外部總線對存儲器或I/O端口進(jìn)行一次讀/寫操作的過程2.4.1 8086/8088 操作時序時序就是對信號隨時間變化的規(guī)律以及信號間的相互關(guān)系的描述。這些相互關(guān)系通過時序圖來描述。總線時序是指在總線操作中相關(guān)信號的時序??偩€操作是指發(fā)生
36、在總線上的某些特定的操作,包括:存儲器讀和I/O讀、存儲器寫和I/O寫、中斷響應(yīng)、總線請求及響應(yīng)等。2.4.2 最小模式下總線操作時序微處理器最基本的4種總線周期存儲器讀總線周期存儲器寫總線周期I/O讀總線周期I/O寫總線周期存儲器寫總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸出數(shù)據(jù)A19A16S6S3READY(高電平)IO/M*WR*T1狀態(tài)輸出20位存儲器地址A19A0IO/M*輸出低電平,表示存儲器操作;ALE輸出正脈沖,表示復(fù)用總線輸出地址T2狀態(tài)輸出控制信號WR*和數(shù)據(jù)D7D0T3和Tw狀態(tài)檢測數(shù)據(jù)傳送是否能夠完成T4狀態(tài)完
37、成數(shù)據(jù)傳送I/O寫總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸出數(shù)據(jù)0000S6S3READY(高電平)IO/M*WR*T1狀態(tài)輸出16位I/O地址A15A0IO/M*輸出高電平,表示I/O操作;ALE輸出正脈沖,表示復(fù)用總線輸出地址T2狀態(tài)輸出控制信號WR*和數(shù)據(jù)D7D0T3和Tw狀態(tài)檢測數(shù)據(jù)傳送是否能夠完成T4狀態(tài)完成數(shù)據(jù)傳送存儲器讀總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸入數(shù)據(jù)A19A16S6S3READY(高電平)IO/M*RD*T1狀態(tài)輸出20位存儲器地址A19A0
38、IO/M*輸出低電平,表示存儲器操作;ALE輸出正脈沖,表示復(fù)用總線輸出地址T2狀態(tài)輸出控制信號RD*T3和Tw狀態(tài)檢測數(shù)據(jù)傳送是否能夠完成T4狀態(tài)前沿讀取數(shù)據(jù),完成數(shù)據(jù)傳送I/O讀總線周期T4T3T2T1ALECLKA19/S6A16/S3A15A8AD7AD0A15A8A7A0輸入數(shù)據(jù)S6S3READY(高電平)IO/M*RD*0000T1狀態(tài)輸出16位I/O地址A15A0IO/M*輸出高電平,表示I/O操作;ALE輸出正脈沖,表示復(fù)用總線輸出地址T2狀態(tài)輸出控制信號RD*T3和Tw狀態(tài)檢測數(shù)據(jù)傳送是否能夠完成T4狀態(tài)前沿讀取數(shù)據(jù),完成數(shù)據(jù)傳送插入等待狀態(tài)Tw同步時序通過插入等待狀態(tài),來使
39、速度差別較大的兩部分保持同步在讀寫總線周期中,判斷是否插入Tw1. 在T3的前沿檢測READY引腳是否有效2. 如果READY無效,在T3和T4之間插入一個等效于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輸入/輸出控制電路外部總線執(zhí)行部分控制電路ALU標(biāo)志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器地址加法器指令隊(duì)列執(zhí)行部件 (EU)總線接口部件 (BIU)16位20位8位8位返回8088的指令執(zhí)行過程返回什么是分時復(fù)用?分時復(fù)用就是一個引腳在不同的
40、時刻具有兩個甚至多個作用最常見的總線復(fù)用是數(shù)據(jù)和地址引腳復(fù)用 總線復(fù)用的目的是為了減少對外引腳個數(shù)8088 /8086CPU的數(shù)據(jù)地址線采用了總線復(fù)用方法基本控制信號的組合方法I/O讀I/O寫存儲器讀存儲器寫邏輯段的分配匯編語言及開發(fā)環(huán)境3.1 匯編語言程序設(shè)計(jì)基礎(chǔ)以助記符形式表示計(jì)算機(jī)指令助記符(mnemonic)是便于人們記憶、并能描述指令功能和指令操作數(shù)的符號助記符是表明指令功能的英語單詞或其縮寫匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(Assembly Language)匯編語言程序:用匯編語言書寫的程序匯編程序:將匯編語言程序“匯編”成機(jī)器代碼目標(biāo)模塊的程序3.1.1 匯
41、編語言特點(diǎn)匯編語言的優(yōu)點(diǎn):直接控制計(jì)算機(jī)硬件部件編寫“時間”和“空間”兩方面最有效程序匯編語言的缺點(diǎn):與處理器密切有關(guān)需要熟悉計(jì)算機(jī)硬件系統(tǒng)、考慮許多細(xì)節(jié)編寫繁瑣,調(diào)試、維護(hù)、交流和移植困難3.1.2 8086指令系統(tǒng)概述Intel 8086指令系統(tǒng)共有117條基本指令可分成6個功能組數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令位操作類指令串操作類指令控制轉(zhuǎn)移類指令處理機(jī)控制類指令由4部分組成:標(biāo)號:-標(biāo)號表示該指令在主存中的邏輯地址指令助記符-代表一種指令目的操作數(shù),源操作數(shù)-表示參與操作的對象;注釋-對該指令或程序段功能的說明3.1.2 8086指令系統(tǒng)概述1.數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令是將源操作數(shù)傳送到
42、目標(biāo)操作數(shù),即將數(shù)據(jù)、地址或立即數(shù)從一個位置傳送到存儲單元中。數(shù)據(jù)傳送指令是最常使用的一類指令除標(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存儲器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段寄存器記錄其段地址堆棧只有一個出口,即當(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ù)囊粋€字彈出傳送到dest,再將SP加2,將SP指向新的棧頂,dest 的尋址方式是除立即尋址之外的所有存儲器尋址方式和寄存器尋址方式。例: POP BX ;將棧頂內(nèi)容彈出到BX ;(BL)(SP),低地址彈出到低字節(jié) ;(BH)(SP) 1,高地址彈出到高字節(jié) ;(SP)(SP) 2,SP指向新棧頂POP彈出堆棧指令演示11DOS命令環(huán)境(介紹DEBUG命令P110)(3)交換指令XCHG把兩個地方的數(shù)據(jù)進(jìn)行互換XCHG reg,re
45、g/mem ;reg reg/mem寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(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將存儲器操作數(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指定的位移處的一個字節(jié)數(shù)據(jù)取出賦給ALXLAT ;ALDS:BX+AL換碼指令執(zhí)行前:主
47、存建立一個字節(jié)量表格,含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對表格首的位移量換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼演示132.輸入輸出指令8086通過輸入輸出指令與外設(shè)進(jìn)行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port)即I/O地址8086用于尋址外設(shè)端口的地址線為16條,端口最多為21665536(64K)個,端口號為0000HFFFFH每個端口用于傳送一個字節(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é)信息存放在AL寄存器IN AX, DX ;(AL)(DX),從DX中裝載的端口讀入字信息存放在AX寄存器(1)IN輸入指令 舉例(2)OUT輸入指令將CPU內(nèi)的AL/AX數(shù)據(jù)傳送給外設(shè)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、 舉例例:以下指令實(shí)現(xiàn)將外部設(shè)備端口80H的字節(jié)信息傳送到存儲單元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)算請注意算術(shù)運(yùn)算類指令對標(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é)果放在AL中ADD SI, BX20H ;SI中內(nèi)容和BX20H;BX21H所指兩存儲單元內(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指令對操作數(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指令對操作數(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指令對操作數(shù)執(zhí)行求補(bǔ)運(yùn)算:用零減去操作數(shù),然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取反后加1NEG指令對標(biāo)志的影
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位含有有效數(shù)值,非符號擴(kuò)展例264H 0A5HMOV AL, 64HMOV BL, 0A5HIMUL
56、BL ;AX = 0DC74H,9100,OF = CF = 1 ;AX高8位含有有效數(shù)值,非符號擴(kuò)展舉例(9)除法指令DIV r8/m8;無符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數(shù)DIV r16/m16;無符號字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余數(shù)IDIV r8/m8;有符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數(shù)IDIV r16/m16;有符號字除法:;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的符號擴(kuò)展至AH;如AL的最高有效位是0,則AH00;AL的最高有效位為1,則AHFFH。AL不變CWD;AX的符號擴(kuò)展至DX;如AX的最高有效位是0,則DX00;AX的最高有效位為1,則DXFFFFH。AX不變(10)其它算術(shù)指令 舉例例:MOV AL, 0ABHCBW ;AX = 0FFABHMOV AX, 1234HCWD ;DX = 0000H,AX = 1234H4.位操作指令位操作類指令
58、以二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)的操作這是一類常用的指令,都應(yīng)該掌握注意這些指令對標(biāo)志位的影響邏輯運(yùn)算指令A(yù)ND OR XOR NOT TEST移位指令SHL SHR SAR ROL ROR RCL RCR(1) AND 邏輯“與”指令對兩個操作數(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),而對AF未定義例:AND AL, 10010011 ;將AL中的第0、1、4、7位保留,其他位清零(2) OR邏輯“或”
59、指令對兩個操作數(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),而對AF未定義例:OR BL, 0F0H ;將BL的高4為置1,其他位不變(3)XOR邏輯“異或”指令對兩個操作數(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、,而對AF未定義例:XOR AL, 0A5H ;將AL的第0、2、5和7位取反,其他位不變(4) TEST 測試指令對兩個操作數(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),而對AF未定義例:TEST AX, 0010H ;若ZF = 0,則AX第4位為1,否則,第4位為0(5) NOT邏輯“非”指令對一個操作數(shù)執(zhí)行邏輯非運(yùn)算NOT reg/mem;reg/memreg/memNOT指令是一個單操作數(shù)指令N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機(jī)肥原料采購合同
- 押金合同范本制作指南
- 水庫維修腳手架租賃合同
- 藝術(shù)展覽演員合作合同
- 民航展覽館改造工程協(xié)議
- 醫(yī)療機(jī)構(gòu)排水設(shè)施安裝協(xié)議
- 舞臺燈光租賃合同樣本
- 建筑保溫設(shè)備租賃協(xié)議
- 外墻廣告安裝安全協(xié)議
- 節(jié)慶活動照明系統(tǒng)更新工程合同
- 吊裝作業(yè)施工方案(模板)
- 初中綜合實(shí)踐課程標(biāo)準(zhǔn)
- 日本江崎格力高歷史
- 初物管理辦法及規(guī)定
- 代扣服務(wù)協(xié)議
- 某燃煤采暖鍋爐煙氣除塵系統(tǒng)設(shè)計(jì)1
- 中心試驗(yàn)室標(biāo)準(zhǔn)化管理辦法
- 龍王廟煤礦消防工作匯報(bào)
- 一些常見物質(zhì)的安托因常數(shù)
- 庫存盤點(diǎn)盈虧處理申請表xls
- 35kV及以下架空電力線路施工及驗(yàn)收規(guī)范
評論
0/150
提交評論