1楼:匿名用户
运算过程是在累加器和寄存器中自动进行的
2楼:匿名用户
这是用汇编语言编程时,才要考虑的问题。要是用c语言编程,只要声明了一个16位变量就可以了,四则运算都可以的。
汇编语言写程序,加减法,比较容易简单,只是乘除法要麻烦些。不过,也就是用两个字节,分成高8位和低8位分别运算就行了。
3楼:单片机小丸子
分俩次啊,先存储在一个寄存器中。
4楼:顶起石头的小草
你好!是“加减乘除”的哪一种?
80c51单片机编程实现两个16位数的减法。
5楼:七彩镜
sub16:
clr c ;清进位mov a,#50h ;被减数低位送累加器subb a,#4bh ;减去减数低mov 31h,a ;差低位送31hmov a,#6fh ;被减数高位送累加器subb a,#13h ;减去减数高位mov 30h,a ;差高位送30h;如果有借位,c为1
6楼:顶起石头的小草
你好!是用汇编来完成?
51单片机能完成两个16位的加减运算吗,例如1245h+cb78h
7楼:匿名用户
可以的,但肯定不是一两条语句能 完成的
c语言编程不考虑算法,只管写:
uint a,b,c;
a=0x1234; b=0xcb78;
d=a+b;
51单片机能做两个16位的加法运算吗?如1010h和1010h,求大虾!!!!!
8楼:潘达
8位51,任何运算都可以的,只是无法在一个命令内完成,低位无进位相加,如果溢出,将进位标志置1,高位用进位加法,16位运算就是运算两次加法,低位加低位,高位加高位。。。。
9楼:匿名用户
没有问题的,可以的抄,如用汇编
mov r5, #10h ; 第一数据高字节mov r4,#10h ; 第一数据低字节mov r3, #10h ; 第二数据高字节mov r2,#10h ; 第二数据低字节mov a, r4
add a, r2
mov r4, a ; 和低字节 在 r4 中
mov a, r5
addc a, r3
mov r5, a ; 和高字节 在 r5 中ret
两个16位二进制数相加单片机程序 40
10楼:
啥单片机?如果不考虑负数,那么:
32位cpu的,直接加,
16位的直接加,但要判断最高位是否溢出,
8位的,低8位先加,再高8位相加,同时加上低8位的进位,再判定最高位是否溢出。
以上供参考。
11楼:匿名用户
;r2r3+r4r5=r1r2r3
add16:
mov r1,#0
mov a,r3
add a,r5
mov r3,a
mov a,r2
addc a,r4
mov r2,a
jnc add161
mov r1,#1
add161:ret
51单片机两个十六位数减法
12楼:匿名用户
两个16位?的字符串?还是数字? 如果是数字直接运算。。。。。。如果是字符串,转成数字先。
51单片机二字节乘法程序
13楼:匿名用户
标号: muld 功能:双字节二进制无符号数乘法子程序入口条件:被乘数在r2、r3中,乘数在r6、r7中。
出口信息:乘积在r2、r3、r4、r5中。
影响资源:psw、a、b、r2~r7 堆栈需求: 2字节muld: mov a,r3 ;计算r3乘r7mov b,r7
mul ab
mov r4,b ;暂存部分积
mov r5,a
mov a,r3 ;计算r3乘r6
mov b,r6
mul ab
add a,r4 ;累加部分积
mov r4,a
clr a
addc a,b
mov r3,a
mov a,r2 ;计算r2乘r7
mov b,r7
mul ab
add a,r4 ;累加部分积
mov r4,a
mov a,r3
addc a,b
mov r3,a
clr a
rlc a
xch a,r2 ;计算r2乘r6
mov b,r6
mul ab
add a,r3 ;累加部分积
mov r3,a
mov a,r2
addc a,b
mov r2,aret
14楼:匿名用户
用c语言开发,你就 不用编写这种程序了
51单片机处理16位数
15楼:匿名用户
用汇编也可以处理,一楼的方法也是一种。
如果用c语言编程,无非就是把16位数分成两部分,高8位与低8位,在运算的时候,按照我们一般的规则,从低位开始先乘后加。编程序细致一点,问题不大。
16楼:匿名用户
16位与16位的乘法和除法可能是32位了
unsigned long int ║4字节║0~4294967295
你可以申明个
unsigned long int temp;
unsigned int k1,k2;
temp = k1*k2;
17楼:匿名用户
1、整型数为16位。16位与16位相乘,则需定义长整型32位。除法则会取整处理。汇编实现时需要严谨处理。
2、简单办法是直接定义float型变量。注意float转整型时不会四舍五入处理。+0.5处理。
具体要看看你的**。
18楼:匿名用户
没用过,好像通过移位的方法可以处理16位数据!
如何用汇编设计两个16位数相减的程序
19楼:匿名用户
减数低八位送30h,高八位送31h。被减数低八位送32h,高八位送33h。差送34(低八位)、35(高八位)。
清cymov a, 30hsubb a, 32hmov 34h, a
mov a, 31hsubb a, 33hmov 35h, a
这是8051单片机的设计方法,要是有支持16位的减法指令就不用设计了,直接写就ok了。
20楼:匿名用户
16位数是16位二进制数还是十进制数??(假如单片机是8位的)如果是16位二进制数就用2个寄存器*2+z标志,每个数用2个寄存器来存储,先算低8位的,然后算高8位减去z位其实用c位也可以如果是16位十进制数要转化为二进制,然后就十分麻烦了,定义一个数组或者结构体这么大的数字单片机算得很累的,没有试过
21楼:匿名用户
有16位减法就直接用单个指令实现,没有的话想办法扩展就ok了。
22楼:风雷小草
二楼的基本思路是对的,但没有考虑低字节相减得负数的情况。需要结合状态寄存器,用分支对不同的情况进行区分。
单片机的双串口通讯怎样能让两个串口不互相冲突
1楼 匿名用户 一个用t1产生波特率,一个用自带的brt发生器产生波特率 一个中断的时候立即关总中断,避免另外一个造成中断重入,中断完成后开总中断 这样就能完全避开冲突。比如stc12c5a60s2或者nxp的p89lpc952都是双串口的,我都用过。 2楼 匿名用户 两个用相同的波特率,都用brt...