单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3939|回复: 28
收起左侧

51单片机一起学汇编—BCD调整 数据处理

  [复制链接]
zhouchuantao 发表于 2019-3-9 21:55 | 显示全部楼层 |阅读模式
/***********BCD调整**************/

      ORG  0000H
      JMP START
START:
      MOV SP,#7FH     ;设置堆栈地址
      MOV 50H,#69H    ;十六机制立即数69H 载人地址为50H寄存器中
      MOV R3,50H      ;运行DEBUG时 在R2中查看数据
      MOV R0,#60H     ;十六机制立即数60H 载人R0寄存器中
      MOV A,50H       ;地址为50H寄存器中的数据 载人累加器ACC中
      ANL A,#0F0H     ;累加器ACC中的高四位数据和十六进制的立即数 F0H  逻辑 与 运算
      MOV @R0,A       ;累加器ACC中的数据 载入以R0中的数据为地址的寄存器中   注意间接寻址:@R0=50H,50H作为寄存器地址使用,而不是数据
      MOV 30H,@R0     ;@R0间接寻址的数据 载入30H寄存器中
      MOV R1,30H      ;运行DEBUG时 在R2中查看数据
      MOV A,50H       ;寄存器50H 中的数据 载入累加器ACC
      ANL A,#0FH      ;累加器ACC中的低四位数据和十六进制的立即数 0FH  逻辑 与 运算
      INC R0          ;寄存器R0中的数据加1
      MOV @R0,A       ;累加器ACC中的数据 载入以R0中的数据为地址的寄存器中
      MOV 31H,@R0     ;@R0间接寻址的数据 载入30H寄存器?
      MOV R2,31H      ;运行DEBUG时 在R2中查看数据
      JMP START       ;调回开始

 楼主| zhouchuantao 发表于 2019-3-10 12:04 | 显示全部楼层
/*************************
题目要求
已知 X Y,计算Z值, 结果存 20H 单元中
  Z=X-Y(X≥0)
  Z=X+Y(X<0)

需要知识:存储寄存器中的正数和负数

************************/  

            X DATA 30H                ;未知数X 用寄存器30H代替   DATA是个伪指令
            Y DATA 31H                ;未知数Y 用寄存器31H代替

            ORG 0000H                 ;程序开始地址
            JMP START                 ;跳转主程序
START:
            MOV SP,#7FH               ;堆栈地址7FH
            MOV X,#-9                 ;以30H为地址的寄存器中 载入初值 负9
            MOV Y,#1                  ;以31H为地址的寄存器中 载入初值 1
            MOV A,X                   ;X 的初值 载入A中
            MOV B,Y                   ;Y 的初值 载入B中
            JB Acc.7,Positive         ;ACC.7位是1还是0,判断X是正数还是负数, 如是正数跳转加法运算,如是负数执行下一条道减法运算
            CLR C                     ;PSW.7位   CY位需要清零,不能影响到加减法结果
            SUBB A,B                  ;减运算,结果存ACC中
            SJMP Result               ;跳转存结果
Positive:
            ADD A,B                   ;加运算,结果存ACC中

Result:            MOV 20H,A                 ;结果存在寄存器地址为20H中
            MOV R1,20H                ;调试中查看数值,验证程序
            JMP $
END
小林大哥哥 发表于 2019-3-17 13:42 | 显示全部楼层

/*************************
题目要求
已知 X Y,计算Z值, 结果存 20H 单元中
  Z=X-Y(X≥0)
  Z=X+Y(X<0)

需要知识:存储寄存器中的正数和负数

************************/  

            X DATA 30H                ;未知数X 用寄存器30H代替   DATA是个伪指令
            Y DATA 31H                ;未知数Y 用寄存器31H代替

            ORG 0000H                 ;程序开始地址
            JMP START                 ;跳转主程序
START:
            MOV SP,#7FH               ;堆栈地址7FH
            MOV X,#-9                 ;以30H为地址的寄存器中 载入初值 负9
            MOV Y,#1                  ;以31H为地址的寄存器中 载入初值 1
            MOV A,X                   ;X 的初值 载入A中
            MOV B,Y                   ;Y 的初值 载入B中
            JB Acc.7,Positive         ;ACC.7位是1还是0,判断X是正数还是负数, 如是正数跳转加法运算,如是负数执行下一条道减法运算
            CLR C                     ;PSW.7位   CY位需要清零,不能影响到加减法结果
            SUBB A,B                  ;减运算,结果存ACC中
            SJMP Result               ;跳转存结果
Positive:
            ADD A,B                   ;加运算,结果存ACC中

Result:            MOV 20H,A                 ;结果存在寄存器地址为20H中
            MOV R1,20H                ;调试中查看数值,验证程序
            JMP $
END
songzhy 发表于 2019-4-1 07:16 | 显示全部楼层
谢谢分享......
michael2018 发表于 2019-4-8 16:05 | 显示全部楼层
楼主牛逼啦
solo2pm 发表于 2019-4-13 00:11 | 显示全部楼层
新人  表示汇编还不太懂 看天书……
songzhy 发表于 2019-4-14 07:49 | 显示全部楼层
新人  表示汇编还不太懂
silicon_hacker 发表于 2019-4-24 22:12 | 显示全部楼层
51单片机学习汇编
qq12345qq6789qq 发表于 2019-4-25 16:01 | 显示全部楼层

新人  表示汇编还不太懂
迁就 发表于 2019-4-26 17:35 | 显示全部楼层
谢谢分享
jackliuwenli 发表于 2019-5-29 14:16 | 显示全部楼层
谢谢分享
1316880381 发表于 2019-6-3 14:37 来自手机 | 显示全部楼层
谢谢分享
vccccclala 发表于 2019-6-18 16:55 | 显示全部楼层
感谢分享
175花见花开艰苦 发表于 2019-6-28 13:14 | 显示全部楼层
感谢分享
刷新时间 发表于 2019-7-5 10:46 | 显示全部楼层
刚刚开始
tieq1952 发表于 2019-7-10 06:35 | 显示全部楼层
谢谢分享!!!
鹏博士PBs 发表于 2019-7-10 09:22 | 显示全部楼层
2进制转10进制的BCD译码器
一直有你陪伴 发表于 2019-7-27 01:58 | 显示全部楼层
楼主牛逼啦,汇编看不懂
LIUSIGN 发表于 2019-8-5 08:40 | 显示全部楼层
楼主牛逼啦,汇编看不懂
佳佳电气 发表于 2019-9-14 18:57 来自手机 | 显示全部楼层
新手表示看不懂,学习中
star130 发表于 2019-9-23 20:20 | 显示全部楼层
看明白了,学习了,有帮助
五依黑 发表于 2019-10-4 17:32 | 显示全部楼层
大神,想学单片机应该先从哪里开始?
五依黑 发表于 2019-10-4 17:33 | 显示全部楼层
单片机如何入门?
harry3 发表于 2019-10-24 23:41 | 显示全部楼层
·麦克纳姆轮全向轮战车程序精髓分享
双赢电子 发表于 2019-11-16 17:45 来自手机 | 显示全部楼层
多谢分享,学习了,收藏
莫陌 发表于 2019-11-29 14:27 来自手机 | 显示全部楼层
多谢分享
巫山烟雨 发表于 2019-12-12 17:25 | 显示全部楼层
谢谢分享  
ttw1640664131 发表于 2019-12-24 23:25 | 显示全部楼层
感谢楼主的分享
justToWing 发表于 2020-2-2 08:00 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表