《算术逻辑运算类》PPT课件.ppt

上传人:sh****n 文档编号:8675582 上传时间:2020-03-30 格式:PPT 页数:49 大小:925.50KB
返回 下载 相关 举报
《算术逻辑运算类》PPT课件.ppt_第1页
第1页 / 共49页
《算术逻辑运算类》PPT课件.ppt_第2页
第2页 / 共49页
《算术逻辑运算类》PPT课件.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第4章 算术和逻辑运算指令 算术运算类指令用来执行二进制的算术运算 加减乘除 这类指令会根据运算结果影响状态标志 有时要利用某些标志才能得到正确的结果 使用他们时请留心有关状态标志重点掌握加法指令 ADD ADC INC减法指令 SUB SBB DEC CMP NEG 4 3 2算术运算类指令 算术运算类指令 可处理 不带符号 带符号的8 16位二进制数不带符号的压缩型 2位BCD码 非压缩型 一位BCD码 高4位补0 十进制数 对于加法和减法指令 带符号和不带符号的加减运算的操作过程无区别 可用同一条加法 减法指令完成 对于乘法除法运算 运算过程完全不同 分别设有不带符号和带符号的乘法除法的指令 对于十进制运算 先采用二进制运算指令 后进行十进制调整的方式来实现 加法指令 ADD ADC和INC减法指令 SUB SBB DEC NEG和CMP他们分别执行字或字节的加法和减法运算 除INC和DEC不影响CF标志外 其他按定义影响全部状态标志位操作数组合 运算指令助记符reg imm reg mem运算指令助记符mem imm reg 4 3 2 1加法和减法指令 ADDdest src 加法 dest dest src ADD指令使目的操作数加上源操作数 和的结果送到目的操作数SUBdest src 减法 dest dest src SUB指令使目的操作数减去源操作数 差的结果送到目的操作数 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 结果送到目的操作数SBBdest src 减法 dest dest src CF SBB指令除完成SUB减法运算外 还要减去借位CF 结果送到目的操作数 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指令将目的操作数减去源操作数 但差值不回送目的操作数比较指令通过减法运算影响状态标志 用于比较两个操作数的大小关系 后面跟转移指令判断两个无符号数大小用JC JNC或JA JNBE或JB JNAE指令判断两个带符号数大小用JG JNLE或JL JNGE 3 比较指令CMP compare INCreg mem 增量 加1 reg mem reg mem 1DECreg mem 减量 减1 reg mem reg mem 1INC指令和DEC指令是单操作数指令与加法和减法指令实现的加1和减1不同的是 INC和DEC不影响CF标志 INCSI SI SI 1DECbyteptr SI SI SI 1 4 增量和减量指令 例7比较指令CMP compare 若自BLOCK开始的内存缓冲区中 有100个带符号字数据 要找出其中的最大数 把它存到MAX单元中 MOVBX OFFSETBLOCKMOVAX BX INCBXINCBXMOVCX 99AGAIN CMPAX BX JGNEXTMOVAX BX NEXT INCBX INCBXDECCXJNZAGAINMOVMAX AXHLT NEGreg mem reg mem 0 reg memNEG指令对操作数执行求补运算 即用零减去操作数 然后结果返回操作数求补运算可表达成 将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEG指令也是一个单操作数指令NEG指令执行的结果一般总是使CF 1除非操作数为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求补运算 十进制数调整指令对二进制运算的结果进行十进制调整 以得到十进制的运算结果 以此实现十进制BCD码运算8086指令系统支持两种BCD码调整运算压缩BCD码就是通常的8421码 它用4个二进制位表示一个十进制位 一个字节可以表示两个十进制位 即00 99非压缩BCD码用8个二进制位表示一个十进制位 只用低4个二进制位表示一个十进制位0 9 高4位为0 4 3 2 2十进制调整指令 十进制调整指令 DAA DAS指令 十进制调整指令它跟在ADD ADC或SUB SBB之后 功能是将AL中十进制数相加 减后的结果进行校正 产生一个组合的十进制和 差 仍保留在AL中 AAA AAS指令 十进制调整指令它跟在ADD ADC或SUB SBB之后 对AL中两个未组合的十进制数相加 减后的结果进行校正 产生一个未组合的十进制和 差 仍保留在AL中 乘法指令分无符号和有符号乘法指令MULreg mem 无符号乘法IMULreg mem 有符号乘法AL或AX与另一个操作数相乘 结果送到AL和AH 两个字节相乘 或送到AX和它的扩展部分DX 两个字相乘 除法指令分无符号和有符号除法指令DIVreg mem 无符号除法IDIVreg mem 有符号除法字节除法 AX 源操作数 8位 商在AL中 余数在AH中字除法 DX AX 源操作数 16位 商在AX中 余数DX中 4 3 2 3乘法和除法指令 真值 十进制 864二进制编码08H40H压缩BCD码08H64H非压缩BCD码08H0604HASCII码38H3634H 压缩BCD码加减法调整指令DAADAS非压缩BCD码加减法调整指令AAAAASAAMAAD 编码的比较 位操作类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时 可以考虑采用位操作类指令注意这些指令对标志位的影响1 逻辑运算指令ANDORXORNOTTEST2 移位指令SHLSHRSARSAL3 循环移位指令ROLRORRCLRCR 4 3 3逻辑运算指令 双操作数逻辑指令AND OR XOR和TEST 根据结果设置SF ZF和PF状态 而对AF未定义 指令的执行使CF OF 0 运算指令助记符reg imm reg mem运算指令助记符mem imm reg单操作数逻辑指令NOT不影响标志位 NOTreg mem 4 3 3 1逻辑运算指令 对两个操作数执行逻辑与运算 结果送目的操作数 ANDdest src dest dest src 只有相 与 的两位都是1 结果才是1 否则 与 的结果为0 1 逻辑与指令AND 对两个操作数执行逻辑或运算 结果送目的操作数 ORdest src dest dest src 只要相 或 的两位有一位是1 结果就是1 否则 结果为0 2 逻辑或指令OR 对两个操作数执行逻辑异或运算 结果送目的操作数 XORdest src dest dest src 只有相 异或 的两位不相同 结果才是1 否则 结果为0 3 逻辑异或指令XOR 对两个操作数执行逻辑与运算 结果并不送目的操作数 仅按AND指令影响标志 TESTdest src dest src AND与TEST指令的关系 同SUB与CMP指令的关系一样 4 测试指令TEST 对一个操作数执行逻辑非运算 NOTreg mem reg mem reg mem 按位取反 原来是 0 的位变为 1 原来是 1 的位变为 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指令可用于复位某些位 同0相与 不影响其他位 OR指令可用于置位某些位 同1相或 不影响其他位 XOR指令可用于求反某些位 同1相异或 不影响其他位 例10逻辑运算指令的应用 将操作数移动一位或多位 分成逻辑移位和算术移位 分别具有左移或右移操作移位指令的第一个操作数是指定的被移位的操作数 可以是寄存器或存储单元 后一个操作数表示移位位数 该操作数为1 表示移动一位该操作数为CL CL寄存器值表示移位位数 移位位数大于1只能用CL表示 按照移入的位设置进位标志CF 根据移位后的结果影响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 算术左移指令SAL SARreg mem 1 CL reg mem右移1 CL位 最高位不变 最低位进入CF 演示 4 算术右移指令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数据移位 XORAH AH 实现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 逻辑左移一位相当于无符号数乘以2逻辑右移一位相当于无符号数除以2 例13将AL寄存器中的无符号数乘以10 循环移位指令类似移位指令 但要将从一端移出的位返回到另一端形成循环 分为 ROLreg mem 1 CL 不带进位循环左移RORreg mem 1 CL 不带进位循环右移RCLreg mem 1 CL 带进位循环左移RCRreg mem 1 CL 带进位循环右移循环移位指令的操作数形式与移位指令相同 按指令功能设置进位标志CF 但不影响SF ZF PF AF标志 演示 演示 演示 演示 4 3 3 3循环移位指令 将DX AX中32位数值左移一位SHLAX 1RCLDX 1 32位数据移位 32位无符号数 DX AX 右移一位32位无符号数 DX AX 循环右移一位32位无符号数 DX AX 左移一位 例12把数字ASCII码转换为BCD码 若是奇数个ASCII码 则把地址最低位的一个转换为BCD码 高4位为0 然后把剩下的偶数个数按统一的方法处理 每两个ASCII码转换成一个压缩的BCD码 且地址高的放在高四位 流程图 MOVSI OFFSETASCBUFMOVDI OFFSETBCDBUFMOVCX COUNT 个数CXRORCX 1JNCNEXT 为偶数 C 0即最低位为0 转NEXTROLCX 1 为奇数 则恢复原值MOVAL SI 取第一个数ALINCSIANDAL 0FH 屏蔽高4位MOV DI AL 送存储器 由ASCII码转换为BCD码 INCDIDECCXRORCX 1 CX 2NEXT MOVAL SI 取数ALINCSIANDAL 0FHMOVBL ALMOVAL SI INCSIPUSHCXMOVCL 4 由ASCII码转换为BCD码 SALAL CLPOPCXADDAL BLMOV DI ALINCDILOOPNEXT DECCXJNZNEXT HLT 由ASCII码转换为BCD码 练习 将AL的D3和D4位清零 其余位不变将AL的D3和D4位置1 其余位不变内存单元MEN存放着一个8位的数据 将它的高4位与低4位互换将BCD码转换成ASCII码 SHL和SAL指令的功能 SHR指令的功能 SAR指令的功能 ROL指令的功能 ROR指令的功能 RCL指令的功能 RCR指令的功能
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!