版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、三算术运算指令指令分类:计算机 应用基础特点 1 三三. 算术运算指令算术运算指令 二二进进制制运运算算十十进进制制调调整整 加加 ADD, ADC, INC AAA, DAA 减减 SUB, SBB, DEC, NEG, CMP AAS, DAS 乘乘 MUL, IMUL AAM 除除 DIV, IDIV AAD 符符号号扩扩展展指指令令: CBW、CWD 指令分类:指令分类: 三算术运算指令指令分类:计算机 应用基础特点 2 特点:特点: l 带符号数用补码表示带符号数用补码表示 如如 MOV AX, -1 等价于等价于 MOV AX, 0FFFFh l 对加、减运算,不区分无符号数、带符
2、号数对加、减运算,不区分无符号数、带符号数 对乘、除运算,区分无符号数、带符号数对乘、除运算,区分无符号数、带符号数 l 可进行字节或字操作可进行字节或字操作 l 影响状态标志影响状态标志 l十进制运算方法十进制运算方法 当数据用压缩或非压缩当数据用压缩或非压缩BCD码表示时,码表示时, 为使运算的结果仍为为使运算的结果仍为BCD码表示,需对结果进行调整。码表示,需对结果进行调整。 十进制运算十进制运算 = 二进制运算二进制运算 + 十进制调整十进制调整 三算术运算指令指令分类:计算机 应用基础特点 3 1. 加法运算指令加法运算指令 指指令令格格式式执执 行行 操操 作作 ADD dst,
3、src (dst) (dst) + (src) ADC dst, src (dst) (dst) + (src) + CF INC oprd (oprd) (oprd) + 1 l ADD、ADC为双操作数指令为双操作数指令 l INC为单操作数指令为单操作数指令 l 除除INC指令不影响指令不影响CF外,其余指令外,其余指令6个状态标志均据结果个状态标志均据结果 置位置位 lADC带进位加法,带进位加法,实现字以上运算(进位是上条指令运算的进位)实现字以上运算(进位是上条指令运算的进位) OF DF IF TF SF ZFAFPFCF 三算术运算指令指令分类:计算机 应用基础特点 4 CFA
4、1H CFA1H 1100 1111 1010 00011100 1111 1010 0001 + 62A0H + 0110 0010 1010 0000 + 62A0H + 0110 0010 1010 0000 111 1 1 1 1111 1 111 1 1 1 1111 1 3241H 0011 0010 0100 0001 3241H 0011 0010 0100 0001 例例1 加法指令加法指令ADD: 编程完成编程完成 CFA1H + 62A0H MOV DX,0CFA1H ADD DX,62A0H 执行后执行后: (DX)=3241H CF=1,OF=0,SF=0, ZF=0
5、 (注意:(注意:CF和和OF的判断方法的判断方法) 三算术运算指令指令分类:计算机 应用基础特点 5 , 8位带符号数相加,和超出范围(位带符号数相加,和超出范围(128127), 16位带符号数相加,和超出范围位带符号数相加,和超出范围(-32768+32767); 加法:两个正数相加,结果为负;或两个负数相加,加法:两个正数相加,结果为负;或两个负数相加, 结果为负。结果为负。 ( 两个异号数相加不可能溢出)两个异号数相加不可能溢出) 减法:减法: 两个异号数相减,结果与减数相同。两个异号数相减,结果与减数相同。 ( 两个同号数相加不可能溢出)两个同号数相加不可能溢出) 运算结果错误。运
6、算结果错误。 , 8位无符号数相加,和超过位无符号数相加,和超过255, 16位无符号数相加,和超过位无符号数相加,和超过65535。 运算结果准确运算结果准确 其他条件标志(其他条件标志(SF,AF,PF,ZF)根据定义设定。根据定义设定。 三算术运算指令指令分类:计算机 应用基础特点 6 D:MASM DEBUG -A ;汇编指令汇编指令 1270:0100 MOV AX, CFA1 1270:0103 ADD AX, 62A0 1270:0106 -R ;执行前查看各寄存器内容执行前查看各寄存器内容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0
7、000 SI=0000 DI=0000 DS=1270 ES=1270 SS=1270 CS=1270 IP=0100 NV UP EI PL NZ NA PO NC 1270:0100 B8A1CF MOV AX,CFA1 -T 2 ;执行汇编的两条指令执行汇编的两条指令, 并查看执行后的结果并查看执行后的结果 AX=3241 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1270 ES=1270 SS=1270 CS=1270 IP=0106 NV UP EI PL NZ NA PE CY 1270:0106 57 P
8、USH DI - OF DF IF SF ZF AF PF CF 为为0对应对应 NV UP DI PL NZ NA PO NC 为为1对应对应 OV DN EI NG ZR AC PE CY 三算术运算指令指令分类:计算机 应用基础特点 7 三组指令执行后的结果均为三组指令执行后的结果均为: (AL)=0FDH, CF=0, OF=0, SF=1, ZF=0 MOV AL, 0F1H ADD AL, 0CH MOV AL, 241 ADD AL, 12 MOV AL, -15 ADD AL, 12 第一章中的例题第一章中的例题 F1 H F1 H + 0C H+ 0C H FD H FD H
9、 二进制二进制 运运 算算 241241 + 12+ 12 253 253 看看 作作 无符号数无符号数 (-15-15) + 12+ 12 (-3-3) 看看 作作 带符号数带符号数 B0 F1 04 0C 、 、 第一条第一条 指指 令令 第二条第二条 指指 令令 三组机器码相同:三组机器码相同: 对加、减运算,对加、减运算,CPU计算时不区分无符号数、带符号数计算时不区分无符号数、带符号数 三算术运算指令指令分类:计算机 应用基础特点 8 例例2 加加 1 1 指令指令INC INC : INC AL 执行前执行前 (AL)= FFH 执行后执行后: (AL)=00H CF=不变,不变,
10、OF=0,ZF=1,SF=0 FFH FFH + 01H + 01H 11 11 00H 00H 三算术运算指令指令分类:计算机 应用基础特点 9 01FFH01FFH + 0001H+ 0001H 进位进位11 11 0200H 0200H 例例3 value 是一个字变量是一个字变量 OFFSET value = 1000H (DS)=2000H,(,(21000H)=01FFH value FF 21000H 01 执行前执行前 value 00 21000H 02 执行后执行后 执行后:执行后: (21000H)=0200H CF=不变,不变,OF=0,ZF=0,SF=0 注意:注意:
11、 INC value是内存单元内容加是内存单元内容加1,而非地址加,而非地址加1 INC value 或写成或写成: INC value 三算术运算指令指令分类:计算机 应用基础特点 10 例例4 将将buffer为首的为首的4个字节内存内容相加,存放在个字节内存内容相加,存放在AL中。中。 buffer 1A B7 C5 D6 注意若编程如下注意若编程如下, MOV CX, 4 MOV AL, 0 exit: ADD AL, buffer INC buffer DEC CX JNZ exit 不能实现不能实现, 为什么?为什么? . MOV CX, 4 LEA BX, buffer MOV
12、AL, 0 exit: ADD AL, BX INC BX DEC CX JNZ exit 实现的是实现的是(1A)+(1B)+(1C)+(1D) 指令指令INC buffer 将将buffer指向的内容加指向的内容加1, 而不是地址而不是地址buffer加加1 三算术运算指令指令分类:计算机 应用基础特点 11 例例5 带进位加带进位加ADC:两双字相加:两双字相加 0002F365H + 0005 E024 H = ? MOV AX,0F365H ADD AX,0E024H MOV BX,0002H ADC BX,0005H 0002 F365 H 0002 F365 H + + 0005
13、 E024 H0005 E024 H 进位进位 0008 D389 H0008 D389 H 结果存放在结果存放在: 0008 D389 (BX) (AX) 执行完执行完、:(AX)= D389H CF=1, OF=0, SF=1, ZF=0 执行完执行完、:(BX)= 0008H CF=0, OF=0, SF=0, ZF=0 分析:分析: 8086/8088只能按字节或字相加。只能按字节或字相加。 位数在字以上的操作数,先加低位,再加高位,位数在字以上的操作数,先加低位,再加高位, 加高位时加入从低位产生的进位。加高位时加入从低位产生的进位。 三算术运算指令指令分类:计算机 应用基础特点 1
14、2 用途举例(自学用途举例(自学P12-21) 计算两个多字节数相加计算两个多字节数相加 3B74AC60F8H+20D59E36C1H=? 两个多字节数存放在:两个多字节数存放在: DATA1,DATA2的开始单元。的开始单元。 F8HF8H 60H60H ACHACH 74H74H 3BH3BH . C1HC1H 36H36H 9EH9EH D5HD5H 20H20H . DATA1DATA1 DATA2DATA2 流程图流程图 多字节数内存存放多字节数内存存放 开始开始 初始化,置循环次数CX初始化,置循环次数CX 清SI、CF清SI、CF 取一个字节加数取一个字节加数 取一个被加数字节
15、取一个被加数字节 相加送内存相加送内存 (SI)+1送(SI)(SI)+1送(SI) (CX)-1送(CX)(CX)-1送(CX) (CX)=?0(CX)=?0 结束结束 N N Y Y 三算术运算指令指令分类:计算机 应用基础特点 13 程序:程序: MOV CX, 5 MOV SI, 0; 清清SI CLC;清;清CF LOOPER:MOV AL, DATA2SI ADC DATA1SI,AL INC SI;(SI)+1 (SI) DEC CX;(CX)-1 (CX) JNZ LOOPER;(CX) 0转转 HLT;停机;停机 三算术运算指令指令分类:计算机 应用基础特点 14 : (1)
16、 什么叫什么叫叫叫 (2) (1) 带符号数的补码带符号数的补码 带符号数,补码运算能表示范围为带符号数,补码运算能表示范围为: -2 n-1 +2 n+1 1 如果运算结果超出该范围,叫补码如果运算结果超出该范围,叫补码 运算错误。运算错误。 运算结果的最高位向更高位的运算结果的最高位向更高位的 三算术运算指令指令分类:计算机 应用基础特点 15 有进位不一定有溢出有进位不一定有溢出,没有进位不一定没有溢出。没有进位不一定没有溢出。 数的表示范围:数的表示范围: 8位二进制数可以表示十进制数的范围:位二进制数可以表示十进制数的范围: 8位带符号十进制数的范围:位带符号十进制数的范围:1281
17、27 8位无符号十进制数的范围:位无符号十进制数的范围:0255 16位二进制数可以表示十进制数的范围位二进制数可以表示十进制数的范围: 16位带符号十进制数的范围:位带符号十进制数的范围:3276832767 16位无符号十进制数的范围:位无符号十进制数的范围:065535 三算术运算指令指令分类:计算机 应用基础特点 16 以以8位二进制数为例分析一下数的溢出与进位情况:位二进制数为例分析一下数的溢出与进位情况: 下面分下面分4种情况加以讨论:种情况加以讨论: (1) 带符号数和无符号数都不溢出带符号数和无符号数都不溢出 (2) 无符号数溢出无符号数溢出 (3) 带符号数溢出带符号数溢出
18、(4) 带符号数和无符号数都溢出带符号数和无符号数都溢出 三算术运算指令指令分类:计算机 应用基础特点 17 。 二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1+ + 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 4 4 1111+ + 1515 + 4+ 4 +1 1+1 1+ + +1 5+1 5 相相 加加 标志标志CF=0,OF=0CF=0,OF=0CF=0CF=0OF=0OF=0 溢出溢出不溢出不溢出不溢出不溢出 不溢出不
19、溢出 同符号数相加,同符号数相加, 结果符号与其相同结果符号与其相同 三算术运算指令指令分类:计算机 应用基础特点 18 二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1+ + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 7 7 251251+ + 258258 + 7+ 7 - 5- 5+ + + 2+ 2 相相 加加 标志标志CF=1,OF=0CF=1,OF=0CF=1CF=1OF=0OF=0 溢出溢出无符号数溢出无符号数溢出
20、溢出溢出 结果应为结果应为2 2,错,错 不溢出不溢出 异号数相加异号数相加 不可能有溢出不可能有溢出 CF=1CF=1 三算术运算指令指令分类:计算机 应用基础特点 19 二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0+ + 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 9 9 124124+ + 133133 + 9+ 9 +1 2 4+1 2 4+ + +1 3 3+1 3 3 相相 加加 标志标志CF=0,OF=1CF=
21、0,OF=1CF=0CF=0O OF=F=1 1 溢出溢出带符号数溢出带符号数溢出不溢出不溢出 溢出溢出 结果为123 结果为123 结果错结果错 三算术运算指令指令分类:计算机 应用基础特点 20 二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1+ + 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 135135 245245+ + 380380 121121 - 11- 11+ + 132132 相相 加加 标志标志CF=1,OF=
22、1CF=1,OF=1CF=1CF=1OF=1OF=1 溢出溢出无符号数溢出无符号数溢出 溢出溢出 现结果为现结果为 124,结果错124,结果错 溢出溢出 现结果为124,现结果为124, 结果错结果错 CF=1CF=1 三算术运算指令指令分类:计算机 应用基础特点 21 (1)带符号数)带符号数相加相加溢出溢出 根据根据OF= 1 ?,判断带符号数产生溢出?判断带符号数产生溢出? (2)无符号数)无符号数相加相加溢出溢出 根据根据CF= 1 ?,判断无符号数产生溢出?判断无符号数产生溢出? 三算术运算指令指令分类:计算机 应用基础特点 22 指指令令格格式式执执行行操操作作 SUB dst,
23、 src (dst) (dst) - - (src) SBB dst, src (dst) (dst) - - (src) - - CF DEC oprd (oprd) (oprd) - - 1 NEG oprd (oprd) 0 - - (oprd) CMP oprd1, oprd2 (oprd1) - - (oprd2) 2. 减法运算指令减法运算指令 l SUB、SBB、 CMP为双操作数,为双操作数,DEC、NEG为单操作数为单操作数 l SBB为带进位减法为带进位减法(进位是上条指令运算的进位进位是上条指令运算的进位)。)。 l 除除DEC不影响不影响CF标志外,其余指令标志外,其余
24、指令6个状态标志均据结果置位。个状态标志均据结果置位。 l NEG求补运算,等价于用求补运算,等价于用0减去操作数。减去操作数。 其对标志位的影响,由其对标志位的影响,由0减去该操作数的过程决定。减去该操作数的过程决定。 三算术运算指令指令分类:计算机 应用基础特点 23 例例1 减法指令减法指令SUB:编程完成:编程完成 2D04H 3AB0H 执行后执行后: : (AX)=0F254H CF=1,OF=0,SF=1,ZF=0 2D04H 0010 1101 0000 01002D04H 0010 1101 0000 0100 - 3AB0H - 3AB0H - - 0011 1010 10
25、11 0000 0011 1010 1011 0000 1 1 1111 1 1 111 1 1 1111 1 1 111 F254H 1111 0010 0101 0100 F254H 1111 0010 0101 0100 MOV AX ,2D04H SUB AX ,3AB0H 借位借位 三算术运算指令指令分类:计算机 应用基础特点 24 例例2 2 带进位减法带进位减法SBB: 用指令完成两双字相减运算用指令完成两双字相减运算 0546 7A70H - - F001 A543H MOV AX,7A70H SUB AX,A543H MOV BX,0546H SBB BX,0F001H 三算
26、术运算指令指令分类:计算机 应用基础特点 25 例例3 减减1指令指令DEC:value 是一个字节变量是一个字节变量 OFFSET value = 1000H (DS)=2000H,(,(21000H)=00H DEC value 执行后:(执行后:(21000H)=0FFH CF=不变,不变,OF=0,ZF=0,SF=1 注意:注意:DEC value 是内存单元内容减是内存单元内容减1,而非地址减,而非地址减1 00 H 00 H - 01 H - 01 H 11 11 FFH FFH 三算术运算指令指令分类:计算机 应用基础特点 26 例例4 求补指令求补指令NEG: MOV AH,
27、80H NEG AH 00 H 0000 0000 B 00 H 0000 0000 B - - 80 H 80 H - - 1000 0000 B 1000 0000 B 1 1 1 1 80H 1000 0000B 80H 1000 0000B 执行后:执行后: (AL)=80H , CF=1,OF=1,ZF=0,SF=1 三算术运算指令指令分类:计算机 应用基础特点 27 例例5:求绝对值:求绝对值(自学自学) 在内存中,在内存中, 从从AREA1开始存放开始存放 100个带符号数。个带符号数。 求各数的绝对值存于求各数的绝对值存于 AREA2的开始单元。的开始单元。 流程图流程图 开始
28、开始 初始化初始化 置源地址,置目的地址指针置源地址,置目的地址指针 置循环次数置循环次数 取一个带符号数取一个带符号数 负数?负数? 求补求补 送存送存 地址指针1地址指针1 循环次数1循环次数1 循环次数0?循环次数0? 结束结束 N N Y Y N N Y Y 三算术运算指令指令分类:计算机 应用基础特点 28 程序:程序: LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CHECK: MOV AL, SI OR AL, AL ;(AL)内容不变,置标志内容不变,置标志 JNS NEXT ;SF=0转转NEXT NEG AL ;负数求补负数求补 NEXT:
29、 MOV DI, AL ;送目标;送目标 INC SI INC DI DEC CX JNZ CHECK HLT 三算术运算指令指令分类:计算机 应用基础特点 29 CMP oprd1, oprd2 ; (oprd1) - (oprd2) 据据ZF判断两数是否相等判断两数是否相等 CMP A, B ZF=1 两数相等两数相等, A = B ; ZF=0 两数不等两数不等, A B 据据ZF和和CF判断两无符号数关系判断两无符号数关系 CF= 1 A低于低于B CF= 0 A高于高于或或等于等于B CF=1或或 ZF=1 A低于等于低于等于B CF=0且且 ZF=0 A高于高于B l 利用利用CM
30、P执行后的标志值,比较两操作数之间的关系执行后的标志值,比较两操作数之间的关系 l 比较指令比较指令CMP,进行两操作数相减操作,进行两操作数相减操作, 但只影响标志值,不影响操作数但只影响标志值,不影响操作数(减的结果不保存减的结果不保存) 例例6比较指令比较指令CMP: 三算术运算指令指令分类:计算机 应用基础特点 30 条件转移指令条件转移指令判断条件判断条件 低于低于 JB next CF = 1 低于或等于低于或等于 JBE next CF = 1 或或 ZF = 1 高于高于 JA next CF = 0 且 且 ZF = 0 高于或等于高于或等于 JAE next CF = 0
31、CMP AX, BX ;比较比较 JAE above ;高于高于或或等于则跳转等于则跳转 XCHG AX, BX ;低于则交换低于则交换 above: 、 例例 将将AX和和BX中较大的无符号数,存于中较大的无符号数,存于AX中中 比较指令常常根据比较指令常常根据条件(标志)转移,条件(标志)转移,无符号数无符号数转移指令如下:转移指令如下: 三算术运算指令指令分类:计算机 应用基础特点 31 CMP A,B 用用ZF、SF 和和 OF判断两带符号数关系判断两带符号数关系 l OF=0,不溢出情况,不溢出情况, SF=0, AB SF=1, A B OF=0, SF=0 AB OF=0, SF
32、=1 A B OF=1, SF=0 A 负,知负,知A B 1 - 0 负负 - 正正 = 正,结果正,结果SF = 0, OF=1 0 但,负但,负 正,知正,知A B l OF=1,溢出情况,溢出情况, (由符号位可决定是否溢出由符号位可决定是否溢出) 三算术运算指令指令分类:计算机 应用基础特点 32 结合结合ZF,得到结论得到结论 : : SF OF 0 0 0 1 1 0 1 1 SFOF0111 或或运运算算:有有1则则1,全全0则则0 逻辑运算:逻辑运算: CMP A, B两两数数关关系系 SF OF = 0AB SF OF = 1A B (SF OF) ZF=1AB 思考:思考
33、: 可否只用可否只用 ZF 和和 SF 判断两符号数关系?判断两符号数关系? SF OF 0 0 0 1 1 0 1 1 SFOF0110 异异或或运运算算: 异异则则1,同同则则0 三算术运算指令指令分类:计算机 应用基础特点 33 条件转移指令条件转移指令判断条件判断条件 小于小于 JL next SF OF = 1 小于或等于小于或等于 JLE next (SF OF)ZF=1 大于大于 JG next ( SF OF)ZF =0 大于或等于大于或等于 JGE next SF OF=0 例例 将将AX和和BX中较大的带符号数,存于中较大的带符号数,存于AX中中 CMP AX, BX ;比
34、较比较 JGE great ;大于大于或或等于则跳转等于则跳转 XCHG AX, BX ;小于则交换小于则交换 great: 、 比较指令常常根据比较指令常常根据条件(标志)转移,条件(标志)转移,带符号数带符号数转移指令如下:转移指令如下: 三算术运算指令指令分类:计算机 应用基础特点 34 CMP指令应用举例:指令应用举例: 若自若自BLOCK开始的内存缓冲区中,有开始的内存缓冲区中,有100个带符号数。个带符号数。 找出最大值。并存放到找出最大值。并存放到MAX单元中。单元中。 第一个数取出第一个数取出 ( AX), 取出第二个数(第二个字单元内容)与取出第二个数(第二个字单元内容)与(
35、AX)比较比较 : (AX)第二个数,不做交换,第二个数,不做交换, 否则,(第二个字单元内容)否则,(第二个字单元内容) (AX)。)。 再取第三个数,再取第三个数, 经过经过99次比较,在(次比较,在(AX)中得到最大数。)中得到最大数。 三算术运算指令指令分类:计算机 应用基础特点 35 编程:编程: MOV BX,OFFSET BLOCK MOV AX,BX INC BX INC BX MOV CX,99 AGAIN: ;(AX) (16d(ds)+(BX)转转NEXT MOV AX,BX NEXT: INC BX INC BX DEC CX JNE AGAIN MOV MAX,AX;
36、MAX单元存放单元存放最大值最大值 三算术运算指令指令分类:计算机 应用基础特点 36 3. 乘法指令乘法指令 指指令令格格式式执执行行操操作作 MUL src 若若src为为字字节节类类型型: (AX) (AL)(src) 若若src为为字字类类型型: (DX),(AX) (AX)(src) 将将被被乘乘数数、乘乘数数看看作作无无符符号号数数,进进行行乘乘运运算算 乘乘的的结结果果也也为为无无带带符符号号数数 IMUL src 执执行行的的操操作作与与MUL相相似似 将将被被乘乘数数、乘乘数数看看作作带带符符号号数数, 进进行行乘乘运运算算 乘乘的的结结果果也也为为带带符符号号数数 无符号数
37、乘法无符号数乘法 带符号数乘法带符号数乘法 三算术运算指令指令分类:计算机 应用基础特点 37 MUL src IMUL src l 单操作数指令单操作数指令 l 源操作数源操作数( 乘数乘数 )类型决定操作类型类型决定操作类型 l 目的操作数目的操作数( 被乘数被乘数) 隐含。隐含。 字节乘字节乘AL 字乘字乘AX l 字节相乘的结果存放在字节相乘的结果存放在AX中中 字相乘的结果存放在字相乘的结果存放在DX、AX中中 l MUL 用于无符号数运算用于无符号数运算 IMUL 用于带符号数运算用于带符号数运算 三算术运算指令指令分类:计算机 应用基础特点 38 l 影响影响CF和和OF,对其他
38、条件码无定义(不确定),对其他条件码无定义(不确定) (1)指令)指令 MUL 字节相乘,字节相乘,AH=0,CF=OF=0,否则,否则 CF=OF=1 字相乘,字相乘, DX=0,CF=OF=0,否则,否则 CF=OF=1 对其它条件码不确定(无定义)。对其它条件码不确定(无定义)。 三算术运算指令指令分类:计算机 应用基础特点 39 (2)指令)指令IMUL 字节相乘,字节相乘,AH=0或或AH=FFH,CF=OF=0,否则,否则 CF=OF=1 字相乘,字相乘,DX=0或或DX=FFFFH,CF=OF=0,否则,否则 CF=OF=1 积的高一半为低一半的符号扩展的含义:积的高一半为低一半
39、的符号扩展的含义: , , 三算术运算指令指令分类:计算机 应用基础特点 40 :乘法中为什么要用乘法中为什么要用MUL,IMUL 指令指令 ? 例例: : 无符号数无符号数带符号数带符号数 (AL)=3(AL)=3 (BL)=(BL)=(-2-2) 0 0 1 10 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 = = 2AH2AH MUL BL;MUL BL;3 3(-2)= -6(-2)= -6 结果结果2AH2AH是错误是错误 IMUL BL ;3IMUL BL ;3(-2)=(-6)(-2)=(-6) -2-2 求补 求补
40、= 0010 = 0010 0 0 1 10 0 1 1 0 0 1 00 0 1 0 0 0 0 0 0 1 1 0 = 60 0 0 0 0 1 1 0 = 6 00000110 00000110 求求补补 1111101011111010-6-6 补补 三算术运算指令指令分类:计算机 应用基础特点 41 例例 (AL) = 0B4H,(BL) = 11H 指令中源操作数为字节类型,故是字节操作指令中源操作数为字节类型,故是字节操作 MUL BL IMUL BL 看作无符号数看作无符号数 (AL) = 180D (BL) = 17D 18017 = 3060D = 0BF4H 执行执行MU
41、L BL后:后: (AX) = 0BF4H 看作带符号数看作带符号数 (AL) = -76D (BL) =17D (-76)17 = -1292D = 0FAF4H 执行执行IMUL BL后:后: (AX) = 0FAF4H 三算术运算指令指令分类:计算机 应用基础特点 42 例例 (AX)=0FFFFH,(BX)=0FFFFH 指令中源操作数为字类型,故是字操作指令中源操作数为字类型,故是字操作 MUL BX 执行执行MUL BX后:后: (DX) = 0FFFEH (AX) = 0001H 看作无符号数看作无符号数 (AX )= (BX) = 65535 6553565535 = 4294
42、836225 = 0FFFE 0001H IMUL BX 看作带符号数看作带符号数 (AX)= (BX)=- -1 (- -1)(- -1) = 1 = 0000 0001H 执行执行IMUL BX后:后: (DX) = 0000H (AX) = 0001H 三算术运算指令指令分类:计算机 应用基础特点 43 4. 除法指令除法指令 指令格式指令格式执行操作执行操作 DIV src 无符号数除法无符号数除法 (src)为字节类型:为字节类型: (AL) (AX) / (src) 的商的商 (AH) (AX) / (src) 的余数的余数 (src)为字类型:为字类型: (AX) DX) , (
43、AX) / (src) 的商的商 (DX) (DX) , (AX) / (src) 的余数的余数 将被除数、除数看作无符号数,进行除法运算,将被除数、除数看作无符号数,进行除法运算, 商、余数也为无符号数商、余数也为无符号数 IDIV src 带符号数除法带符号数除法 执行的操作与执行的操作与 DIV相同,相同, 将被除数、除数看作带符号数,进行除法运算将被除数、除数看作带符号数,进行除法运算 商、余数也为带符号数,余数的符号与被除数同商、余数也为带符号数,余数的符号与被除数同 三算术运算指令指令分类:计算机 应用基础特点 44 l 单操作数指令单操作数指令 l 源操作数源操作数(除数除数)类
44、型类型 决定指令操作类型决定指令操作类型 l 目的操作数目的操作数(被除数被除数)隐含隐含 字节操作在字节操作在AX中;字操作在中;字操作在DX, AX中中 l 除的结果,字节操作在除的结果,字节操作在AX中;字操作在中;字操作在DX, AX中中 l 除法指令对所有条件码位均无定义除法指令对所有条件码位均无定义 l 下列情况自动转入下列情况自动转入 0 中断处理:中断处理: (1) 除数为除数为0 (2) 字节操作,商的范围超出字节范围字节操作,商的范围超出字节范围 字操作时,商的范围超出字范围字操作时,商的范围超出字范围 例如例如:被除数被除数 除数除数 商商余数余数 9 2 4 1 9-
45、2-4 1 -9 2-4- 1 -9- 2 4- 1 三算术运算指令指令分类:计算机 应用基础特点 45 除法指令举例除法指令举例 例例 (AX)=0501H,(BL)=0C6H (1) DIV BL (2) IDIV BL 看作无符号数看作无符号数 看作带符号数看作带符号数 (AX) = 1281D (AX) = 1281D (BL) = 198D (BL) = -58D 1281/198 1281/ (-58) 商商= 6 D 商商= -22D=0EAH 余数余数=93D=5D H 余数余数=5D 执行执行DIV BL后:后: 执行执行IDIV BL后:后: (AX) = 5D06H (A
46、X) = 05EAH 三算术运算指令指令分类:计算机 应用基础特点 46 5. 符号扩展指令符号扩展指令 指令格式指令格式执行操作执行操作 CBW 将 将 (AL) 的符号扩展到的符号扩展到AH 中中 (AL)的的 D7=0,(AH)=00H D7=1 ,(AH)=FFH CWD 将将 (AX) 的符号扩展到的符号扩展到 DX 中中 (AX)的的 D15=0,(DX)=0000H D15=1 , ,(DX) =FFFFH 三算术运算指令指令分类:计算机 应用基础特点 47 l 无操作数格式无操作数格式 l 操作数隐含操作数隐含 字节操作,源在字节操作,源在AL,目的在,目的在AX 字字 操操
47、作,源在作,源在AX,目的在,目的在DX,AX l 对条件码无影响对条件码无影响 l 符号扩展指令应对带符号数操作符号扩展指令应对带符号数操作 l 扩展后,表示的数值大小不变,只是位数发生变化扩展后,表示的数值大小不变,只是位数发生变化 8位扩展到位扩展到16位位 , 16位扩展到位扩展到32位位 l 应用场合:应用场合: 除法指令中,使被除数满足要求。除法指令中,使被除数满足要求。 字节操作,被除数为字节操作,被除数为16位位 字操作,被除数为字操作,被除数为32位位 加减运算中,使两操作数类型一致加减运算中,使两操作数类型一致 如:字与字节相加、减时如:字与字节相加、减时 如:双字与字之间
48、的相加、减时如:双字与字之间的相加、减时 三算术运算指令指令分类:计算机 应用基础特点 48 符号扩展指令举例符号扩展指令举例 例例 CBW 执行前执行前 (AL)=01H,(AH)=0FFH 执行后执行后 (AL)=01H,(AH)=00H 例例 CWD 执行前执行前 (AX)=0FF00H,(DX)=0011H 执行后执行后 (AX)=0FF00H,(DX)=0FFFFH 例例 (AL)=0FFH,将其内容扩展至,将其内容扩展至(AX)中中 看作无符号数为看作无符号数为255, 若用若用MOV AH,0H (AX)=00FFH=255D 若用若用CBW (AX)=0FFFFH=65535原
49、数原数 故,对无符号数的扩展不能用符号扩展指令故,对无符号数的扩展不能用符号扩展指令 对无符号数的扩展,直接给高位赋对无符号数的扩展,直接给高位赋 0。 三算术运算指令指令分类:计算机 应用基础特点 49 十进制数码十进制数码01234 8421 BCD 码码00000001001000110100 十进制数码十进制数码56789 8421 BCD 码码01010110011110001001 l 用二进制编码表示十进制数用二进制编码表示十进制数BCD码(码( Binary Coded Decimal ) l 常用常用8421 BCD码码, 与十进制数码对应关系:与十进制数码对应关系: 例例
50、48的的BCD码为码为 ( 0100 1000)BCD 前面提到的所有算术运算指令都是二进制的运算指令,但人们常用前面提到的所有算术运算指令都是二进制的运算指令,但人们常用 的是十进制的是十进制. . 三算术运算指令指令分类:计算机 应用基础特点 50 根据在内存的存放形式,分压缩根据在内存的存放形式,分压缩BCD码和非压缩码和非压缩 BCD码码 (Packed BCD format) ,一字节存放,一字节存放2个个BCD码。码。 整个十进制数形式为一个顺序的整个十进制数形式为一个顺序的4位为一组的数串。位为一组的数串。 例:例:9502d 的压缩的压缩BCD码应表示为:码应表示为: 9 5
51、0 2 (Unpacked BCD format) 一字节存放一字节存放1个个BCD码。码。 8位中的低位中的低4位表示位表示8421的的BCD码,码,。 例:例:9502d的非压缩的非压缩BCD码则表示为:码则表示为: 9 5 0 2 1 1 0 0 0 0 1 10 0 1 1 0 0 1 10 0 0 0 0 0 0 00 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 三算术运算指令指令分类:计算机 应用基础特点 51 数字的数字的ASCII的高的高4位位0011无意义;无意义;
52、低低4位是以位是以8421码形式表示的十进制数位。码形式表示的十进制数位。 符合非压缩符合非压缩BCD码高码高4位无意义的规定。位无意义的规定。 2的的ASCII码:码: 高高4位位0011无意义无意义 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 三算术运算指令指令分类:计算机 应用基础特点 52 当数据用压缩或非压缩当数据用压缩或非压缩BCD码表示时,码表示时, 为使运算的结果仍为为使运算的结果仍为BCD码表示,需对结果进行调整。码表示,需对结果进行调整。 十进制运算十进制运算 = 二进制运算二进制运算 + 十进制调整十进制调整 例例(0000 1000 )(0000 1
53、000 ) 压缩 压缩BCD + (0000 1001) (0000 1001) 压缩 压缩BCD = (0001 0111 ) (0001 0111 ) 压缩 压缩BCD 计算机计算过程计算机计算过程 看作压缩看作压缩BCD 0000 1000 08 0000 1000 08 + 0000 1001 09 + 0000 1001 09 0001 0001 11 0001 0001 11 二进制运算二进制运算 十进制调整十进制调整 + 0000 0110 + 0000 0110 0001 0111 17 0001 0111 17 三算术运算指令指令分类:计算机 应用基础特点 53 当用计算机进
54、行计算时:当用计算机进行计算时: 必须先把必须先把 为便于十进制运算,计算机提供了一组十进制调整指令,为便于十进制运算,计算机提供了一组十进制调整指令, 这组指令在这组指令在。 80888088中提供了六条调整指令。中提供了六条调整指令。 三算术运算指令指令分类:计算机 应用基础特点 54 (1 1)DAADAA(Decimal adjust after addition)Decimal adjust after addition)加法十进制调整指令加法十进制调整指令 (2 2)DASDAS(Decimal adjust after subtraction)Decimal adjust aft
55、er subtraction)减法十进制调整指减法十进制调整指 令令 (3 3)AAAAAA(ASCII adjust after addition)ASCII adjust after addition)加法加法ASCIIASCII调整指令调整指令 (4 4)AASAAS(ASCII adjust after subtraction)ASCII adjust after subtraction)减法减法ASCIIASCII调整指令调整指令 (5 5)AAMAAM(ASCII adjust after multiply)ASCII adjust after multiply)乘法乘法ASCII
56、ASCII调整指令调整指令 (6 6)AADAAD(ASCII adjust before division)ASCII adjust before division)除法除法ASCIIASCII调整指令调整指令 共同点:共同点: 十进制调整指令隐含寄存器操作数十进制调整指令隐含寄存器操作数AL;AL; ASCII ASCII调整指令隐含寄存器操作数调整指令隐含寄存器操作数ALAL或或AHAH。 十进制调整指令对压缩十进制调整指令对压缩BCDBCD码进行调整;码进行调整; ASCIIASCII调整指令对非压缩调整指令对非压缩BCDBCD码进行调整码进行调整; ; 三算术运算指令指令分类:计算机
57、 应用基础特点 55 (1)DAA(Decimal adjust after addition)加法十进制调整指令加法十进制调整指令 格式:格式:DAA 条件:参加运算数(加法)必须是两个压缩的条件:参加运算数(加法)必须是两个压缩的BCD码,码, 在执行在执行DAA指令以前必须执行指令以前必须执行ADD或或ADC指令。指令。 功能:(功能:(AL)把由两个压缩把由两个压缩BCD码相加后的结果码相加后的结果 (结果一定放在(结果一定放在(AL)中的),调整到压缩中的),调整到压缩BCD格式。格式。 DAA指令影响指令影响 标志标志: A、C、P、S、Z . 而对而对O标志未作定义。标志未作定义
58、。 校正操作:校正操作: 若若 (AL)3 0 9 或 或AF=1, 则则 (AL) (AL)+06H, AF 1 若若 (AL)7 4 9 或 或CF=1, 则则 (AL) (AL)+60H, CF 1 三算术运算指令指令分类:计算机 应用基础特点 56 应用举例:应用举例: 例例1:设(设(AL)=28 H ,(,(BL)=68H ADD AL,BL ; (AL)=90H,CF=0,AF=1 DAA ; (AL) (AL)+06 ,(AL) = 96H ; 例例2: (BCD3)(BCD1)+(BCD2)1834H2789H = 4623H 注意:注意: 例例2中的中的。 三算术运算指令指
59、令分类:计算机 应用基础特点 57 实现:实现:(BCD1+1)(BCD1)+(BCD2+1)(BCD2)(BCD3+1)(BCD3) 程序程序: MOV AL,BCD1 ;(;(AL)=34 ADD AL,BCD2 ;(;(AL)(AL)+(BCD2),BD=34+89 , AF=,CF=0 DAA ; 0BD+06+60=23, AF=1,CF=1 MOV BCD3,AL ; (BCD3)=23 MOV AL,BCD1+1 ; (AL)=18 ADC AL,BCD2+1 ; 40=18+27+CF(AL),AF=1,CF=0 DAA ;(;(AL)+06=46(AL), CF=0, AF=
60、1 MOV BCD3+1,AL ; (BCD3) = 4623H ;(;(BCD3+1) (BCD3) = 4623H 三算术运算指令指令分类:计算机 应用基础特点 58 (Decimal adjust after subtraction) 格式:格式:DAS 操作操作: (AL)把(把(AL)中的差调整到压缩的)中的差调整到压缩的BCD格式。格式。 条件:条件: DAS 影响影响 标志标志: 影响影响A、C、P、S、Z . 而对而对O标志未作定义。标志未作定义。 校正操作:校正操作: 三算术运算指令指令分类:计算机 应用基础特点 59 应用举例:应用举例: 例例1:设(:设(AL)=86H,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年商业委托销售协议
- 2025年合法住房公租房协议
- 二零二五年度驾校品牌推广与市场拓展合作合同2篇
- 2025年度个人二手车转让及二手车增值服务合同3篇
- 二零二五年度集体产权房屋买卖合同样本(含房屋产权调查及核实要求)
- 二零二五年度运输保险合同汇编与风险保障方案
- 二零二五年度股东之间股权转让与增资扩股合同书
- 2025年度工厂生产管理费合同模板新
- 2025年度新能源物流运输合作协议
- 二零二五年度简易消防演练组织与评估合同
- 《医院财务分析报告》课件
- 2025老年公寓合同管理制度
- 2024-2025学年人教版数学六年级上册 期末综合卷(含答案)
- 2024中国汽车后市场年度发展报告
- 感染性腹泻的护理查房
- 天津市部分区2023-2024学年高二上学期期末考试 物理 含解析
- 《人工智能基础》全套英语教学课件(共7章)
- 废铁收购厂管理制度
- 物品赔偿单范本
- 《水和废水监测》课件
- 沪教版六年级数学下册课件【全册】
评论
0/150
提交评论