工學(xué)第3章指令系統(tǒng)2課件_第1頁
工學(xué)第3章指令系統(tǒng)2課件_第2頁
工學(xué)第3章指令系統(tǒng)2課件_第3頁
工學(xué)第3章指令系統(tǒng)2課件_第4頁
工學(xué)第3章指令系統(tǒng)2課件_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、8086指令系統(tǒng)(2)1三、邏輯運算和移位類邏輯運算移位操作非循環(huán)移位循環(huán)移位2邏輯運算和移位指令3指令類型邏輯運算與,或,非,異或移位操作非循環(huán)移位,循環(huán)移位4 一、邏輯運算邏輯運算指令對操作數(shù)的要求大多與MOV指令相同。“非”運算指令要求操作數(shù)不能是立即數(shù);除“非”運算指令外,其余指令的執(zhí)行都會使標(biāo)志位OF=CF=051.“與”指令:格式: AND OPRD1,OPRD2操作: 兩操作數(shù)相“與”,結(jié)果送目標(biāo)地址。6“與”指令的應(yīng)用實現(xiàn)兩操作數(shù)按位相與的運算AND BL,SI使目標(biāo)操作數(shù)的某些位不變,某些位清零AND AL,0FH在操作數(shù)不變的情況下使CF和OF清零AND AX,AX72.“

2、或”運算指令格式: OR OPRD1,OPRD2操作: 兩操作數(shù)相“或”,結(jié)果送目標(biāo)地址8“或”指令的應(yīng)用實現(xiàn)兩操作數(shù)相“或”的運算OR AX,DI使某些位不變,某些位置“1”O(jiān)R CL,0FH在不改變操作數(shù)的情況下使OF=CF=0OR AX,AX9“或”指令的應(yīng)用將一個二進(jìn)制數(shù)9變?yōu)樽址?如何實現(xiàn)?103.“非”運算指令格式:NOT OPRD操作:操作數(shù)按位取反再送回原地址注:指令中的操作數(shù)不能是立即數(shù)指令的執(zhí)行對標(biāo)志位無影響例:NOT BYTE PTRBX114.“異或”運算指令格式: XOR OPRD1,OPRD2操作:兩操作數(shù)相“異或”,結(jié)果送目標(biāo)地址例: XOR BL,80H XOR

3、 AX,AX兩操作數(shù)自身相異或,結(jié)果為零125.“測試”指令格式: TEST OPRD1,OPRD2操作: 執(zhí)行“與”運算,但運算的結(jié)果不送回目標(biāo)地址。應(yīng)用:常用于測試某些位的狀態(tài)13例:從地址為3F8H的端口中讀入一個字節(jié)數(shù),當(dāng)該數(shù)的bit1, bit3, bit5位同時為1時,可從38FH端口將DATA為首地址的一個字輸出,否則就不能進(jìn)行數(shù)據(jù)傳送。 編寫相應(yīng)的程序段。14源程序代碼: LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,38FH MOV AX,SI OUT DX,AXAND AL,2AHCMP AL,2AHJNZ WATTTEST AL,

4、02HJZ WATT ;ZF=1轉(zhuǎn)移TEST AL,08HJZ WATTTEST AL,20HJZ WATTAND AL,2AHXOR AL,2AHJNZ WATT15邏輯指令小結(jié)AND指令用于對一個數(shù)據(jù)的指定位清零OR指令用于對一個數(shù)據(jù)的指定位置1NOT指令用于取反碼,再加一,得補碼XOR指令用于對寄存器清零,對特定位取反TEST指令用于測試一個數(shù)據(jù)的指定位是1還是0。操作與AND指令相同,但不送回操作結(jié)果,僅影響標(biāo)志位。16二、移位指令 非循環(huán)移位指令 循環(huán)移位指令注: 移動一位時由指令直接給出; 移動兩位及以上,則移位次數(shù)由CL指定。17二、非循環(huán)移位指令SHL dst,count;邏輯

5、左移SHR dst,count;邏輯右移SAL dst,count;算數(shù)左移SAR dst ,count;算數(shù)右移CFM L00M LCCFM L0M LCF0最高位保持不變18算術(shù)左移和邏輯左移算術(shù)左移指令: SAL OPRD,1 SAL OPRD,CL邏輯左移指令: SHL OPRD,1 SHL OPRD,CL有符號數(shù)無符號數(shù)移動一位后,若CF與最高位不相等,則OF=1;否則OF=019邏輯右移格式: SHR OPRD,1 SHR OPRD,CL0CF無符號數(shù)的右移移動一位后,若次高位與最高位不相等,則OF=1;否則OF=020邏輯右移例:MOV AL,68HMOV CL,2SHR AL,

6、CL0CF0 1 1 0 1 0 AL0 0 0 0 0 1 1 0 1 0 0ALCF0 00 0 0 1 1 0 1 0 ALCF0 0移動1次移動2次21算術(shù)右移格式: SAR OPRD, SAR OPRD,CL有符號數(shù)的右移CF22非循環(huán)移位指令的應(yīng)用左移可實現(xiàn)乘法運算右移可實現(xiàn)除法運算程序段:MOV BX,AX MOV CL,2 SHL AX,CL ;左移2位,乘以4 ADD AX,BX ;AX為原來5倍 SHL AX,1 ;AX為原來的10倍 HLT 232. 循環(huán)移位指令不帶進(jìn)位位的循環(huán)移位帶進(jìn)位位的循環(huán)移位左移 ROL右移 ROR左移 RCL右移 RCR指令格式、對操作數(shù)的要求

7、與非循環(huán)移位指令相同24不帶進(jìn)位位的循環(huán)移位CFCF25帶進(jìn)位位的循環(huán)移位CFCF26循環(huán)移位指令的應(yīng)用用于對某些位狀態(tài)的測試;高位部分和低位部分的交換;與非循環(huán)移位指令一起組成32位或更長字長數(shù)的移位。(P124 例3-35)27程序例 MOV SI,1000H MOV DI,3000H MOV CX,4STR:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ STRHL

8、T程序功能?28程序功能將1000H開始存放的四個壓縮BCD碼轉(zhuǎn)換為ASCII碼存放在3000H開始的單元中去。12H34H56H78H1000H3000H29串操作指令30字串傳送:MOVSB/MOVSW字串比較:CMPSB/CMPSW字串掃描:SCASB/SCASW字串裝入:LODSB/LODSW字串存儲:STOSB/STOSB31串操作指令說明針對數(shù)據(jù)塊或字符串的操作;可實現(xiàn)存儲器到存儲器的數(shù)據(jù)傳送;待操作的數(shù)據(jù)串稱為源串,目標(biāo)地址稱為目標(biāo)串。32串操作指令的特點源串一般存放在數(shù)據(jù)段,偏移地址由SI指定。允許段重設(shè);目標(biāo)串必須在附加段,偏移地址由DI指定;指令自動修改地址指針,修改方向由

9、DF決定。 DF=0 DF=1數(shù)據(jù)塊長度值由CX指定可增加自動重復(fù)前綴以實現(xiàn)自動修改CX內(nèi)容。增地址方向;減地址方向;33重復(fù)前綴無條件重復(fù)REP條件重復(fù)REPE 相等重復(fù)REPZ 為零重復(fù)REPNE 不相等重復(fù)REPNZ 不為零重復(fù)CX0 且 ZF=1CX0 且 ZF=0CX0 重復(fù)34串操作指令流程取源串地址取目標(biāo)串地址設(shè)串長度傳送一個字節(jié)或字修改地址指針修改串長度值傳送完否?NY設(shè)操作方向351. 串傳送指令格式: MOVS OPRD1,OPRD2 MOVSB MOVSW串傳送指令常與無條件重復(fù)前綴連用36串傳送指令對比用MOV指令和MOVS指令實現(xiàn)將200個字節(jié)數(shù)據(jù)從內(nèi)存的一個區(qū)域送到

10、另一個區(qū)域的程序段。37串傳送指令例用串傳送指令實現(xiàn)200個字節(jié)數(shù)據(jù)的傳送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT382. 串比較指令格式: CMPS OPRD1,OPRD2 CMPSB CMPSW串比較指令常與條件重復(fù)前綴連用,指令的執(zhí) 行不改變操作數(shù),僅影響標(biāo)志位。前綴的操作對標(biāo)志位不影響39串比較指令例測試200個字節(jié)數(shù)據(jù)是否傳送正確:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 403.

11、 串掃描指令格式: SCAS OPRD SCASB SCASW執(zhí)行與CMPS指令相似的操作,只是這里的源 操作數(shù)是AX或AL目 標(biāo)操作數(shù)41串掃描指令的應(yīng)用常用于在指定存儲區(qū)域中尋找某個關(guān)鍵字。 P127例3-3842串裝入指令格式: LODS OPRD LODSB LODSW操作:對字節(jié): AL對 字: AX源操作數(shù)DS:SIDS:SI434. 串裝入指令用于將內(nèi)存某個區(qū)域的數(shù)據(jù)串依次裝入累加器,以便顯示或輸出到接口。LODS指令一般不加重復(fù)前綴。445. 串存儲指令格式: STOS OPRD STOSB STOSW操作:對字節(jié): AL對 字: AX目 標(biāo)操作數(shù)ES:DIES:DI45串存儲

12、指令例 內(nèi)存某個區(qū)域清零設(shè)計思想: 區(qū)域首地址送ES:DI串長度送CX置方向標(biāo)志DF0送累加器AL執(zhí)行串送存指令P12946程序控制指令轉(zhuǎn)移指令循環(huán)控制過程調(diào)用中斷控制47一、轉(zhuǎn)移和調(diào)用指令的尋址段內(nèi)直接轉(zhuǎn)移 有效地址:IP+位移量 段內(nèi)間接轉(zhuǎn)移段間直接轉(zhuǎn)移 CS、IP段間間接轉(zhuǎn)移 CS、IP48二、無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令1、無條件轉(zhuǎn)移指令 段內(nèi)轉(zhuǎn)移: JMP 1000H ;IP IP+1000H JMP SHORT LOP1;LOP1是標(biāo)號 段間轉(zhuǎn)移 JMP FAR PTR LOP2 I P LOP2的段內(nèi)偏移地址 CS LOP2的段地址 JMP DWORD PTR BX I P BX

13、 CS BX+249段間間接轉(zhuǎn)移間接尋址轉(zhuǎn)移的目標(biāo)地址由指令中的32位操作數(shù)給出 例:JMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令碼代碼段1代碼段2數(shù)據(jù)段50 形式: JX 短目標(biāo)地址 X :13個英文字母 跳轉(zhuǎn)范圍: -128+127字節(jié)1)、 JE/JZ ;等于,A=B(ZF=1則跳轉(zhuǎn)) JNZ/JNE;不等于,AB2)、無符號數(shù)比較 JB/JNAE: A =B JA/JNBE:A B ; JNA/JBE:A =B2. 條件轉(zhuǎn)移指令513)、帶符號數(shù)比較指令JL:A=BJG:A BJNG:A=B4)其它轉(zhuǎn)移指令JS 、JNS;JO 、JNO;JP、JPE:P

14、=1JPO、JNP;JCXZ:CX=0轉(zhuǎn)移 52例、比較1000H、1001單元的兩個數(shù)(無符號數(shù)),將大數(shù)存2000H單元中。解: MOV BX,1000H ;第一數(shù)送AL MOV AL, BX INC BX ;指向第二數(shù) CMP AL,BX ;兩數(shù)比較 JA LOP1 ;大于轉(zhuǎn) MOV AL,BX ;大數(shù)AL送LOP1:MOV 2000H,AL HLT 53二、循環(huán)控制指令循環(huán)范圍:以當(dāng)前IP為中心的-128+127范圍內(nèi)循環(huán)。循環(huán)次數(shù)由CX寄存器指定。循環(huán)指令:LOOP *LOOPZ *LOOPNZ無條件循環(huán)指令條件循環(huán)指令54無條件循環(huán)指令格式: LOOP LABEL循環(huán)條件: CX

15、0操作: DEC CX JNZ 符號地址55條件循環(huán)指令格式: LOOPZ LABEL LOOPE LABEL循環(huán)條件: CX 0 ZF=1格式: LOOPNZ LABEL LOOPNE LABEL循環(huán)條件: CX 0 ZF=056三、過程調(diào)用和返回用于調(diào)用一個子過程;子過程由程序員預(yù)先設(shè)計 并裝入內(nèi)存 子過程執(zhí)行結(jié)束后要返回 原調(diào)用處調(diào)用程序斷點入口地址入口地址斷點地址子程序57 指令格式 CALL RET(1) CALL指令 CALL 1000H;段內(nèi)直接調(diào)用 1)、IP入棧 : SP SP-2 SP IP 2)、入口地址:IP IP+1000H 58CALL NEAR BCD1;段內(nèi)直接

16、調(diào)用1)IP值入棧:SP SP-2 SP IP2)入口地址: IP BCD1的偏移地址CALL AX ;段內(nèi)間接調(diào)用1)IP值入棧:SP SP-2 SP IP2)入口地址: IP AX的值59CALL FAR BCD2;段間直接調(diào)用 1)、CS值入棧 2)、IP值入棧 3)、CS BCD2的段地址 IP BCD2的偏移地址CALL DWORD PTR DI ;段間間接調(diào)用 1)、CS值入棧 2)、IP值入棧 3)、I P DI CS DI+260(2)、返回指令:RET1)段內(nèi)調(diào)用返回 從堆棧彈出一個字到IP2)段間調(diào)用返回 從堆棧彈出一個字到IP 從堆棧彈出一個字到CS3)RET N :帶參

17、數(shù)返回 RET 6 ,返回后,使SP+6。61段間調(diào)用例格式: CALL FAR PROC格式例:CALL FAR TIMRECALL DWORD PTRSIXXHXXHCALL代碼段數(shù)據(jù)段SIXXHXXHCSIP62四、中斷指令中斷中斷源中斷的類型中斷指令引起CPU產(chǎn)生一次中斷的指令63中斷與過程調(diào)用:中斷是隨機事件或異常事件引起,調(diào)用則是事 先已在程序中安排好 ; 響應(yīng)中斷請求不僅要保護斷點地址,還要保護 FLAGS內(nèi)容;調(diào)用指令在指令中直接給出子程序入口地址, 中斷指令只給出中斷向量碼,入口地址則在向 量碼指向的內(nèi)存單元中。64 1) INT n (1)、標(biāo)志寄存器入棧; (2)、清標(biāo)志位TF、IF; (3)、CS、IP值入棧; (4)、計算中斷地址: n 4 :低地址單元入IP 高地址單元入CS 2) INTO:溢出中斷 3) 中斷返回IRET65中斷指令的執(zhí)行過程n4 22H11H00H67HIPCS68122HMOV代碼段中斷向量表堆棧段SPFLAGSHFLAGSLIPHCSLCSHIPLSPSPSP66例3:INT 21H操作結(jié)果:1)、標(biāo)志寄

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論