1、第 5章 算术和逻辑运算指令罗文坚中国科大 计算机学院http:/ 本章内容 加法、减法和比较指令 乘法和除法指令 BCD码和 ASCII码算术运算指令 基本逻辑运算指令 移位和循环移位指令 串比较指令加法指令加法 格式 ADD REG/MEM, REG/MEM/IMM功能 源 操作数 、目的操作数相加,结果存入目的操作数标志 所有状态标志( ZF、 CF、 PF、 AF、 SF 及 OF) 都受影响带进位加格式 ADC REG/MEM, REG/MEM/IMM功能 源 操作数 、目的操作数以及 进位标志 CF相加,结果存入目的操作数标志 所有状态标志( ZF、 CF、 PF、 AF、 SF
2、及 OF) 都受影响加法指令加 1 格式 INC REG/MEM功能 目的操作数加 1标志 除 CF标志位,其余状态标志都受影响交换并相加 格式 XADD REG/MEM, REG 功能 ( 80486以上)源操作数和目的操作数相交换,并将两者之和存入目的操作数标志 所有状态标志都受影响,根据加法结果设置加法指令 加法指令注意事项:1. 源操作数和目的操作数 不能 同时为内存单元(MEM)。2. 不允许 与段寄存器( SREG)相关的加法。3. XADD指令的源操作数在 寄存器 ( REG)中。4. 标志寄存器中 状态位 随运算结果而变化,但 INC指令不影响 CF标志 。5. 指令中操作数是
3、带符号数还是无符号数由 程序员解释。q注意:第 4章的数据传送指令不改变状态标志。Example 1 例、 试用加法指令对两个 8位 16进制数 5EH和 3CH求和,并分析加法运算指令执行后对标志位的影响。 解:MOV AL, 5EH ;AL=5EH( 94)MOV BL, 3CH ;BL=3CH( 50)ADD AL, BL ;结果 AL=9AH运算后标志: ZF=0, AF=1, CF=0, SF=1, PF=1, OF=1。 若程序员认为两个加数是 无符号数 ,则运算结果位 9AH,即154。 此时, SF标志和 OF标志没有意义。 若程序员认为两个加数是 有符号数 ,则运算溢出,结果
4、无效。 此时, CF标志没有意义。CF标志和 OF标志 当加减运算结果的最高有效位 有进位 (加法)或 借位(减法)时, CF标志置 1,即 CF 1;否则 CF 0。 针对无符号整数 ,判断加减结果是否超出表达范围。 N个二进制位表达无符号整数的范围:0 2N-1 有 符号数 加减结果有溢出,则 OF 1;否则 OF 0。针对 有符号整数 ,判断加减结果是否超出表达范围。 N个二进制位表达有符号整数的范围: 2N 1 2N 1-1进位标志 CF:举例 8位二进制数相加:00111010 01111100 10110110 十六进制表达: 3A 7C B6 转换成十进制数: 58 124 18
5、2 没有产生进位: CF 0 8位二进制数相加:10101010 01111100 100100110 十六进制表达: AA 7C 126 转换成十进制数: 170 124 294 256 38 产生进位: CF 10 182 255进位 1表达 256溢出标志 OF:举例 8位二进制数相加:00111010 01111100 10110110 十六进制表达: 3A 7C B6 转换成十进制数: 58 124 182 超出范围: OF 1 8位二进制数相加:10101010 01111100 100100110 十六进制表达: AA 7C 126 转换成十进制数: 86 124 38 没有超出
6、范围: OF 0182 127补码 AAH表达 -86Example 2 设一个学生的三门课的成绩分别为 60、 65、 90,入学分数线为总分 256分,判断该学生是否取得入学资格。;采用无符号数表示MOV AL, 60ADD AL, 65ADD AL, 90JC PASS;超过 256分?PASS: ;取得入学资格 设张三在海拔 60米的地点,他先往上走了 65米,然后又往上走了90米,请问他现在所在地点的海拔高度?;为便于表示低于海平面的;情况,采用有符号数表示MOV AL, 60ADD AL, 65JO ERROR; (AL)=01111101ADD AL, 90JO ERROR; (AL)=11010111ERROR: ;错误处理