2007级热动专业《单片机原理及应用》实验指导书(5)

2019-08-31 11:07

四、程序框图

设置块起始地址

设置BIN数长度 设置被减数、减数地址 地址减一

否 当前地址内容相减

是 是否减完

结束

五、程序清单

org 0030h 设置块起始地址 0030 7F03 mov r7,#03h 设置字节数

0032 7840 mov r0,#40h 设置被减数首地址 0034 7930 mov r1,#30h 设置减数首地址 0036 120040 lcall binsn l:

0039 80FE sjmp l

org 0040h

binsn:

0040 EF mov a,r7 0041 FA mov r2,a 0042 28 add a,r0

0043 F8 mov r0,a 设置被减数、减数首地址 0044 EA mov a,r2 0045 29 add a,r1 0046 F9 mov r1,a 0047 C3 clr c binsn1:

0048 18 dec r0

0049 19 dec r1 被减数、减数地址减一

19

004A E6 mov a,@r0

004B 97 subb a,@r1 减法运算 004C F6 mov @r0,a 差送(R0) 004D DAF9 djnz r2,binsn1 004F 22 ret

3.双字节二进制数乘法

一、实验要求

将两个多字节无符号二进制数相乘。

二、实验目的

1、了解多字节二进制数的乘法。 2、了解字节交换指令。

三、实验说明

入口条件:被乘数在R2、R3中,乘数在R6、R7 出口信息:乘积在R2、R3、R4、R5中。 影响资源:PSW、A、B、R2-R7。 堆栈要求:2字节。

四、程序框图

设置块起始地址 设置被乘数、乘数 被乘数低字节与乘数低、高字节依次相乘 被乘数高字节与乘数低、高字节依次相乘 结束 20

中。

五、程序清单

org 0060h 设置块起始地址 0060 7A12 mov r2,#12h

0062 7B34 mov r3,#34h 设置被乘数、乘数 0064 7E56 mov r6,#56h 0066 7F78 mov r7,#78h 0068 120071 lcall muld l:

006B 80FE sjmp l 0071 EB 0072 8FF0 0074 A4 0075 ACF0 0077 FD 0078 EB 0079 8EF0 007B A4 007C 2C 007D FC 007E 7400 0080 35F0 0082 FB 0083 EA 0084 8FF0 0086 A4 0087 2C 0088 FC 0089 EB 008A 35F0 008C FB 008D 7400 008F 3400 0091 CA 0092 8EF0 0094 A4 0095 2B 0096 FB 0097 EA 0098 35F0 009A FA 009B 22

org 0071h muld:

mov a,r3 被乘数低字节送A

mov b,r7 乘数低字节送B

mul ab 被乘数低字节与乘数低字节相乘 mov r4,b 乘积高字节送结果单元 mov r5,a 乘积低字节送结果单元 mov a,r3 mov b,r6 mul ab

add a,r4 被乘数低字节与乘数高字节相乘 mov r4,a 乘积送结果单元并累加 mov a,#00h addc a,b mov r3,a mov a,r2 mov b,r7 mul ab add a,r4

mov r4,a 被乘数高字节与乘数低字节相乘 mov a,r3 乘积送结果单元并累加 addc a,b mov r3,a mov a,#00h addc a,#00h xch a,r2 mov b,r6 mul ab

add a,r3 被乘数高字节与乘数高字节相乘 mov r3,a 乘积送结果单元并累加 mov a,r2 addc a,b mov r2,a ret

21

4.双字节二进制数除法

一、实验要求

将双字节无符号二进制数相除。 二、实验目的

1.了解双字节二进制数的比较除法。

2.熟悉字节交换指令及逻辑运算类指令。

三、实验说明

入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。 出口信息:OV=0时商在R4、R5中,OV=1时商溢出。 影响资源:PSW、A、B、R1-R7。 堆栈要求:2字节。

无符号单字节(8位)数据相除,可直接选用除法指令完成。多字节数据的除法相对较复杂,不便直接采用除法指令来完成。一般采用一系列相减和移位操作来实现。这种“移位-相减法”与算术笔算法相似,每“移位-相减”一次求得一位商,当余数够减时得商1,不够减时得商0,循环此步骤,直到被除数的所有位都处理完为止。这种上商前先比较被除数(或余数)与除数,根据比较结果决定上商1或0,并且只有比较结果够减,上商为1时才执行减法,所以称为比较法。

一般在计算机中,被除数均为除数的双倍字长,即如果除数和商为双字节数,则被除数为4字节数。由于商为单字(双字节)长,如果在除法中发生商大于单字长,称为溢出。因此,在除法前应检验是否发生溢出。一般可在进行相除之前,先判断被除数的高位字与除数,如果出现被除数高位字大于、等于被除数,则必然商溢出,应置位溢出标志,不执行除法操作。

四、程序清单

org 0100h 设置块起始地址

0100 7A12 mov r2,#12h 0102 7B34 mov r3,#34h

0104 7C56 mov r4,#56h 设置被除数、除数 0106 7D78 mov r5,#78h 0108 7E45 mov r6,#45h 010A 7F67 mov r7,#67h 010C 120120 lcall divd

l:

010F 80FE sjmp l

org 0120h

divd:

0120 C3 clr c

22

0121 EB mov a,r3

0122 9F subb a,r7 先比较判断是否发生溢出 0123 EA mov a,r2 0124 9E subb a,r6

0125 4003 jc divd1 若(C)=1,程序转向divd1; 0127 D2D2 setb ov 若(C)=0,则溢出,置OV为1 0129 22 ret divd1:

012A 75F010 mov b,#10h 设置循环次数 divd2:

012D C3 clr c 012E ED mov a,r5

012F 33 rlc a 0130 FD mov r5,a 0131 EC mov a,r4 0132 33 rlc a 0133 FC mov r4,a 0134 EB mov a,r3

0135 33 rlc a 0136 FB mov r3,a 0137 CA xch a,r2

0138 33 rlc a 0139 CA xch a,r2

013A 92D5 mov f0,c 013C C3 clr c

013D 9F subb a,r7 013E F9 mov r1,a 013F EA mov a,r2

0140 9E subb a,r6 0141 B0D5 anl c,/f0 0143 4004 jc divd3 0145 FA mov r2,a

0146 E9 mov a,r1 0147 FB mov r3,a

0148 0D inc r5 divd3:

0149 D5F0E1 djnz b,divd2 014C C2D2 clr ov 014E 22 ret

23

标志位C清零 被除数最低位字节内容左移一 位,最低位补入0 R4内容左移一位 R3内容左移一位 R2内容左移一位 移出的最高位送F0 (R3)—(R7) 差送R1 (R2)—(R6) 若(OV)∧(C)=1存C中 若(C)=1,程序转向divd3 回送相减结果 上商一 循环10次

清OV,运算结束


2007级热动专业《单片机原理及应用》实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:语文S版六年级上册《一单元 2 寓言两则《自相矛盾》》优质课教学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: