




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第第5 5章章 80 x8680 x86的指令系統(tǒng)的指令系統(tǒng)l 數(shù)據(jù)傳送指令l 算術指令l 邏輯指令l 串處理指令l 控制轉(zhuǎn)移指令l 處理機控制與雜項操作指令8086的指令系統(tǒng)重點關注:l指令的基本功能l指令支持的尋址方式l指令的執(zhí)行對標志位的影響l指令的特殊要求l 指令系統(tǒng)的格式 一組指令的集合 操作碼 操作數(shù) . 操作數(shù)指令例:MOV 指令格式:MOV DST,SRC功能:源操作數(shù)的內(nèi)容傳送到目標操作數(shù);源操作數(shù)中的內(nèi)容不變。數(shù)據(jù)傳送指令:l通用數(shù)據(jù)傳送指令 MOV、PUSH、POP、XCHG l累加器專用傳送指令 IN、OUT、XLAT l地址傳送指令 LEA、LDS、LES l標志寄存
2、器傳送指令 LAHF、SAHF、PUSHF、POPF l類型轉(zhuǎn)換指令 CBW、CWD 傳送指令: MOV DST, SRC執(zhí)行操作: (DST) (SRC)l 通用數(shù)據(jù)傳送指令注意: * DST、SRC 不能同時為段寄存器 MOV DS, ES * 立即數(shù)不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即數(shù)和CS* DST、SRC 不能同時為存儲器尋址* 不影響標志位(對所有的數(shù)據(jù)傳送指令而言) 進棧指令: PUSH SRC 執(zhí)行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC) 出棧指令: POP DST 執(zhí)行操作: (DST) ( (SP)+1
3、, (SP) ) (SP) (SP) + 2堆棧:先進后出的存儲區(qū),段地址存放在SS中, SP在任何時候都指向棧頂,進出棧后自動修改SP。注意: * 堆棧操作必須以字為單位 * 不影響標志位 * 不能用立即尋址方式 PUSH 1234H * DST不能是CS POP CS 例:假設 (AX) = 2107 H , 執(zhí)行 PUSH AX* * * * *(SP)PUSH AX 執(zhí)行前(SS)(SP)* * * * *07H21H低地址 高地址PUSH AX 執(zhí)行后進棧方向(SS)例: POP BX(SP)* * * * *07H21HPOP BX 執(zhí)行前(SS)(SP)* * * * *07H2
4、1H低地址 高地址 POP BX 執(zhí)行后 (BX) = 2107H出棧方向(SS)例:PUSH DS SUB AX, AX PUSH AX RET例:PUSH AX PUSH BX PUSH CX ;其間用到AX、BX、CX POP CX ; 后進先出 POP BX POP AX 交換指令: XCHG OPR1, OPR2 執(zhí)行操作: (OPR1) (OPR2)注意: * 不影響標志位 * 不允許使用段寄存器,兩個操作數(shù)必須有一個在寄存器中(內(nèi)存之間不能相互傳送數(shù)據(jù)) 例:XCHG BX,BP+SI (BX)=6F30H,(BP)=0200H,(SI)=0046H, (SS)=2F00H,(2
5、F246H)=4154H 例:XCHG AL,BHl 累加器專用傳送指令(只限使用AX或AL) 輸入指令 IN (I/O CPU) 長格式: IN AL, PORT (字節(jié)) IN AX, PORT (字) 執(zhí)行操作: (AL) ( PORT ) (字節(jié)) (AX) ( PORT+1,PORT )(字) 短格式: IN AL, DX (字節(jié)) IN AX, DX (字) 執(zhí)行操作: (AL) ( (DX) ) (字節(jié)) (AX) ( (DX)+1,(DX) )(字) 輸出指令 OUT (CPU I/O)長格式: OUT PORT, AL (字節(jié)) OUT PORT, AX (字)執(zhí)行操作:(
6、PORT ) (AL) (字節(jié)) ( PORT+1, PORT ) (AX)(字)短格式: OUT DX, AL (字節(jié)) OUT DX, AX (字)執(zhí)行操作:( (DX) ) (AL) (字節(jié)) ( (DX)+1, (DX) ) (AX)(字)注意: * 不影響標志位* 前256個端口號00HFFH可直接在指令中指定(長格式)* 如果端口號 256,端口號 DX(短格式)例: IN AX, 28H MOV DATA_WORD, AX例: MOV DX, 3FCH IN AX, DX例: OUT 5, AL例:測試某狀態(tài)寄存器(端口號27H)的第2位是否為1 IN AL, 27H TEST
7、AL, 00000100B JNZ ERROR ;若第2位為1,轉(zhuǎn)ERROR處理例:Sound程序 mov dx, 100 in al, 61h and al,11111100bsound: xor al, 2 ; 1 0 1 out 61h, al ;ON OFF ON mov cx, 140h ;脈寬Wait1:loop wait1 dec dx jne sound 設備控制寄存器端口61H1 / 0 0 控制其它外部設備放大器2號定時器門控1 0與門(BX) 30 H F004031 H F0041 (AL) = 3 32 H F0042 33 H F0043TABLE(DS)=F000
8、H換碼指令:XLAT 或XLAT OPR執(zhí)行操作:(AL) ( (BX) + (AL) )例: MOV BX, OFFSET TABLE ; (BX)=0040H MOV AL, 3 XLAT TABLE 指令執(zhí)行后 (AL)=33H注意: * 不影響標志位* 字節(jié)表格(長度不超過256) 首地址 (BX)* 需轉(zhuǎn)換的代碼位移量 (AL)l 地址傳送指令有效地址送寄存器指令:LEA REG, SRC執(zhí)行操作: (REG) SRCSCR:不能是立即尋址,寄存器尋址指針送寄存器和DS指令:LDS REG, SRC執(zhí)行操作: (REG) (SRC)只能是存儲器尋址 (DS) (SRC+2) 相繼二字
9、 寄存器、DS指針送寄存器和ES指令:LES REG, SRC執(zhí)行操作: (REG) (SRC) (ES) (SRC+2) 相繼二字 寄存器、ES 例:下列兩種指令的功能相同LEA BX, TABLE MOV BX,OFFSET TABLE 40 H00 H00 H30 H TABLE(DS):1000HMOV BX, TABLE ; (BX)=0040HMOV BX, OFFSET TABLE ; (BX)=1000HLEA BX, TABLE ; (BX)=1000HLDS BX, TABLE ; (BX)=0040H ; (DS)=3000HLES BX, TABLE ; (BX)=00
10、40H ; (ES)=3000H注意: * 不影響標志位 * REG 不能是段寄存器 * SRC 必須為存儲器尋址方式l 標志寄存器傳送指令 標志送AH指令: LAHF 執(zhí)行操作: (AH) (FLAGS的低字節(jié)) AH送標志寄存器指令:SAHF 執(zhí)行操作: (FLAGS的低字節(jié)) (AH) 標志進棧指令: PUSHF 執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1, (SP) ) (FLAGS) 標志出棧指令: POPF 執(zhí)行操作: (FLAGS) ( (SP)+1, (SP) ) (SP) (SP) + 2* 影響標志位LAHF指令 該指令功能是把標志寄存器中的SF、ZF、AF、
11、PF、CF五個標志傳至AH的第7、6、4、2、0位,第5、3、1位未定義。SF ZFAFPFCFTFIFDFOFFLAGAH算術指令:l 加法指令 ADD、ADC、INCl 減法指令 SUB、SBB、DEC、NEG、CMPl 乘法指令 MUL、IMUL l 除法指令 DIV、IDIVl 十進制調(diào)整指令 DAA、DAS、 AAA、AAS、AAM、AADl 加法指令 加法指令: ADD DST, SRC 執(zhí)行操作: (DST) (SRC) + (DST) 帶進位加法指令:ADC DST, SRC 執(zhí)行操作: (DST) (SRC) + (DST) + CF 加1指令: INC OPR 執(zhí)行操作:
12、(OPR) (OPR) + 1注意: * 除INC指令不影響CF標志外,均對條件標志位有影響。加法指令對條件標志位的影響* CF 位表示無符號數(shù)相加的溢出* OF 位表示帶符號數(shù)相加的溢出1 結果為負0 否則SF=1 結果為00 否則ZF=1 和的最高有效位有向高位的進位0 否則CF=1 兩個操作數(shù)符號相同,而結果符號與之相反0 否則OF=舉例: n=8 bit 帶符號數(shù)(-128127), 無符號數(shù)(0255) 0 0 0 0 0 1 0 0 + 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1帶:(+4)+(+11)=+15 OF=0無:4+11=15 CF=0帶符號數(shù)和無符
13、號數(shù)都不溢出 0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 帶: (+9)+(+124)=-123 OF=1 無: 9+124=133 CF=0帶符號數(shù)溢出無符號數(shù)溢出 0 0 0 0 0 1 1 1 + 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0帶:(+7)+(-5)=+2 OF=0無:7+251=2 CF=1帶符號數(shù)和無符號數(shù)都溢出 1 0 0 0 0 1 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0帶:(-121)+(-11)=+124 OF=1無:135+245=124 CF
14、=1例:雙精度數(shù)的加法 (DX) = 0002H (AX) = 0F365H (BX) = 0005H (CX) = 8100H 指令序列 ADD AX, CX ; (1) ADC DX, BX ; (2) (1) 執(zhí)行后,(AX) = 7465H CF=1 OF=1 SF=0 ZF=0 (2) 執(zhí)行后,(DX) = 0008H CF=0 OF=0 SF=0 ZF=0l 減法指令減法指令: SUB DST, SRC 執(zhí)行操作: (DST) (DST) - (SRC)帶借位減法指令:SBB DST, SRC 執(zhí)行操作: (DST) (DST) - (SRC) - CF減1指令: DEC OPR
15、執(zhí)行操作: (OPR) (OPR) - 1求補指令: NEG OPR 執(zhí)行操作: (OPR) - (OPR)比較指令: CMP OPR1, OPR2 執(zhí)行操作: (OPR1) - (OPR2)注意: * 除DEC指令不影響 CF標志外,均對條 件標志位有影響。減法指令對條件標志位(CF/OF/ZF/SF)的影響:CF 位表示無符號數(shù)減法的溢出。OF 位表示帶符號數(shù)減法的溢出。1 被減數(shù)的最高有效位有向高位的借位0 否則CF=1 兩個操作數(shù)符號相反,而結果的符號與減數(shù)相同0 否則OF=l NEG 求補指令指令格式:NEG OPR執(zhí)行操作(OPR) -(OPR)即將操作數(shù)按位求反后末位加1,因而執(zhí)
16、行的操作也可以表示為: (OPR)0FFFFH -(OPR)+ 1l CMP 比較指令指令格式:CMP OPR1,OPR2執(zhí)行操作 (OPR1)-(OPR2) 該指令與SUB指令一樣執(zhí)行減法操作,但它并不保存結果,只是根據(jù)結果設置條件標志位。 CMP指令后往往跟一條條件轉(zhuǎn)移指令,根據(jù)比較結果產(chǎn)生不同的程序分支。操作數(shù)類型 CF ZF SF OF兩操作數(shù)的關系帶符號的二進制 0 1 0 0 - 0 1 0 - 0 0 1 - 0 0 0 - 0 1 1 等于 小于目的操作數(shù) 小于 源操作數(shù) 大于 大于不帶符號的二進制 0 1 0 0 1 0 - - 0 0 - - 等于目的操作數(shù) 低于 源操作數(shù)
17、 高于CMP指令執(zhí)行后對標志位的影響l 乘法指令 無符號數(shù)乘法指令:MUL SRC 帶符號數(shù)乘法指令:IMUL SRC執(zhí)行操作: 字節(jié)操作數(shù) (AX) (AL) * (SRC) 字操作數(shù) (DX, AX) (AX) * (SRC)注意: * AL (AX) 為隱含的乘數(shù)寄存器。* AX (DX,AX) 為隱含的乘積寄存器。* SRC不能為立即數(shù)。* 除CF和OF外,對條件標志位無定義。乘法指令對 CF/OF 的影響:例:(AX) = 16A5H,(BX) = 0611H (1) IMUL BL ; (AX) (AL) * (BL) ; (AX) = 0F9F5H CF=OF=1 (2) MUL
18、 BX ; (DX, AX) (AX) * (BX) ; (DX)=0089H (AX)=5EF5H CF=OF=100 乘積的高一半為零11 否則MUL指令: CF,OF =00 乘積的高一半是低一半的符號擴展11 否則IMUL指令: CF,OF =邏輯指令:l 邏輯運算指令 AND、OR、NOT、XOR、TEST l 移位指令 SHL、SHR、SAL、SAR、 ROL、ROR、RCL、RCR邏輯非指令:NOT OPR * OPR不能為立即數(shù)執(zhí)行操作: (OPR) (OPR) * 不影響標志位 邏輯與指令:AND DST, SRC執(zhí)行操作: (DST) (DST) (SRC)邏輯或指令:OR
19、 DST, SRC執(zhí)行操作: (DST) (DST) (SRC)異或指令: XOR DST, SRC執(zhí)行操作: (DST) (DST) (SRC)測試指令: TEST OPR1, OPR2執(zhí)行操作: (OPR1) (OPR2)CF OF SF ZF PF AF 0 0 * * * 無定義 根據(jù)運算結果設置l 邏輯運算指令例:屏蔽AL的第0、1兩位 AND AL, 0FCH例:置AL的第5位為1 OR AL, 20H 例:使AL的第0、1位變反 XOR AL, 3例:測試某些位是0是1 TEST AL, 1 JZ EVEN * * * * * * * * OR 0 0 1 0 0 0 0 0 *
20、 * 1 * * * * * * * * * * * 0 1 XOR 0 0 0 0 0 0 1 1 * * * * * * 1 0 * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0 * * * * * * * * AND 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 *AL中的數(shù)邏輯左移 SHL OPR, CNT ;(CNT=1,移1位;CNT1,放在CL)邏輯右移 SHR OPR, CNT算術左移 SAL OPR, CNT(同邏輯左移)算術右移 SAR OPR, CNT CF 0 0 CFCFl 移位指令循環(huán)左移 ROL
21、OPR, CNT循環(huán)右移 ROR OPR, CNT帶進位循環(huán)左移 RCL OPR, CNT帶進位循環(huán)右移 RCR OPR, CNTCF CFCFCF注意: * OPR可用除立即數(shù)以外的任何尋址方式 * CNT=1,SHL OPR, 1 CNT1,MOV CL, CNT SHL OPR, CL ; 以SHL為例* 條件標志位: CF = 移入的數(shù)值 1 CNT=1時,最高有效位的值發(fā)生變 0 CNT=1時,最高有效位的值不變 移位指令: SF、ZF、PF 根據(jù)移位結果設置,AF無定義 循環(huán)移位指令: 不影響 SF、ZF、PF、AFOF =例:(AX)= 0012H,(BX)= 0034H,把它們
22、裝配成(AX)= 1234H 例:(BX) = 84F0H (1) (BX) 為無符號數(shù),求 (BX) / 2 SHR BX, 1 ; (BX) = 4278H (2) (BX) 為帶符號數(shù),求 (BX) 2 SAL BX, 1 ; (BX) = 09E0H, OF=1 (3) (BX) 為帶符號數(shù),求 (BX) / 4 MOV CL, 2 SAR BX, CL ; (BX) = 0E13CHMOV CL, 8ROL AX, CLADD AX, BX 控制轉(zhuǎn)移指令:l 無條件轉(zhuǎn)移指令 JMPl 條件轉(zhuǎn)移指令 JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、 JP
23、 / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、 JLE / JNLE、 JCXZ l 循環(huán)指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE l 子程序調(diào)用和返回指令 CALL、RETl 中斷與中斷返回指令 INT、INTO、IRET無條件轉(zhuǎn)移指令:段內(nèi)直接短轉(zhuǎn)移:JMP SHORT OPR 執(zhí)行操作:(IP) (IP) + 8位位移量段內(nèi)直接近轉(zhuǎn)移:JMP NEAR PTR OPR 執(zhí)行操作:(IP) (IP) + 16位位移量段內(nèi)間接轉(zhuǎn)移: JMP WORD PTR OPR 執(zhí)行操作: (IP) (EA)條件轉(zhuǎn)移指令:注意:只能使用段
24、內(nèi)直接尋址的8 位位移量(1) 根據(jù)單個條件標志的設置情況轉(zhuǎn)移 格式 測試條件JZ(JE) OPR ZF = 1JNZ(JNE) OPR ZF = 0JS OPR SF = 1JNS OPR SF = 0JO OPR OF = 1JNO OPR OF = 0JP OPR PF = 1JNP OPR PF = 0JC OPR CF = 1JNC OPR CF = 0(2) 比較兩個無符號數(shù),并根據(jù)比較結果轉(zhuǎn)移 格式 測試條件 JB (JNAE,JC) OPR CF = 1 JNB (JAE,JNC) OPR CF = 0 JBE (JNA) OPR CFZF = 1 JNBE (JA) OPR
25、CFZF = 0* 適用于地址或雙精度數(shù)低位字的比較(3) 比較兩個帶符號數(shù),并根據(jù)比較結果轉(zhuǎn)移 格式 測試條件 JL (JNGE) OPR SFOF = 1 JNL (JGE) OPR SFOF = 0 JLE (JNG) OPR (SFOF)ZF = 1 JNLE (JG) OPR (SFOF)ZF = 0* 適用于帶符號數(shù)的比較(4) 測試 CX 的值為 0 則轉(zhuǎn)移 格式 測試條件 JCXZ OPR (CX)=0循環(huán)指令:注意:* CX 中存放循環(huán)次數(shù)* 只能使用段內(nèi)直接尋址的8 位位移量LOOPLOOPZ / LOOPELOOPNZ / LOOPNE LOOP指令的執(zhí)行步驟: (1)
26、(CX) (CX) - 1 (2) 檢查是否滿足測試條件,如滿足則 (IP) (IP) + 8位位移量,實行循環(huán); 不滿足則 IP 不變,退出循環(huán)。循環(huán)指令:LOOP OPR測試條件:(CX) 0為零或相等時循環(huán)指令:LOOPZ(LOOPE) OPR測試條件:ZF=1 且 (CX) 0不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE) OPR測試條件:ZF=0 且 (CX) 0LOOP AGAIN DEC CX JNZ AGAIN例:在多重循環(huán)的程序結構中,CX 計數(shù)器的保存和恢復 MOV CX, MAGAIN: PUSH CX MOV CX, NNEXT: LOOP NEXT POP C
27、X LOOP AGAIN MOV DI, MAGAIN: MOV CX, NNEXT: LOOP NEXT DEC DI JNZ AGAIN子程序調(diào)用和返回指令:code1 segmentmain proc far call far ptr subp retmain endpcode1 endscode2 segmentsubp proc far retsubp endpcode2 ends 段間調(diào)用和返回code segmentmain proc far call subp retmain endpsubp proc near retsubp endpcode ends 段內(nèi)調(diào)用和返回 CALL 調(diào)用指令段內(nèi)直接近調(diào)用:CALL DST執(zhí)行操作:(SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (IP) + 16位位移量段內(nèi)間接近調(diào)用:CALL DST執(zhí)行操作:(SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 齒輪銷售員崗位面試問題及答案
- 游樂設施檢驗員崗位面試問題及答案
- 安徽省阜陽市潁上縣第二中學2025屆化學高一下期末教學質(zhì)量檢測模擬試題含解析
- 江西省永豐中學2025年高一下化學期末達標檢測試題含解析
- 河北省深州市中學2025屆高二化學第二學期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 條形碼管理辦法規(guī)定為
- 農(nóng)家書屋維護管理辦法
- 材料外放加工管理辦法
- 晉安白蟻防治管理辦法
- 華為電子發(fā)票管理辦法
- 河北省2025年中考數(shù)學真題試卷(含答案)
- 福建福州金山中學2024~2025學年高一下冊期末考試數(shù)學試題含解析
- 2025年廣東省高考生物真題(解析版)
- 2024年哈爾濱市道里區(qū)執(zhí)法輔助人員招聘考試真題
- 學堂在線 研究生的壓力應對與健康心理 期末考試答案
- 2025年7月自考13811績效管理試題及答案含解析
- 企業(yè)環(huán)境監(jiān)測管理制度
- 2025事業(yè)單位工勤技能考試考試題庫及答案
- 試藥員知情協(xié)議書
- 2025年嘉興市恒光電力建設有限責任公司招聘筆試參考題庫附帶答案詳解
- 2025內(nèi)蒙古鄂爾多斯農(nóng)商行烏海各機構員工社會招聘37人筆試歷年典型考題及考點剖析附帶答案詳解
評論
0/150
提交評論