80X86指令系統(tǒng)和尋址方式_第1頁(yè)
80X86指令系統(tǒng)和尋址方式_第2頁(yè)
80X86指令系統(tǒng)和尋址方式_第3頁(yè)
80X86指令系統(tǒng)和尋址方式_第4頁(yè)
80X86指令系統(tǒng)和尋址方式_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 80X86指令系統(tǒng)和尋址方式1教學(xué)目的:掌握微機(jī)尋址方式和8086微處理器指令系統(tǒng)2教學(xué)要求:熟悉指令構(gòu)成,了解指令執(zhí)行時(shí)間。掌握8種尋址方式。熟悉指令系統(tǒng)的六大類指令,要求結(jié)合上機(jī)實(shí)踐熟練掌握常用指令。結(jié)合指令舉例逐步熟悉和掌握匯編語(yǔ)言程序的格式,以及典型程序段。了解80x86和PENTIUM CPU擴(kuò)充和增加的指令3教學(xué)重點(diǎn):尋址方式8086微處理器指令系統(tǒng)4掌握難點(diǎn): 寄存器的應(yīng)用存儲(chǔ)器的結(jié)構(gòu)5教學(xué)進(jìn)程安排:P421016教學(xué)方法: 課堂講授7教學(xué)內(nèi)容摘要:3.1 指令系統(tǒng)概述每條指令由兩部分組成:操作碼字段和地址碼字段。格式如圖3.1所示:操作碼操作數(shù)(地址碼)圖3.1 指令格

2、式1操作碼字段 2地址碼字段3稱為尋址方式(1)立即尋址(2)寄存器尋址(3)存儲(chǔ)器尋址3.2 8088/8086 CPU的尋址方式 尋找和獲得操作數(shù)或操作數(shù)存放地址或指令轉(zhuǎn)移地址的方法稱為尋址方式。8088/8086 CPU的尋址分為兩類,即數(shù)據(jù)尋址和指令尋址。3.2.1 數(shù)據(jù)尋址方式1. 立即尋址方式【例3-2】MOV AL,0FFH 【例3-3】MOV AX,1234H2. 寄存器尋址【例3-4】MOV AX,BXMOV AL,BL3. 存儲(chǔ)器尋址方式(1) 直接尋址方式【例3-5】假設(shè)TABLE是在數(shù)據(jù)段定義的一個(gè)字節(jié)數(shù)組的首地址標(biāo)號(hào)(變量名),其偏移地址為1000H,則指令MOV A

3、L,TABLE 或MOV AL,TABLE+2或MOV AL,TABLE 或MOV AL,TABLE+2或MOV AL,1000H 或MOV AL,1000H+2(2)寄存器間接尋址方式【例3-8】MOVAX,BXMOVAX,SI【例3-9】MOVAX,BX如果(DS)=3000H,(BX)=1010H,(31010H)=12H,(31011H)=24H。則操作數(shù)的20位物理地址=30000H+1010H=31010H,操作的示意圖如圖3.4所示。31010H存儲(chǔ)器AX30000H12H24H數(shù)據(jù)段指令執(zhí)行完以后,(AX)=2412H。圖3.4 寄存器間接尋址操作圖【例3-10】MOV AX,

4、ES:BX(3)寄存器相對(duì)尋址【例3-11】TABLE是在數(shù)據(jù)段定義的一個(gè)字節(jié)數(shù)組的首地址標(biāo)號(hào)(也稱變量名),則: MOV SI,5 MOV AL,TABLESI;可以寫為:MOV AL,TABLE+SI ABC EQU 5 LEA SI,TABLE;LEA是取偏址指令,本句是TABLE偏址SI MOV AL,ABCSI ;可以寫為:MOV AL,ABC+SI如:BX+6、BP-100H、SI+OFFSET TABLE都是寄存器相對(duì)尋址方式?!纠?-12】TABLE是數(shù)據(jù)段中定義的一個(gè)變量,假設(shè)它在數(shù)據(jù)段中的偏移地址為0100H,有指令:MOV AX,TABLESI(4)基址變址尋址【例3-1

5、3】MOVAX,BX SI或?qū)憺椋?MOVAX,BX+SI【例3-14】MOV AX,BX SI(或?qū)憺镸OV AX,BX+SI)若(DS)=2000H,(BX)=0500H,(SI)=0010H 則偏移地址=0500H+0010H=0510H 20位物理地址=20000H+0510H =20510H 如(20510H)=12H,(20511H)=34H,20510H存儲(chǔ)器AX20000H12H34H數(shù)據(jù)段代碼段操作的示意圖如圖3.5所示:圖3.5 基址變址尋址操作示意圖(5) 相對(duì)基址變址尋址【例3-15】MOV AL,TABLEBXSI【例3-16】TABLE是數(shù)據(jù)段中定義的一個(gè)符號(hào)地址,

6、假設(shè)它在數(shù)據(jù)段中的偏移地址是1000H。MOV AX,TABLEBXDI若(DS)=2000H,(BX)=0100H,(DI)=0020H則偏移地址=1000H+0100H+0020H=1120H20位物理地址=20000H+1120H=21120H如(21120H)=12H,(21121H)=34H,操作的示意圖如圖3.6所示。位移量TABLE數(shù)據(jù)段代碼段21120H存儲(chǔ)器AX20000HOP00H10H12H34HOP執(zhí)行完指令以后,(AX)=3412H。圖3.6 相對(duì)基址變址尋址操作示意圖3.2.2指令尋址方式指令尋址方式是指確定下一條要執(zhí)行指令的地址的方法。這里只介紹有關(guān)轉(zhuǎn)移指令及調(diào)用

7、指令的指令尋址方式。1. 段內(nèi)直接尋址這種尋址方式的匯編格式有三種:指令名 SHORT 轉(zhuǎn)移目標(biāo)地址標(biāo)號(hào)指令名 轉(zhuǎn)移目標(biāo)地址標(biāo)號(hào)指令名 NEAR PTR 轉(zhuǎn)移目標(biāo)地址標(biāo)號(hào)2. 段間直接尋址這種尋址方式的匯編格式有以下兩種形式:指令名 FAR PTR 轉(zhuǎn)移地址標(biāo)號(hào)指令名 段地址:段內(nèi)偏移地址3. 段內(nèi)間接尋址這種尋址方式的匯編格式為:指令名 16位寄存器名指令名 WORD PTR 存儲(chǔ)器尋址方式4. 段間間接尋址這種尋址方式的匯編格式為:指令名 DWORD PTR 存儲(chǔ)器尋址方式3.38088/8086 CPU的指令系統(tǒng)3.3.1數(shù)據(jù)傳送指令8086/8088有4類傳送指令,分別是:通用傳送指令

8、,累加器專用傳送指令,地址傳送指令,標(biāo)志傳送指令1 通用傳送指令操作碼MOVPUSHPOPPUSHFPOPFXCHG操作功能通用傳送入棧出棧標(biāo)志壓棧標(biāo)志出棧交換通用傳送指令MOV從寄存器到寄存器從寄存器到段寄存器從寄存器到存儲(chǔ)器從段寄存器到寄存器從存儲(chǔ)器到寄存器從段寄存器到存儲(chǔ)器從存儲(chǔ)器到段寄存器從立即數(shù)到寄存器從立即數(shù)到存儲(chǔ)器圖3.7 MOV指令的九種形式進(jìn)棧指令PUSH及出棧指令POPPUSH指令POP指令【例3-18】MOVAX,1234HPUSHAX 設(shè)執(zhí)行前(SS)=2000H,(SP)=00FEH(SP)2000:0000H2000:0001H2000:00FEH2000:00FF

9、H2000:00FCH2000:00FDH(SP)2000:0000H2000:0001H2000:00FEH2000:00FFH34H12H指令執(zhí)行前情況 指令執(zhí)行后情況指令執(zhí)行過(guò)程如圖3.8所示。執(zhí)行后(SS)=2000H,(SP)=00FCH圖3.8 壓棧操作示意圖PUSHFPOPF【例3-19】若想設(shè)置TF=1,程序段如下:PUSHFPOPAXORAH,01H ;修改TF位PUSHAXPOPFXCHG指令2. 累加器專用傳送指令(1)IN輸入指令(2)OUT輸出指令(3)XLAT換碼指令3. 地址傳送指令操作碼LEALDSLES操作功能取偏址取偏址和數(shù)據(jù)段值取偏址和附加數(shù)據(jù)段值4. 標(biāo)

10、志傳送指令CFPFAFZFSFTFIFDFOFCFPFAFZFSFPSWAH 3.3.2算術(shù)運(yùn)算指令1. 加法指令操作碼ADDADCINC操作功能加法帶進(jìn)位加法增量2. 減法指令操作碼SUBSBBDECNEGCMP操作功能減法帶借位減法減1求補(bǔ)比較3. 乘法指令MUL無(wú)符號(hào)數(shù)乘法指令匯編格式:MUL源操作數(shù)執(zhí)行的操作:若為字節(jié)操作:(AX)(AL)源操作數(shù)若為字操作:(DX-AX)(AX)源操作數(shù)IMUL有符號(hào)數(shù)乘法指令4. 除法指令DIV無(wú)符號(hào)數(shù)除法指令匯編格式:DIV源操作數(shù)IDIV有符號(hào)數(shù)除法指令匯編格式:IDIV源操作數(shù)5. 符號(hào)擴(kuò)展指令CBW:字節(jié)轉(zhuǎn)換為字指令CWD:字轉(zhuǎn)換為雙字指令

11、6. 十進(jìn)制調(diào)整指令壓縮的BCD碼調(diào)整指令DAA DAS非壓縮的BCD碼調(diào)整指令A(yù)AA AAS3.3.3 邏輯運(yùn)算和移位指令1. 邏輯運(yùn)算指令操作碼ANDORNOTXORTEST操作功能與或非異或測(cè)試表3-1 邏輯運(yùn)算指令對(duì)標(biāo)志位的影響指令OFCFSFPFZFAFAND=0=00或10或10或1無(wú)定義OR=0=00或10或10或1無(wú)定義XOR=0=00或10或10或1無(wú)定義TEST=0=00或10或10或1無(wú)定義NOT不影響不影響不影響不影響不影響不影響(a)邏輯左移指令操作示意圖0CFLSBMSB0CFLSBMSB(b)邏輯右移指令操作示意圖0CFLSBMSB(c)算術(shù)左移指令操作示意圖CF

12、MSBLSB(d) 算術(shù)右移指令操作示意圖CFLSBMSB(e) 小循環(huán)左移指令操作示意圖CFLSBMSB(f) 小循環(huán)右移指令操作示意圖CFLSBMSB(g) 大循環(huán)左移指令操作示意圖CFLSBMSB (h) 大循環(huán)右移指令操作示意圖2. 移位指令圖3.10 循環(huán)移位指令操作【例3-37】將(AX)乘以103.3.4串操作指令有關(guān)串操作的指令有5條,分別為:MOVS LODS STOS CMPS SCAS1. 串傳送指令(1)格式:REPMOVS/LODS/STOS(2)執(zhí)行的操作:(3)MOVS指令(4)LODS指令(5)STOS指令2. 串比較指令(1)REPE/REPZCMPS/SCA

13、S(2)REPNE/REPNZCMPS/SCAS(3)CMPS指令(4)SCAS指令【例3-38】假設(shè)有一起始地址為BLOCK,長(zhǎng)度為100個(gè)字節(jié)的存儲(chǔ)區(qū),現(xiàn)要對(duì)這一存儲(chǔ)區(qū)進(jìn)行測(cè)試,看其中是否有內(nèi)容為00H的存儲(chǔ)單元。3.3.5控制轉(zhuǎn)移指令1. 無(wú)條件轉(zhuǎn)移指令JMP段內(nèi)直接轉(zhuǎn)移段內(nèi)直接短轉(zhuǎn)移段內(nèi)直接近轉(zhuǎn)移共2個(gè)字節(jié)16位寄存器編號(hào)FF操作碼段內(nèi)間接轉(zhuǎn) 段間直接轉(zhuǎn)移2. 條件轉(zhuǎn)移指令表3-2 簡(jiǎn)單條件轉(zhuǎn)移指令表匯編語(yǔ)言指令名測(cè)試條件操作JZ(或JE)ZF=1結(jié)果為零(或相等)則轉(zhuǎn)移JNZ(或JNE)ZF=0結(jié)果不為零(或不相等)則轉(zhuǎn)移JSSF=1結(jié)果為負(fù)則轉(zhuǎn)移JNSSF=0結(jié)果為正則轉(zhuǎn)移JOOF

14、=1結(jié)果溢出則轉(zhuǎn)移JNOOF=0結(jié)果無(wú)溢出則轉(zhuǎn)移JP(或JPE)PF=1奇偶位為1則轉(zhuǎn)移JNP(或JPO)PF=0奇偶位為0則轉(zhuǎn)移JC(或JNAE或JB)CF=1有進(jìn)位則轉(zhuǎn)移JNC(或JAE或JNB)CF=0無(wú)進(jìn)位則轉(zhuǎn)移表3-3 無(wú)符號(hào)數(shù)比較條件轉(zhuǎn)移指令表匯編語(yǔ)言指令名測(cè)試條件操作JB(或JNAE或JC)CF=1低于,或不高于或等于,或進(jìn)位位為1則轉(zhuǎn)移JNB(或JAE或JNC)CF=0不低于,或高于或等于,或進(jìn)位位為0則轉(zhuǎn)移JA(或JNBE)CFZF=0高于,或不低于或等于則轉(zhuǎn)移JNA(或JBE)CFZF=1不高于,或低于或等于則轉(zhuǎn)移表3-4 有符號(hào)數(shù)比較條件轉(zhuǎn)移指令匯編語(yǔ)言指令名測(cè)試條件操作

15、JL(或JNGE)SFOF=1小于,或不大于或等于則轉(zhuǎn)移JNL(或JGE)SFOF=0不小于,或大于或等于則轉(zhuǎn)移JG(或JNLE)(SFOF)ZF=0大于,或不小于或等于則轉(zhuǎn)移JNG(或JLE)(SFOF)ZF=1不大于,或小于或等于則轉(zhuǎn)移3. 子程序調(diào)用和返回指令CALL調(diào)用指令段內(nèi)直接調(diào)用 段間直接調(diào)用 段內(nèi)間接調(diào)用 段間間接調(diào)用RET返回指令返回指令段內(nèi)返回段間返回段內(nèi)帶立即數(shù)返回段間帶立即數(shù)返回匯編格式RETRETRET表達(dá)式RET 表達(dá)式執(zhí)行操作(IP)(SP)+1,(SP)(SP)(SP)+2(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(

16、SP)+2(IP)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+16位表達(dá)式(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+16位表達(dá)式4. 循環(huán)指令(1)循環(huán)指令共有3條: LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE,(2)匯編格式:指令名循環(huán)入口的地址標(biāo)號(hào)(3)執(zhí)行的操作:(CX)(CX)-1判斷測(cè)試條件,若條件成立,則:(IP)(IP)+8位位移量表3-5 循環(huán)指令測(cè)試條件指令名測(cè)試條件功能LOOP(CX)0無(wú)條件循環(huán)LOOPNZ/LOOPNE(CX)0且ZF=1當(dāng)為零或相等時(shí)循環(huán)LOO

17、PNZ(CX)0且ZF=0當(dāng)不為零或不相等時(shí)循環(huán)【例3-54】循環(huán)指令應(yīng)用于軟件延時(shí)5. 中斷指令和中斷返回指令表3-6 中斷指令指令I(lǐng)NTINT0IRET匯編格式INTnINTOIRET執(zhí)行操作(SP)(SP)-2(SP)+1,(SP)(PSW)IF=0,TF=0(SP)(SP)-2(SP)+1,(SP)(CS)(SP)(SP)-2(SP)+1,(SP)(IP)(IP)(n4)(CS)(n4+2)若OF=1則:(SP)(SP)-2(SP)+1,(SP)(PSW)IF=0,TF=0(SP)(SP)-2(SP)+1,(SP)(CS)(SP)(SP)-2 (SP)+1,(SP)(IP)(IP)(0

18、010H)(CS)(0012H)(IP)(SP)+1,(SP)(SP)(SP)+2 (CS)(SP)+1,(SP)(SP)(SP)+2 (PSW)(SP)+1,(SP)(SP)(SP)+2 說(shuō)明本條指令除把IF和TF位置0外,不影響其余的標(biāo)志位。本條指令除把IF和TF位置0外,不影響其余的標(biāo)志位。3.3.6處理器控制指令1. 標(biāo)志設(shè)置指令表3-7 標(biāo)志設(shè)置指令指令格式指令功能執(zhí)行的操作CLCSTCCMC進(jìn)位位置0指令進(jìn)位位置1指令進(jìn)位位求反指令CFOCF1CFCLDSTD方向標(biāo)志位置0指令方向標(biāo)志位置1指令DF0DF1CLISTI中斷標(biāo)志位置0指令中斷標(biāo)志位置1指令I(lǐng)F0IF12. 其它處理機(jī)

19、控制指令NOP無(wú)操作指令HLT停機(jī)指令WAIT等待指令LOCK總線封鎖指令ESC交權(quán)指令3.480X86和PENTIUM CPU擴(kuò)充和增加的指令3.4.1數(shù)據(jù)傳送指令1. 通用傳送類指令基本傳送指令80386PENTIUM指令系統(tǒng)中擴(kuò)充了MOV指令功能,允許其傳送雙字。在80386PENTIUM PRO指令系統(tǒng)中,增加了兩條傳送指令:MOVSX和MOVZX指令。MOVSX:將源操作數(shù)進(jìn)行符號(hào)擴(kuò)展后再傳送。MOVZX:將源操作數(shù)進(jìn)行零擴(kuò)展后再傳送。CMOV指令組入棧指令及出棧指令80286PENTINM PRO指令系統(tǒng)增加了PUSHA(PUSHALL)入棧指令,及POPA(POPALL)出棧指令

20、。80386PENTIUM PRO中增加了PUSHAD和POPAD兩條堆棧指令。交換指令在80386PENTIUM PRO中,XCHG指令允許交換雙字?jǐn)?shù)據(jù)。2. 累加器專用傳送指令輸入類指令輸出類指令3地址傳送指令3.4.2算術(shù)運(yùn)算指令1. 加法指令2. 減法指令3. 乘法指令4. 除法指令5. 符號(hào)擴(kuò)展指令3.4.3邏輯運(yùn)算和移位指令1. 邏輯運(yùn)算類指令BT指令BTC指令BTR指令BTS指令2. 移位指令SHLD指令SHRD指令3. 位掃描指令BSF指令BSR指令:3.4.4 串操作指令1擴(kuò)充SCAS指令2擴(kuò)充MOVS指令 3擴(kuò)充LODS指令 4擴(kuò)充STOS指令 5擴(kuò)充CMPS指令 3.4.5 控制轉(zhuǎn)移指令1. 無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令2. 子程序調(diào)用和返回指令子程序調(diào)用指令返回指令4. 循環(huán)控制指令3.4.6處理器控制指令1. WAIT指令2. BOUND指令3. ENTER和LEAVE指令3.4.7條件置位指令表3-8 條件置位指令組的助記符及測(cè)試條件匯編語(yǔ)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論