• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

8位单片机怎么进行16位或是32位的加法

我对面的武器 2017-07-08 浏览量:1811
RT
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • RT,怎么又是RT啊。问题可以再描述一下嘛。方便回答啊。


    如果是用C语言,不用管,直接进行+运算。编译器会给你处理的。
    如:
    unsigned short int a,b,c;//unsigned int a,b,c;
    c=a+b;

    如果用汇编就可以看到,8位单片机的加法是分好几步完成的。就像是你自己在手动进行加法一样的。
    如下,参考于:https://zhidao.baidu.com/question/514842397.html

    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


    • 发布于 2017-07-08
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 如果是C语言,那就没什么好说的了,直接定义16位或者32位变量,编译器会自动帮你完成后面的工作

    如果是汇编,可以参考一下这个https://zhidao.baidu.com/question/431685377970489084.html


    其实如果你不嫌麻烦,也可以用C语言将需要的程序写出来,然后到Keil C51下面查看生成的.s文件,那个是汇编语言,不过很复杂

    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 两个八位数按高低取值不就是16位了吗
    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 两个八位数按高低取值不就是16位了吗
    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 用C语言是不用管这些问题的,如果要管的话,那还有32位的单片机跑long long这种64位的不一样麻烦吗
    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 两个8位数相或运算不就行了,或者左移右移哒
    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是51,AVR這些常見的8 Bit單片機,編譯器會幫您做這些事情

    char a;

    char b;

    int c;

    c=a+b;


    以上供您參考

    • 发布于2017-07-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机是8位单片机,一次运算只能进行8位加减乘除,但16位乘除法可以通过多次运算获得,汇编程序在很多教科书上都有.
    如果用C语言的话,可以不考虑它是怎么实现的,只管定义两个整形变量(16位)或(32位)即可
    • 发布于2017-07-10
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

8位单片机怎么进行16位或是32位的加法