4.62乘除运算指令(2条) 乘除运算指令在累加器A和寄存器B之间进行,运算 结果保存在累加器A和寄存器B中。 1、乘法指令(1条) 乘法指令: MUL AB >把累加器A和寄存器B中的8位无符号整数相乘; >16位乘积低字节在累加器A中,高字节在寄存器B中; >若乘积大于255(0FFH,则溢出标志位置“1”,否则清 “0”,运算结果总使进位标志CY清“0”。 B 乘法指令可以竖式表示: B A 204237 3:01:41
3:01:41 4.6.2 乘除运算指令(2条) ➢ 乘除运算指令在累加器A 和寄存器B之间进行,运算 结果保存在累加器A和寄存器B中。 14 20:42:37 1、乘法指令(1条) 乘法指令: MUL AB ➢ 把累加器A 和寄存器B中的8位无符号整数相乘; ➢ 16位乘积低字节在累加器A中,高字节在寄存器B中; ➢ 若乘积大于255 (0FFH), 则溢出标志位置 “1” , 否则清 “0”, 运算结果总使进位标志CY清“0” 。 ➢ 乘法指令可以竖式表示:
1、乘法指令(1条) ◇例如,设A=82H(130),B=38H(56),执行指令: MUL AB若乘积大于255(0FFH,则溢出标志位置“1” 结果:乘积为1C70H(7280),A=70I,B=1CH,OV=1,CY=0 「例46用单字节乘法指令进行多字节乘法运算。设双字 节数低8位存放在30H,高8位存放在31H单元,单字节数 存放在40H单元,编程实现双字节乘以单字节的运算,乘 积按由低位到高位依次存放在50H,51H,52H单元中。 解:双字节数乘以单字节数,设双字节数用X2X1表示,单 字节数用Y表示,则其乘法可表示为: 31H)(30H (X28+X1)Y=X2Y28+X1Y (40 最终结果在(52H(51m50H 204237 3:01:41
3:01:41 1、乘法指令(1条) 例如,设A=82H(130),B=38H(56),执行指令: MUL AB 结果: 乘积为1C70H (7280), A=70H, B=1CH,OV=1, CY=0 15 20:42:37 [例4-6] 用单字节乘法指令进行多字节乘法运算。设双字 节数低8位存放在30H, 高8位存放在31H单元, 单字节数 存放在40H单元, 编程实现双字节乘以单字节的运算, 乘 积按由低位到高位依次存放在50H, 51H, 52H单元中。 解:双字节数乘以单字节数, 设双字节数用X2X1表示, 单 字节数用Y表示, 则其乘法可表示为: ( X2·28+X1 )·Y=X2·Y·28+X1·Y (31H) (30H) × (40H) 最终结果在: (52H)(51H)(50H) 若乘积大于255 (0FFH), 则溢出标志位置 “1”
(X28+X1)·Y=X2Y28+X1Y ◇利用MUL指令分别进行X2Y和X1Y的乘法运算,然 后把等号右边两项移位相加即得其积 ◇可以使用下面的竖式表示: X2 XI 其中,“(X1Y)低”表示的是 (X1Y)高(X1Y胝 X1和Y乘积的低8位,其他+(X2Y)(ⅹY)低 符号代表的含义类似。 RES2 RESI RESO RES0就是“(X1Y)低”,即最后结果的最低位; RESI是“(XY)高+(X2Y低”(的结果; RES2是“(X2Y高”和由“(X1Y)高+(X2Y)低”产生的进 位相加的结果。 204237 3:01:41
3:01:41 ( X2·28+X1 ) · Y=X2·Y·28+X1·Y 利用MUL指令分别进行X2·Y和X1·Y的乘法运算,然 后把等号右边两项移位相加即得其积。 可以使用下面的竖式表示: 16 20:42:37 其中, “(X1Y)低” 表示的是 X1和Y乘积的低8位, 其他 符号代表的含义类似。 RES0就是“(X1Y)低” , 即最后结果的最低位; RES1是“(X1Y)高 + (X2Y)低”(的结果; RES2是“(X2Y)高” 和由“(X1Y)高 + (X2Y)低” 产生的进 位相加的结果
[例4-6程序代码 (X28+X1)Y=X2Y28+X1Y MOV A 30H (31H(30H)→A MOV B 40H 40H)→B MUL AB X1 Y(52H)(51H)(50H X2 XI-A MOV50H,A;积低字节存50H Y→B MOV51H,B;积高字节存5IHBX1Y)高(X1Y應 MOV A. 3IH 4xY)(ⅹ2Y)低 MOV B 40H ReS2 RESI RESO MUL AB X2.Y 52H。51H,50H ADDA,51H;X2Y低8位与XY高8位相加作为积的第二字节 MO51H,A何能向高位产生进位C MOVA,B;乘积最高字节送A以便与低位进位C相加 ADCA,#00H;作用:将C与A相加最高字节加低位进位C MOV52H,A;最高字节存52H单元 204237 3:01:41
3:01:41 [例4-6]程序代码 MOV A, 30H MOV B, 40H MUL AB ;X1·Y MOV 50H, A ;积低字节存50H MOV 51H, B ;积高字节存51H MOV A, 31H MOV B, 40H MUL AB ;X2·Y ADD A, 51H ;X2·Y低8位与X1·Y高8位相加作为积的第二字节 MOV 51H, A MOV A, B ;乘积最高字节送A以便与低位进位C相加 ADDC A, #00H ;作用:将C与A相加,最高字节加低位进位C MOV 52H, A ;最高字节存52H单元 17 20:42:37 (X2·28+X1)·Y=X2·Y·28+X1·Y 52H, 51H, 50H (31H) (30H) × (40H) (52H)(51H)(50H) →B →A →B →A B← →A →A B← 可能向高位产生进位C
2、除法指令(1条) ◇除法指令: DIV AB 该指令把累加器A中的8位无符号整数除以寄存器B中8 位无符号整数,所得结果的商放在累加器A中,余数在 寄存器B中,标志位CY和0w均清“0”。 商 A 若除数(B中内容不为0B厂A ◇注意:若除数(B中内容)为0H,则执行后 B×商 结果为不定值,并置位溢出标志OV。 余数—>B ◇例,设A内容为147(93H),B内容为13(0DH,则执行命令: DIV AB 执行结果:A=0BH,B=04H,OV=0,CY=0 204237 3:01:41
3:01:41 2、除法指令(1条) 除法指令: DIV AB 该指令把累加器A中的8位无符号整数除以寄存器B中8 位无符号整数, 所得结果的商放在累加器A中,余数在 寄存器B中, 18 20:42:37 B A 商 B×商 余数 A B 注意: 若除数(B中内容)为0H, 则执行后 结果为不定值, 并置位溢出标志OV。 例, 设A内容为147(93H), B内容为13(0DH), 则执行命令: DIV AB 执行结果:A=0BH,B=04H,OV=0,CY=0 若除数(B中内容)不为0 标志位CY和OV均清“0”