第3章(2) 微機(jī)接口技術(shù).ppt_第1頁(yè)
第3章(2) 微機(jī)接口技術(shù).ppt_第2頁(yè)
第3章(2) 微機(jī)接口技術(shù).ppt_第3頁(yè)
第3章(2) 微機(jī)接口技術(shù).ppt_第4頁(yè)
第3章(2) 微機(jī)接口技術(shù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩58頁(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章(2) Pentium的指令系統(tǒng),重點(diǎn)內(nèi)容: 尋址方式; 傳送指令中的堆棧指令、交換指令、換碼指令、輸入/輸出指令; 算術(shù)運(yùn)算指令中的比較指令; 串操作指令;,3.1 Pentium的尋址方式,指令的兩個(gè)問(wèn)題 指出進(jìn)行什么操作 涉及的操作數(shù)和操作結(jié)果放在何處 兩種情況下涉及尋址方式 操作數(shù)尋址 轉(zhuǎn)移地址和調(diào)用地址進(jìn)行尋址,操作數(shù)從哪里來(lái)?,尋址方式,3.1.1 立即數(shù)尋址 比如: MOVAL,80H MOVAX,1090H MOVEAX,10002000H 3.1.2 寄存器尋址 比如: INCCX ROLAH,1 MOV ECX ,EAX,8位?16位?32位?,操作數(shù)是,由指令中的寄

2、存器決定,尋址方式,3.1.3 輸入/輸出端口尋址 I/O直接尋址 比如: INAL,82H OUT80H,AX INEAX,80H I/O間接尋址 INAL,DX OUTDX,AX OUTDX,EAX,AL,AX是傳輸內(nèi)容 80H和DX是端口地址,尋址方式,3.1.4 存儲(chǔ)器尋址 EA基址變址比例因子位移量,存儲(chǔ)器尋址,1 直接尋址 MOV AX,1070H MOV EAX,ES:1000H 2 寄存器間接尋址 MOVAX,BX MOV EAX,EBX 3 寄存器相對(duì)尋址 比如: MOVAX,SI+100H 4 基址加變址的尋址 MOVAX,BX+SI MOV EDX,EBX+ESI MOV

3、 EDX,EBX ESI,存儲(chǔ)器尋址,5 相對(duì)的基址加變址尋址 MOV AX,BP+SI+0050 6 相對(duì)的帶比例因子的變址尋址 IMULEBX,ESI*47 7 基址加比例因子的變址尋址 MOVEAX,EBXESI*4 MOV ECX,EDI*8EAX 8 相對(duì)的基址加比例因子的變址尋址 MOV EAX,EDI*4EBP+80,3.2 Pentium指令系統(tǒng),Pentium的指令分為如下幾類: 傳送指令; 串操作指令; 算術(shù)運(yùn)算指令; 邏輯運(yùn)算和移位指令; 轉(zhuǎn)移和調(diào)用指令; 標(biāo)志操作和處理器指令; 控制指令; 條件測(cè)試和字節(jié)設(shè)置指令; 系統(tǒng)管理指令; 支持高級(jí)語(yǔ)言的指令。,3.2.1 傳送

4、指令(1),通用傳送指令MOV和MOVZX/MOVSX 兩個(gè)操作數(shù)的數(shù)位相同的傳送指令MOV MOVAL,BL MOVES,DX MOVAX,BX MOV DI,AX MOV CX,1000 MOVWORD PTR SI,6070H MOVDX,5040H MOVEAX,EBX+ECX*2+1000H MOV CRn,EAX MOVDRn,EAX 兩個(gè)操作數(shù)的數(shù)位不相同的傳送指令MOVZX/MOVSX MOVZX EAX,BL MOVSX EAX,BL,3.2.1 傳送指令(2),堆棧操作指令PUSH/POP、PUSHA/POPA和PUSHAD/POPAD 普通堆棧操作指令PUSH/POP P

5、USH EAX PUSH CS PUSH BX+DI PUSH0870H PUSHDWORD PTR EBX+ESI POP BX POP ES POP EAX,3.2.1 傳送指令(3),堆棧操作指令PUSH/POP、PUSHA/POPA和PUSHAD/POPAD 堆棧成組操作指令PUSHA/POPA和PUSHAD/POPAD PUSH EAX PUSH EBX PUSH EDI PUSH ESI 則子程序返回前,應(yīng)如下恢復(fù)寄存器的值: POP ESI POP EDI POP EBX POP EAX,3.2.1 傳送指令(4),交換指令XCHG/BSWAP 字節(jié)、字和雙字交換指令XCHG X

6、CHGAL,BL XCHGBX,CX XCHG 2530,CX XCHG EAX,EDI XCHG ESI,EBX 寄存器內(nèi)部雙字交換指令BSWAP EAX=01234567H,執(zhí)行指令BSWAP EAX,使EAX=76543210H,3.2.1 傳送指令(5),累加器專用傳送指令I(lǐng)N/OUT和XLAT/XLATB 輸入/輸出指令I(lǐng)N/OUT 直接的I/O指令比如: IN AL,50H IN AX,70H IN EAX,70H OUT 80H,AX 間接的I/O指令 IN AL,DX IN AX,DX IN EAX,DX OUT DX,AX OUTDX,EAX,3.2.1 傳送指令(6),累加

7、器專用傳送指令I(lǐng)N/OUT和XLAT/XLATB 換碼指令XLAT/XLATB 格雷碼編碼規(guī)則如下: 011000100011 200101300110 401001501010 601100710001 810010910100,3.2.1 傳送指令(7),地址傳送指令LEA和LDS/LES/LSS/LFS/LGS 比如: LEAAX,2728 LEABX,BP+SI LEAESI,EBX+ECX+2530H LEAEDI,BX+1946H 取段碼和偏移量的指令LDS/LES/LSS/LFS/LGS 比如: LDSDI,2530H LESEDI,1000H LSSESP,EDX LFSEDX

8、,EDX LGSESI,EDX,3.2.1 傳送指令(8),標(biāo)志傳送指令LAHF/SAHF、PUSHF/POPF和PUSHFD/POPFD 讀取低8位標(biāo)志和設(shè)置低8位標(biāo)志指令LAHF/SAHF 對(duì)標(biāo)志寄存器的推入和彈出堆棧指令PUSHF/POPF和PUSHFD/POPFD,3.2.2 算術(shù)運(yùn)算指令,無(wú)符號(hào)數(shù)和有符號(hào)數(shù)采用同一套加法指令及減法指令有兩個(gè)條件: 同為無(wú)符號(hào)數(shù)或有符號(hào)數(shù) 用不同的方法檢測(cè)無(wú)符號(hào)數(shù)或有符號(hào)數(shù)的運(yùn)算結(jié)果是否溢出,3.2.2 算術(shù)運(yùn)算指令(1),加法類指令A(yù)DD/ADC/XADD/INC 不帶進(jìn)位位的加法指令A(yù)DD 比如: ADDCX,1000H ADDDI,SI ADD

9、BX+DI,AX ADDEAX,BX+2000H 帶進(jìn)位位的加法指令A(yù)DC 比如: ADCAX,SI ADCDX,SI ADCBX,3000H,3.2.2 算術(shù)運(yùn)算指令(2),加法類指令A(yù)DD/ADC/XADD/INC 字交換加法指令XADD 比如:AX=1234H,BX=1111H,執(zhí)行指令 XADD AX,BX 比如:EAX=20000002H,而1000H開始的內(nèi)存單元中為30000003H,執(zhí)行指令 XADD 1000H,EAX 增量指令I(lǐng)NC 比如: INC AL INCECX INCBYTE PTRBX+DI+500,3.2.2 算術(shù)運(yùn)算指令(3),減法類指令SUB/SBB/DEC

10、/NEG和CMP/CMPXCHG/CMPXCHG8B 1) 不考慮借位的減法指令SUB,比如: SUB EBX,ECX SUB BP+2,CL SUB SI,5010H SUB WORD PTR DI,1000H 2)考慮借位的減法指令SBB SBB AX,2530H SBB WORD PTREDI+2,1000H,3.2.2 算術(shù)運(yùn)算指令(4),減法類指令SUB/SBB/DEC/NEG和CMP/CMPXCHG/CMPXCHG8B 3) 減量指令DEC比如: DEC EBX DEC AX DECBYTE PTRDI+2 4) 求補(bǔ)指令NEG比如: NEG EAX NEG ECX 5)比較指令C

11、MP比如: CMP AX,2000H CMPEAX,EBX+EDI+100 CMPEDX,EDI,3.2.2 算術(shù)運(yùn)算指令(5),減法類指令SUB/SBB/DEC/NEG和CMP/CMPXCHG/CMPXCHG8B 6) 比較并交換指令CMPXCHG 比如:AL=11H,BL=24H,1000H=22H,執(zhí)行指令CMPXCHG1000H,BL 又如:EBX=76543210H,ECX=01234567H,EAX=01234567H,則執(zhí)行指令CMPXCHG ECX,EBX 7) 8字節(jié)比較指令CMPXCHG8B 比如:EAX=11111111H,EBX=22222222H,ECX=333333

12、33H,EDX=44444444H,設(shè)DS段1000H所指單元開始的8字節(jié)為4444444411111111H,執(zhí)行指令CMPXCHG8B1000H,3.2.2 算術(shù)運(yùn)算指令(6),乘法指令MUL/IMUL 無(wú)符號(hào)數(shù)的乘法指令MUL MULCX MUL BYTE PTR DI MUL WORD PTR SI 有符號(hào)數(shù)的乘法指令I(lǐng)MUL IMUL CL IMULBX,100 IMUL BYTE PTR BX IMUL WORD PTR DI,3.2.2 算術(shù)運(yùn)算指令(7),有符號(hào)數(shù)乘法指令的擴(kuò)充形式 第一組指令: IMULBX,CX IMULEDX,ECX IMULDI,MEM_WORD IMU

13、LEDX,MEM_DWORD 第二組指令: IMUL DX,BX,300 IMULCX,23 IMULEBP,200 IMULECX,EDX,2000 IMULBX,MEM_WORD,300 IMULEDX,MEM_DWORD,20,3.2.2 算術(shù)運(yùn)算指令(8),除法指令DIV/IDIV 無(wú)符號(hào)數(shù)的除法指令DIV DIVCL DIVWORD PTR DI 有符號(hào)數(shù)的除法指令I(lǐng)DIV IDIV BX IDIV BYTE PTRDI,3.2.2 算術(shù)運(yùn)算指令(9),類型轉(zhuǎn)換指令CBW/CWD/CWDE/CDQ CBW CWD CWDE CDQ,3.2.2 算術(shù)運(yùn)算指令(10),兩類BCD碼 組合

14、的BCD碼 非組合的BCD碼 BCD碼指令A(yù)AA/DAA、AAS/DAS、AAM和AAD BCD碼的加法十進(jìn)制調(diào)整指令A(yù)AA/DAA BCD碼的減法十進(jìn)制調(diào)整指令A(yù)AS/DAS BCD碼的乘法十進(jìn)制調(diào)整指令A(yù)AM BCD碼的除法十進(jìn)制調(diào)整指令A(yù)AD,3.2.3 邏輯運(yùn)算和移位指令,邏輯指令分為兩類: 邏輯運(yùn)算指令 移位指令,3.2.3 邏輯運(yùn)算和移位指令(1),邏輯運(yùn)算指令A(yù)ND/OR/NOT/XOR/TEST 比如: ANDAX,1000H ANDEAX,EBX AND EDX,EBX+ESI ORAX,00F0H XORAL,0FH XOREAX,EAX XORECX,100 XORECX

15、,10000000H TESTEAX,80000000H TESTAL,01 NOTAL NOTEBX NOTWORD PTR 1000H,3.2.3 邏輯運(yùn)算和移位指令(2),移位指令SAL/SAR/SHL/SHR和OL/ROR/RCL/RCR 非循環(huán)移位指令SAL/SAR/SHL/SHR SALEDX,8 SALEAX,CL SALAL,1,(a) 算術(shù)左移指令SAL; (b) 邏輯左移指令SHL (c) 算術(shù)右移指令SAR; (d) 邏輯右移指令SHR,3.2.3 邏輯運(yùn)算和移位指令(2),移位指令SAL/SAR/SHL/SHR和OL/ROR/RCL/RCR 循環(huán)移位指令ROL/ROR/

16、RCL/RCR ROLWORD PTR DI,CL RCREBX,CL ROL BX,1,不帶CF的循環(huán)左移指令ROL; (b) 不帶CF的循環(huán)右移指令ROR; (c) 帶CF的循環(huán)左移指令RCL; (d) 帶CF的循環(huán)右移指令RCR,3.2.3 邏輯運(yùn)算和移位指令(3),雙移位指令SHLD/SHRD SHLDEAX,EBX,3 SHLDMEM_WORD,DX,8 SHLDECX,EDX,21 SHLDMEM_DWORD,EAX,2 SHLDAL,BL,CL SHRDEAX,EBX,10 SHRDECX,EDX,19 SHRDEAX,EBX,CL,3.2.4 串操作指令(1),字符串傳送指令M

17、OVSB/MOVSW/MOVSD 比如下面的程序段: MOV SI,1000H MOVDI,2000H MOVCX,100 CLD REP MOVSB,3.2.4 串操作指令(2),字符串比較指令CMPSB/CMPSW/CMPSD MOVDI,0400H MOVSI,0E2DH CLD MOVCX,0004 REPZ CMPSB JZDONE RET DONE:.,3.2.4 串操作指令(3),字符串檢索指令SCASB/SCASW/SCASD MOVDI,0EEDH CLD MOVCX,4 MOVDX,CX REPNZSCASB JNZAAA SUB DX,CX DECDX MOVDI,DX

18、INCBYTE PTR DI+440 AAA:.,3.2.4 串操作指令(4),取字符串指令LODSB/LODSW/LODSD 存字符串指令STOSB/STOSW/STOSD I/O串操作指令I(lǐng)NSB/OUTSB、INSW/OUTSW和INSD/OUTSD,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(1),關(guān)于轉(zhuǎn)移指令和調(diào)用指令的尋址 段內(nèi)直接轉(zhuǎn)移方式 段內(nèi)間接轉(zhuǎn)移方式 段間直接轉(zhuǎn)移方式 段間間接尋址方式,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(2),子程序調(diào)用和返回指令CALL/RET 比如 CALL 1000H CALLEAX CALL2500H:3600H CALLDWORD PTR

19、 DI,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(3),帶參數(shù)的返回指令:RETn DDD:PUSHBP MOVBP,SP PUSHES PUSHDI LESDI,BP+04 AAA:MOVAL,ES:DI CMPAL,00 JZEEE PUSHAX CALLDISPLAY INCDI JMPAAA EEE:POPDI POPES POPBP RET0004,圖3.7 進(jìn)入子程序前的棧頂內(nèi)容(圖中段地址要改為“段碼”),3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(4),無(wú)條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令JMP/J*(其中,* 代表各種條件) 條件轉(zhuǎn)移指令JMP JMP1000H JMPCX JMP

20、1000H:2000H JMP DWORD PTR SI,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(5),無(wú)條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令JMP/J*(其中,* 代表各種條件) 條件轉(zhuǎn)移指令J* JE/JZ JNE/JNZ JG/JNLE JNG/JLE JL/JNGE JNL/JGE JB/JNAE JNB/JAE JA/JNBE JNA/JBE,JS JNS JO JNO JP NP JCXZLABLE JECXZABC,跳轉(zhuǎn)指令舉例,GETMAX:MOVBX,2000H MOVAL,BX MOVCX,14H P1:INCBX CMPAL,BX JAEP22 MOVAL,BX P2:DECC

21、X JNZP1 MOVBX,2000H MOV BX,AL,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(6),循環(huán)控制指令LOOP、LOOPZ/LOOPE和LOOPNZ/LOOPNE 計(jì)數(shù)循環(huán)指令LOOP 比如:延遲子程序: MOVCX,0100H KKK:LOOP KKK,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(7),循環(huán)控制指令LOOP、LOOPZ/LOOPE和LOOPNZ/LOOPNE 相等則循環(huán)指令LOOPZ/LOOPE 例子: MOVCX,28H MOVSI,0FFH NEXT:INCSI CMPBYTE PTR SI,0 LOOPZNEXT JNZOKK CALLDISPLAY

22、1 RET OKK:CALLDISPLAY2 RET,3.2.5 調(diào)用/轉(zhuǎn)移/循環(huán)控制/中斷指令(8),中斷指令和中斷返回指令I(lǐng)NT和IRET/IRETD INT指令和IRET/IRETD指令 類型04的中斷 INT指令的例子,中斷調(diào)用示例1,例1:顯示一個(gè)字符串和接收一個(gè)字符串。 KEYBUF DB DUP (?) MEDBINPUT YOUR PASSWORD DAI:MOVDX,OFFSET ME MOVAH,9 INT21H KEYIN:MOVDX,OFFSET KEYBUF MOVAH,0AH INT21H,中斷調(diào)用示例2,例2:將中斷處理程序進(jìn)行裝配 INTERSET:CLI MO

23、VDX OFFSET MYPROG MOVAL,50H MOVAH,25H INT21H 例3:把鍵盤輸入的字符讀到AL寄存器中 MOVAH,01 INT21H,中斷調(diào)用示例3,例4:把DL中的字符顯示在屏幕上。 MOVDL,A MOVAH,02 INT21H,中斷調(diào)用示例4,例5 ,清除屏幕 CLEAR:MOVAH,6 MOVAL,0 MOVCH,0 MOVCL,0 MOVDH,24 MOVDL,79 MOVBH,7 INT10H,中斷調(diào)用示例5,例6:使光標(biāo)定位在窗口的左下角 POS_CURSE:MOVAH,2 MOVDH,16 MOV DL,30 MOVBH,0 INT10H,3.2.6

24、 標(biāo)志操作和處理器控制指令,標(biāo)志操作指令STC/CLC/CMC、STD/CLD和STI/CTI 進(jìn)位標(biāo)志處理指令STC/CLC/CMC 方向標(biāo)志設(shè)置指令STD/CLD 中斷允許標(biāo)志設(shè)置和清除指令STI/CLI 暫停指令HLT 和無(wú)操作指令NOP 暫停指令HLT 無(wú)操作指令NOP 交權(quán)指令和等待指令ESC/WAIT 總線封鎖指令LOCK,3.2.7 條件測(cè)試和字節(jié)設(shè)置指令,基于某個(gè)標(biāo)志測(cè)試的字節(jié)設(shè)置指令SETZ/SETE、SETNZ/SETNE、SETC/SETNC、SETS/SETNS、SETO/ SETNO和SETP/ SETNP SETZ指令和SETE指令 SETNZ指令和SETNE指令

25、SETC指令 SETNC指令 SETS指令 SETNS指令 SETO指令 SETNO指令 SETP指令 SETNP指令,3.2.7 條件測(cè)試和字節(jié)設(shè)置指令,基于無(wú)符號(hào)數(shù)比較的字節(jié)設(shè)置指令SETB/SETNAE/SETC、SETNB/SETAE/SETNC、SETBE/SETNA和SETNBE/SETA SETB/SETNAE/SETC SETNB/SETAE/SETNC SETBE/SETNA SETNBE/SETA,3.2.7 條件測(cè)試和字節(jié)設(shè)置指令,基于有符號(hào)數(shù)比較的字節(jié)設(shè)置指令SETL/SETNGE、SETNL/SETGE、SETLE/SETNG和SETNLE/SETG SETL/SET

26、NGE SETNL/SETGE SETLE/SETNG SETNLE/SETG 例子 SETZAL SETGECL SETODH SETCMEM_BYTE SETAMEM_BYTE SETNZMEM_BYTE,3.2.8 位處理指令,位測(cè)試和設(shè)置指令BT/BTS/BTR/BTC BT BTS BTR BTC 例子 BTAX,2 BTSAX,1 BTREBX,2 BTCEAX,4,3.2.8 位處理指令,位掃描指令BSF/BSR 比如: BSFCX,AX BSRECX,EAX 例子: SSS:CLD MOVEDI,MAP MOVECX,N SUBEAX,EAX REPZSCASD JZFAIL BSFEAX,EDI-4 FAIL: .,3.2.9 系統(tǒng)管理指令,系統(tǒng)測(cè)試和管理指令RDTSC、CPU

溫馨提示

  • 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)論