《算術(shù)邏輯運算類》PPT課件.ppt
《《算術(shù)邏輯運算類》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《算術(shù)邏輯運算類》PPT課件.ppt(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第4章 算術(shù)和邏輯運算指令 算術(shù)運算類指令用來執(zhí)行二進制的算術(shù)運算 加減乘除 這類指令會根據(jù)運算結(jié)果影響狀態(tài)標志 有時要利用某些標志才能得到正確的結(jié)果 使用他們時請留心有關(guān)狀態(tài)標志重點掌握加法指令 ADD ADC INC減法指令 SUB SBB DEC CMP NEG 4 3 2算術(shù)運算類指令 算術(shù)運算類指令 可處理 不帶符號 帶符號的8 16位二進制數(shù)不帶符號的壓縮型 2位BCD碼 非壓縮型 一位BCD碼 高4位補0 十進制數(shù) 對于加法和減法指令 帶符號和不帶符號的加減運算的操作過程無區(qū)別 可用同一條加法 減法指令完成 對于乘法除法運算 運算過程完全不同 分別設(shè)有不帶符號和帶符號的乘法除法的指令 對于十進制運算 先采用二進制運算指令 后進行十進制調(diào)整的方式來實現(xiàn) 加法指令 ADD ADC和INC減法指令 SUB SBB DEC NEG和CMP他們分別執(zhí)行字或字節(jié)的加法和減法運算 除INC和DEC不影響CF標志外 其他按定義影響全部狀態(tài)標志位操作數(shù)組合 運算指令助記符reg imm reg mem運算指令助記符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 標志不變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加法運算外 還要加上進位CF 結(jié)果送到目的操作數(shù)SBBdest src 減法 dest dest src CF SBB指令除完成SUB減法運算外 還要減去借位CF 結(jié)果送到目的操作數(shù) 2 帶進位加和減指令 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 做減法運算 dest src CMP指令將目的操作數(shù)減去源操作數(shù) 但差值不回送目的操作數(shù)比較指令通過減法運算影響狀態(tài)標志 用于比較兩個操作數(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ù)指令與加法和減法指令實現(xiàn)的加1和減1不同的是 INC和DEC不影響CF標志 INCSI SI SI 1DECbyteptr SI SI SI 1 4 增量和減量指令 例7比較指令CMP compare 若自BLOCK開始的內(nèi)存緩沖區(qū)中 有100個帶符號字數(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í)行求補運算 即用零減去操作數(shù) 然后結(jié)果返回操作數(shù)求補運算可表達成 將操作數(shù)按位取反后加1NEG指令對標志的影響與用零作減法的SUB指令一樣NEG指令也是一個單操作數(shù)指令NEG指令執(zhí)行的結(jié)果一般總是使CF 1除非操作數(shù)為0時CF 0 5 求補指令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求補運算 十進制數(shù)調(diào)整指令對二進制運算的結(jié)果進行十進制調(diào)整 以得到十進制的運算結(jié)果 以此實現(xiàn)十進制BCD碼運算8086指令系統(tǒng)支持兩種BCD碼調(diào)整運算壓縮BCD碼就是通常的8421碼 它用4個二進制位表示一個十進制位 一個字節(jié)可以表示兩個十進制位 即00 99非壓縮BCD碼用8個二進制位表示一個十進制位 只用低4個二進制位表示一個十進制位0 9 高4位為0 4 3 2 2十進制調(diào)整指令 十進制調(diào)整指令 DAA DAS指令 十進制調(diào)整指令它跟在ADD ADC或SUB SBB之后 功能是將AL中十進制數(shù)相加 減后的結(jié)果進行校正 產(chǎn)生一個組合的十進制和 差 仍保留在AL中 AAA AAS指令 十進制調(diào)整指令它跟在ADD ADC或SUB SBB之后 對AL中兩個未組合的十進制數(shù)相加 減后的結(jié)果進行校正 產(chǎn)生一個未組合的十進制和 差 仍保留在AL中 乘法指令分無符號和有符號乘法指令MULreg mem 無符號乘法IMULreg mem 有符號乘法AL或AX與另一個操作數(shù)相乘 結(jié)果送到AL和AH 兩個字節(jié)相乘 或送到AX和它的擴展部分DX 兩個字相乘 除法指令分無符號和有符號除法指令DIVreg mem 無符號除法IDIVreg mem 有符號除法字節(jié)除法 AX 源操作數(shù) 8位 商在AL中 余數(shù)在AH中字除法 DX AX 源操作數(shù) 16位 商在AX中 余數(shù)DX中 4 3 2 3乘法和除法指令 真值 十進制 864二進制編碼08H40H壓縮BCD碼08H64H非壓縮BCD碼08H0604HASCII碼38H3634H 壓縮BCD碼加減法調(diào)整指令DAADAS非壓縮BCD碼加減法調(diào)整指令A(yù)AAAASAAMAAD 編碼的比較 位操作類指令以二進制位為基本單位進行數(shù)據(jù)的操作當(dāng)需要對字節(jié)或字數(shù)據(jù)中的各個二進制位操作時 可以考慮采用位操作類指令注意這些指令對標志位的影響1 邏輯運算指令A(yù)NDORXORNOTTEST2 移位指令SHLSHRSARSAL3 循環(huán)移位指令ROLRORRCLRCR 4 3 3邏輯運算指令 雙操作數(shù)邏輯指令A(yù)ND OR XOR和TEST 根據(jù)結(jié)果設(shè)置SF ZF和PF狀態(tài) 而對AF未定義 指令的執(zhí)行使CF OF 0 運算指令助記符reg imm reg mem運算指令助記符mem imm reg單操作數(shù)邏輯指令NOT不影響標志位 NOTreg mem 4 3 3 1邏輯運算指令 對兩個操作數(shù)執(zhí)行邏輯與運算 結(jié)果送目的操作數(shù) ANDdest src dest dest src 只有相 與 的兩位都是1 結(jié)果才是1 否則 與 的結(jié)果為0 1 邏輯與指令A(yù)ND 對兩個操作數(shù)執(zhí)行邏輯或運算 結(jié)果送目的操作數(shù) ORdest src dest dest src 只要相 或 的兩位有一位是1 結(jié)果就是1 否則 結(jié)果為0 2 邏輯或指令OR 對兩個操作數(shù)執(zhí)行邏輯異或運算 結(jié)果送目的操作數(shù) XORdest src dest dest src 只有相 異或 的兩位不相同 結(jié)果才是1 否則 結(jié)果為0 3 邏輯異或指令XOR 對兩個操作數(shù)執(zhí)行邏輯與運算 結(jié)果并不送目的操作數(shù) 僅按AND指令影響標志 TESTdest src dest src AND與TEST指令的關(guān)系 同SUB與CMP指令的關(guān)系一樣 4 測試指令TEST 對一個操作數(shù)執(zhí)行邏輯非運算 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 標志不變 例9邏輯運算 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īng)用 將操作數(shù)移動一位或多位 分成邏輯移位和算術(shù)移位 分別具有左移或右移操作移位指令的第一個操作數(shù)是指定的被移位的操作數(shù) 可以是寄存器或存儲單元 后一個操作數(shù)表示移位位數(shù) 該操作數(shù)為1 表示移動一位該操作數(shù)為CL CL寄存器值表示移位位數(shù) 移位位數(shù)大于1只能用CL表示 按照移入的位設(shè)置進位標志CF 根據(jù)移位后的結(jié)果影響SF ZF PF 4 3 3 2移位指令 SHLreg mem 1 CL reg mem左移1或CL位 最低位補0 最高位進入CF 演示 1 邏輯左移指令SHL SHRreg mem 1 CL reg mem右移1 CL位 最高位補0 最低位進入CF 演示 2 邏輯右移指令SHR SALreg mem 1 CL 與SHL是同一條指令 演示 3 算術(shù)左移指令SAL SARreg mem 1 CL reg mem右移1 CL位 最高位不變 最低位進入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 標志不變SARDX CL DX 0000011100000011B CF 1 SF 0 ZF 0 PF 1 例11數(shù)據(jù)移位 XORAH AH 實現(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 不帶進位循環(huán)左移RORreg mem 1 CL 不帶進位循環(huán)右移RCLreg mem 1 CL 帶進位循環(huán)左移RCRreg mem 1 CL 帶進位循環(huán)右移循環(huán)移位指令的操作數(shù)形式與移位指令相同 按指令功能設(shè)置進位標志CF 但不影響SF ZF PF AF標志 演示 演示 演示 演示 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.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 算術(shù)邏輯運算類 算術(shù) 邏輯運算 PPT 課件
鏈接地址:http://m.appdesigncorp.com/p-8675582.html