《算術(shù)邏輯運(yùn)算類》PPT課件.ppt
《《算術(shù)邏輯運(yùn)算類》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《算術(shù)邏輯運(yùn)算類》PPT課件.ppt(49頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第4章 算術(shù)和邏輯運(yùn)算指令 算術(shù)運(yùn)算類指令用來執(zhí)行二進(jìn)制的算術(shù)運(yùn)算 加減乘除 這類指令會根據(jù)運(yùn)算結(jié)果影響狀態(tài)標(biāo)志 有時要利用某些標(biāo)志才能得到正確的結(jié)果 使用他們時請留心有關(guān)狀態(tài)標(biāo)志重點(diǎn)掌握加法指令 ADD ADC INC減法指令 SUB SBB DEC CMP NEG 4 3 2算術(shù)運(yùn)算類指令 算術(shù)運(yùn)算類指令 可處理 不帶符號 帶符號的8 16位二進(jìn)制數(shù)不帶符號的壓縮型 2位BCD碼 非壓縮型 一位BCD碼 高4位補(bǔ)0 十進(jìn)制數(shù) 對于加法和減法指令 帶符號和不帶符號的加減運(yùn)算的操作過程無區(qū)別 可用同一條加法 減法指令完成 對于乘法除法運(yùn)算 運(yùn)算過程完全不同 分別設(shè)有不帶符號和帶符號的乘法除法的指令 對于十進(jìn)制運(yùn)算 先采用二進(jìn)制運(yùn)算指令 后進(jìn)行十進(jìn)制調(diào)整的方式來實(shí)現(xiàn) 加法指令 ADD ADC和INC減法指令 SUB SBB DEC NEG和CMP他們分別執(zhí)行字或字節(jié)的加法和減法運(yùn)算 除INC和DEC不影響CF標(biāo)志外 其他按定義影響全部狀態(tài)標(biāo)志位操作數(shù)組合 運(yùn)算指令助記符reg imm reg mem運(yùn)算指令助記符mem imm reg 4 3 2 1加法和減法指令 ADDdest src 加法 dest dest src ADD指令使目的操作數(shù)加上源操作數(shù) 和的結(jié)果送到目的操作數(shù)SUBdest src 減法 dest dest src SUB指令使目的操作數(shù)減去源操作數(shù) 差的結(jié)果送到目的操作數(shù) 1 加和減指令 MOVAX 7348H AX 7348HADDAL 27H AL 48H 27H 6FH AX 736FH OF 0 SF 0 ZF 0 PF 1 CF 0ADDAX 3fffH AX 736FH 3FFFH B36EH OF 1 SF 1 ZF 0 PF 0 CF 0 例4加法 SUBAH 0F0H AH B3H F0H C3H AX C36EH OF 0 SF 1 ZF 0 PF 1 CF 1MOVwordptr 200H 0EF00H 200H EF00H 標(biāo)志不變SUB 200H AX 200H EF00H C36EH 2B92H OF 0 SF 0 ZF 0 PF 0 CF 0SUBSI SI SI 0 OF 0 SF 0 ZF 1 PF 1 CF 0 例5減法 ADCdest src 加法 dest dest src CF ADC指令除完成ADD加法運(yùn)算外 還要加上進(jìn)位CF 結(jié)果送到目的操作數(shù)SBBdest src 減法 dest dest src CF SBB指令除完成SUB減法運(yùn)算外 還要減去借位CF 結(jié)果送到目的操作數(shù) 2 帶進(jìn)位加和減指令 MOVAX 7856H AX 7856HMOVDX 8234H DX 8234HADDAX 8998H AX 01EEH CF 1ADCDX 1234H DX 9469H CF 0SUBAX 4491H AX BD5DH CF 1SBBDX 8000H DX 1468H CF 0 例6無符號雙字加法和減法 CMPdest src 做減法運(yùn)算 dest src CMP指令將目的操作數(shù)減去源操作數(shù) 但差值不回送目的操作數(shù)比較指令通過減法運(yùn)算影響狀態(tài)標(biāo)志 用于比較兩個操作數(shù)的大小關(guān)系 后面跟轉(zhuǎn)移指令判斷兩個無符號數(shù)大小用JC JNC或JA JNBE或JB JNAE指令判斷兩個帶符號數(shù)大小用JG JNLE或JL JNGE 3 比較指令CMP compare INCreg mem 增量 加1 reg mem reg mem 1DECreg mem 減量 減1 reg mem reg mem 1INC指令和DEC指令是單操作數(shù)指令與加法和減法指令實(shí)現(xiàn)的加1和減1不同的是 INC和DEC不影響CF標(biāo)志 INCSI SI SI 1DECbyteptr SI SI SI 1 4 增量和減量指令 例7比較指令CMP compare 若自BLOCK開始的內(nèi)存緩沖區(qū)中 有100個帶符號字?jǐn)?shù)據(jù) 要找出其中的最大數(shù) 把它存到MAX單元中 MOVBX OFFSETBLOCKMOVAX BX INCBXINCBXMOVCX 99AGAIN CMPAX BX JGNEXTMOVAX BX NEXT INCBX INCBXDECCXJNZAGAINMOVMAX AXHLT NEGreg mem reg mem 0 reg memNEG指令對操作數(shù)執(zhí)行求補(bǔ)運(yùn)算 即用零減去操作數(shù) 然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算可表達(dá)成 將操作數(shù)按位取反后加1NEG指令對標(biāo)志的影響與用零作減法的SUB指令一樣NEG指令也是一個單操作數(shù)指令NEG指令執(zhí)行的結(jié)果一般總是使CF 1除非操作數(shù)為0時CF 0 5 求補(bǔ)指令NEG negtive MOVAX 0FF64HNEGAL AL 0 64H 9CH AX FF9CH OF 0SF 1 ZF 0 PF 1 CF 1SUBAL 9DH AL FFH AX FFFFH OF 0 SF 1 ZF 0 PF 1 CF 1NEGAX AX 0 FFFFH 0001H OF 0 SF 0 ZF 0 PF 0 CF 1DECAL AL 01H 1 0 AX 0000H OF 0 SF 0 ZF 1 PF 1 CF 1NEGAX AX 0 0 0 OF 0 SF 0 ZF 1 PF 1 CF 0 例8求補(bǔ)運(yùn)算 十進(jìn)制數(shù)調(diào)整指令對二進(jìn)制運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整 以得到十進(jìn)制的運(yùn)算結(jié)果 以此實(shí)現(xiàn)十進(jìn)制BCD碼運(yùn)算8086指令系統(tǒng)支持兩種BCD碼調(diào)整運(yùn)算壓縮BCD碼就是通常的8421碼 它用4個二進(jìn)制位表示一個十進(jìn)制位 一個字節(jié)可以表示兩個十進(jìn)制位 即00 99非壓縮BCD碼用8個二進(jìn)制位表示一個十進(jìn)制位 只用低4個二進(jìn)制位表示一個十進(jìn)制位0 9 高4位為0 4 3 2 2十進(jìn)制調(diào)整指令 十進(jìn)制調(diào)整指令 DAA DAS指令 十進(jìn)制調(diào)整指令它跟在ADD ADC或SUB SBB之后 功能是將AL中十進(jìn)制數(shù)相加 減后的結(jié)果進(jìn)行校正 產(chǎn)生一個組合的十進(jìn)制和 差 仍保留在AL中 AAA AAS指令 十進(jìn)制調(diào)整指令它跟在ADD ADC或SUB SBB之后 對AL中兩個未組合的十進(jìn)制數(shù)相加 減后的結(jié)果進(jìn)行校正 產(chǎn)生一個未組合的十進(jìn)制和 差 仍保留在AL中 乘法指令分無符號和有符號乘法指令MULreg mem 無符號乘法IMULreg mem 有符號乘法AL或AX與另一個操作數(shù)相乘 結(jié)果送到AL和AH 兩個字節(jié)相乘 或送到AX和它的擴(kuò)展部分DX 兩個字相乘 除法指令分無符號和有符號除法指令DIVreg mem 無符號除法IDIVreg mem 有符號除法字節(jié)除法 AX 源操作數(shù) 8位 商在AL中 余數(shù)在AH中字除法 DX AX 源操作數(shù) 16位 商在AX中 余數(shù)DX中 4 3 2 3乘法和除法指令 真值 十進(jìn)制 864二進(jìn)制編碼08H40H壓縮BCD碼08H64H非壓縮BCD碼08H0604HASCII碼38H3634H 壓縮BCD碼加減法調(diào)整指令DAADAS非壓縮BCD碼加減法調(diào)整指令A(yù)AAAASAAMAAD 編碼的比較 位操作類指令以二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)的操作當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中的各個二進(jìn)制位操作時 可以考慮采用位操作類指令注意這些指令對標(biāo)志位的影響1 邏輯運(yùn)算指令A(yù)NDORXORNOTTEST2 移位指令SHLSHRSARSAL3 循環(huán)移位指令ROLRORRCLRCR 4 3 3邏輯運(yùn)算指令 雙操作數(shù)邏輯指令A(yù)ND OR XOR和TEST 根據(jù)結(jié)果設(shè)置SF ZF和PF狀態(tài) 而對AF未定義 指令的執(zhí)行使CF OF 0 運(yùn)算指令助記符reg imm reg mem運(yùn)算指令助記符mem imm reg單操作數(shù)邏輯指令NOT不影響標(biāo)志位 NOTreg mem 4 3 3 1邏輯運(yùn)算指令 對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算 結(jié)果送目的操作數(shù) ANDdest src dest dest src 只有相 與 的兩位都是1 結(jié)果才是1 否則 與 的結(jié)果為0 1 邏輯與指令A(yù)ND 對兩個操作數(shù)執(zhí)行邏輯或運(yùn)算 結(jié)果送目的操作數(shù) ORdest src dest dest src 只要相 或 的兩位有一位是1 結(jié)果就是1 否則 結(jié)果為0 2 邏輯或指令OR 對兩個操作數(shù)執(zhí)行邏輯異或運(yùn)算 結(jié)果送目的操作數(shù) XORdest src dest dest src 只有相 異或 的兩位不相同 結(jié)果才是1 否則 結(jié)果為0 3 邏輯異或指令XOR 對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算 結(jié)果并不送目的操作數(shù) 僅按AND指令影響標(biāo)志 TESTdest src dest src AND與TEST指令的關(guān)系 同SUB與CMP指令的關(guān)系一樣 4 測試指令TEST 對一個操作數(shù)執(zhí)行邏輯非運(yùn)算 NOTreg mem reg mem reg mem 按位取反 原來是 0 的位變?yōu)?1 原來是 1 的位變?yōu)?0 5 邏輯非指令NOT MOVAL 75H AL 75HANDAL 32H AL 30H CF OF 0 SF 0 ZF 0 PF 1ORAL 71H AL 71H CF OF 0 SF 0 ZF 0 PF 1XORAL 0F1H AL 80H CF OF 0 SF 1 ZF 0 PF 0NOTAL AL 7FH 標(biāo)志不變 例9邏輯運(yùn)算 ANDBL 11110110B BL中D0和D3清0 其余位不變ORBL 00001001B BL中D0和D3置1 其余位不變XORBL 00001001B BL中D0和D3求反 其余位不變 AND指令可用于復(fù)位某些位 同0相與 不影響其他位 OR指令可用于置位某些位 同1相或 不影響其他位 XOR指令可用于求反某些位 同1相異或 不影響其他位 例10邏輯運(yùn)算指令的應(yīng)用 將操作數(shù)移動一位或多位 分成邏輯移位和算術(shù)移位 分別具有左移或右移操作移位指令的第一個操作數(shù)是指定的被移位的操作數(shù) 可以是寄存器或存儲單元 后一個操作數(shù)表示移位位數(shù) 該操作數(shù)為1 表示移動一位該操作數(shù)為CL CL寄存器值表示移位位數(shù) 移位位數(shù)大于1只能用CL表示 按照移入的位設(shè)置進(jìn)位標(biāo)志CF 根據(jù)移位后的結(jié)果影響SF ZF PF 4 3 3 2移位指令 SHLreg mem 1 CL reg mem左移1或CL位 最低位補(bǔ)0 最高位進(jìn)入CF 演示 1 邏輯左移指令SHL SHRreg mem 1 CL reg mem右移1 CL位 最高位補(bǔ)0 最低位進(jìn)入CF 演示 2 邏輯右移指令SHR SALreg mem 1 CL 與SHL是同一條指令 演示 3 算術(shù)左移指令SAL SARreg mem 1 CL reg mem右移1 CL位 最高位不變 最低位進(jìn)入CF 演示 4 算術(shù)右移指令SAR MOVDX 6075H DX 0110000001110101BSHLDX 1 DX 1100000011101010B CF 0 SF 1 ZF 0 PF 0SARDX 1 DX 1110000001110101B CF 0 SF 1 ZF 0 PF 0SHRDX 1 DX 0111000000111010B CF 1 SF 0 ZF 0 PF 1MOVCL 4 CL 4 標(biāo)志不變SARDX CL DX 0000011100000011B CF 1 SF 0 ZF 0 PF 1 例11數(shù)據(jù)移位 XORAH AH 實(shí)現(xiàn)AH 0 同時使CF 0SHLAX 1 AX 2 ALMOVBX AX BX AX 2 ALSHLAX 1 AX 4 ALSHLAX 1 AX 8 ALADDAX BX AX 8 AL 2 AL 10 AL 邏輯左移一位相當(dāng)于無符號數(shù)乘以2邏輯右移一位相當(dāng)于無符號數(shù)除以2 例13將AL寄存器中的無符號數(shù)乘以10 循環(huán)移位指令類似移位指令 但要將從一端移出的位返回到另一端形成循環(huán) 分為 ROLreg mem 1 CL 不帶進(jìn)位循環(huán)左移RORreg mem 1 CL 不帶進(jìn)位循環(huán)右移RCLreg mem 1 CL 帶進(jìn)位循環(huán)左移RCRreg mem 1 CL 帶進(jìn)位循環(huán)右移循環(huán)移位指令的操作數(shù)形式與移位指令相同 按指令功能設(shè)置進(jìn)位標(biāo)志CF 但不影響SF ZF PF AF標(biāo)志 演示 演示 演示 演示 4 3 3 3循環(huán)移位指令 將DX AX中32位數(shù)值左移一位SHLAX 1RCLDX 1 32位數(shù)據(jù)移位 32位無符號數(shù) DX AX 右移一位32位無符號數(shù) DX AX 循環(huán)右移一位32位無符號數(shù) DX AX 左移一位 例12把數(shù)字ASCII碼轉(zhuǎn)換為BCD碼 若是奇數(shù)個ASCII碼 則把地址最低位的一個轉(zhuǎn)換為BCD碼 高4位為0 然后把剩下的偶數(shù)個數(shù)按統(tǒng)一的方法處理 每兩個ASCII碼轉(zhuǎn)換成一個壓縮的BCD碼 且地址高的放在高四位 流程圖 MOVSI OFFSETASCBUFMOVDI OFFSETBCDBUFMOVCX COUNT 個數(shù)CXRORCX 1JNCNEXT 為偶數(shù) C 0即最低位為0 轉(zhuǎn)NEXTROLCX 1 為奇數(shù) 則恢復(fù)原值MOVAL SI 取第一個數(shù)ALINCSIANDAL 0FH 屏蔽高4位MOV DI AL 送存儲器 由ASCII碼轉(zhuǎn)換為BCD碼 INCDIDECCXRORCX 1 CX 2NEXT MOVAL SI 取數(shù)ALINCSIANDAL 0FHMOVBL ALMOVAL SI INCSIPUSHCXMOVCL 4 由ASCII碼轉(zhuǎn)換為BCD碼 SALAL CLPOPCXADDAL BLMOV DI ALINCDILOOPNEXT DECCXJNZNEXT HLT 由ASCII碼轉(zhuǎn)換為BCD碼 練習(xí) 將AL的D3和D4位清零 其余位不變將AL的D3和D4位置1 其余位不變內(nèi)存單元MEN存放著一個8位的數(shù)據(jù) 將它的高4位與低4位互換將BCD碼轉(zhuǎn)換成ASCII碼 SHL和SAL指令的功能 SHR指令的功能 SAR指令的功能 ROL指令的功能 ROR指令的功能 RCL指令的功能 RCR指令的功能- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 算術(shù)邏輯運(yùn)算類 算術(shù) 邏輯運(yùn)算 PPT 課件
鏈接地址:http://www.szxfmmzy.com/p-8675582.html