算术运算指令算术运算指令涉及涉及两种类型数据两种类型数据: : 无符号数无符号数和和有符号数有符号数。。对加减法指令,无符号和有符号数可采用对加减法指令,无符号和有符号数可采用同一套同一套指令指令,但应,但应注意: 注意: ??参加的操作数必须参加的操作数必须都是都是无符号数或无符号数或都是都是有符有符号数。号数。??需使用不同的标志位需使用不同的标志位( ( CF,OF CF,OF ) )来检查无符号数来检查无符号数和有符号数的运算结果是否溢出。和有符号数的运算结果是否溢出。??这类指令这类指令一般都一般都影响标志寄存器影响标志寄存器 FLAGS FLAGS 。。 2 表表 3 - 2 3 - 2 算术运算类指令表算术运算类指令表 3 ??两个两个 8 8位数相加时有位数相加时有 4 4种情况种情况: : ①无符号数和有符号数均不溢出二进制相加无符号数加有符号数加 0000 1000 8 +8 +0001 1110 + 30 + (+30) 0010 0110 38 +38 结果 38CF=0 OF=0 无符号数范围 0~255 带符号数范围-128~127 4 ②②无符号数溢出无符号数溢出无符号数无符号数有符号数有符号数 0000 1000 8 +8 0000 1000 8 +8 +1111 1101 +1111 1101 +253 +253 +(-3) +(-3) 1 10000 0101 261 +5 0000 0101 261 +5 结果结果 5 5CF CF=1 =1OF OF=0 =0 ③③有符号数溢出有符号数溢出 0000 1000 8 +8 0000 1000 8 +8 +0111 1101 +0111 1101 +125 +125 + +( (+125 +125 ) ) 1000 0101 133 +133 1000 0101 133 +133 结果结果-123 -123 CF CF=0 =0 OF OF=1 =1 ( (补码表示) 补码表示) 5 ④④无符号数和有符号数均溢出无符号数和有符号数均溢出无符号数无符号数有符号数有符号数 1000 1000 1000 1000 136 -120 136 -120 +1111 0111 +1111 0111 +247 +247 + +( (-9 -9) ) 1 10111 1111 383 -129 0111 1111 383 -129 结果结果 127 127 CF CF =1 =1 OF OF=1 =1 上面四种情况说明, 上面四种情况说明, CF CF 标志可用来表示标志可用来表示无符号数无符号数的溢出, 的溢出, OF OF 标志可用来表示标志可用来表示有符号数有符号数的溢出的溢出。。有符号数的溢出是一种有符号数的溢出是一种出错状态出错状态,在运,在运算过程中应当避免。算过程中应当避免。 6 所有的算术运算指令,都会影响所有的算术运算指令,都会影响 FLAGS FLAGS 标志寄存标志寄存器的器的 6 6个状态标志个状态标志 CF/OF/ZF/SF/AF/PF CF/OF/ZF/SF/AF/PF (3 (3个控制标志个控制标志 IF/DF/TF IF/DF/TF 不受影响不受影响) )。。总的讲,有这样一些规则: 总的讲,有这样一些规则: 当无符号数运算产生溢出当无符号数运算产生溢出( (即最高位向前有进位或借即最高位向前有进位或借位位) )时, 时, CF CF =1, =1, 否则为否则为 0; 0; 当有符号数运算产生溢出时, 当有符号数运算产生溢出时, OF OF =1( =1( 即即 OF=CF OF=CF ⊕⊕ CF CF -1 -1 ) , ) , 否则为否则为 0; 0;当运算结果为当运算结果为 0 0时, 时, ZF ZF =1 , =1 , 否则为否则为 0; 0; 当运算结果为负数时, 当运算结果为负数时, SF SF =1 , =1 , 否则为否则为 0; 0; 当运算一半位置有进位或借位时, 当运
第3章 8088指令系统3(算术运算指令)-课件【PPT讲稿】 来自淘豆网m.daumloan.com转载请标明出处.