您的当前位置:首页正文

实验三 无符双字节乘法程序设计

2022-02-21 来源:爱站旅游
导读实验三 无符双字节乘法程序设计


实验三 无符号双字节乘法程序设计

一、 实验目的和要求

本次实验的目的是用MCS-51汇编语言实现一无符号双字节乘法运算子程序编程实验。实验前要认真阅读本次实验的内容,参考给出的无符号双字节乘法运算的算法、流程图及参考程序,可考虑用另一种方法设计程序。然后上机调试,达到进一步掌握MCS-51汇编语言程序设计的基本方法。

二、 预备知识

由于MCS-51指令中只有8位数乘法指令MUL,用它来实现双字节数相乘时,要做一些算法处理才可以进行。

算法:两个双字节无符号数被分别存放在R2R3和R6R7中。可把被乘数和乘数分解为: (R2)(R3)=(R2)•2+(R3), (R6)(R7)=(R6)•2+(R7)

88则这两个数的乘积可表示为:

(R2)(R3)(R6)(R7)=[ (R2)•2+(R3)]•[ (R6)•2+(R7)]

88 =(R2)(R6)•216+(R2)(R7)•28+(R3)(R6)•28+(R3)(R7)

根据上面的算法公式,然后画出流程图,就能设计两个双字节无符号数进行乘法运算的程序了。

三、 程序流程图

图1 无符号双字节乘法程序流程图

四、实验步骤

在R2R3和R6R7中分别输入无符号整数,以0970H为起始地址连续或单步运行本实验程序后检查R4 R5 R6 R7中内容,就是两数的乘积。

入口:(R2R3)=被乘数;(R6R7)=乘数;出口:(R4R5R6R7)=乘积,R4为积的最高位。

ORG 0970H

QKUL: MOV A,R3

MOV B,R7

MUL AB ;R3*R7

XCH A,R7 MOV R5,B MOV B,R2

MUL AB ADD A,R5

MOV R4,A

CLR A

ADDC A,B

MOV R5,A MOV A,R6

;R7=(R3*R7)低字节

;R5=(R3*R7)高字节

;R2*R7

;R5=(R2*R7)高字节

MOV B,R3

MUL AB ;R3*R6

ADD A,R4

XCH A,R6

XCH A,B

ADDC A,R5

MOV R5,A

MOV PSW.5,C MOV A,R2

MUL AB ADD A,R5

MOV R5,A

CLR A

;存CY

;R2*R6

MOV ACC.0,C

MOV C,PSW.5 ;加上次加法的进位

ADDC A,B

MOV R4,A

SJMP $

END

五、思考题

1、简述指令MUL AB;XCH A,B;ADDC A,R5;的功能。

2、程序中ORG, END,SJMP $的功能什么?

六、实验报告要求

1、 写出修改后的正确程序,并做注释。

2、 画出流程图。

3、 回答思考题。

因篇幅问题不能全部显示,请点此查看更多更全内容