2018-12-06【嵌入式&物联网】记一次汇编题目

--------------------------------
Author : ShawnDong
updateDate :2018.12.6
Blog : ShawnDong98.github.io
--------------------------------

这个题目一开始没看懂题目要求,后来看例程一头雾水,后来在自己写程序的过程中去理解例程的思路,慢慢就豁然开朗。
我觉得这个题目会感到吃力完全是因为自己太拙了。诸位看到这样的题目,应该会迎刃而解吧。

题目:设4位BCD码依次存放在内存RAM40H~43H单元的低四位,高四位都为0,要求将其转换为二进制数,结果存入R2R3中。

核心思想:一个十进制数可表示为:(...(Dn * 10^n + D(n-1))*10 + D(n-2) * 10 + ...) + D0

首先初始化

        ORG 0000H

BCDHEX: MOV R0, #40H
        MOV R1, #03
        MOV A, @R0
        MOV R3, A

注意:在该题目中R2用来保存高八位,R3用来保存低八位。A保存低八位,B保存高八位,搞清楚这点后。开始接下来的程序。

LOOP:   MOV A, R3
        MOV B, #10
        MUL AB
        MOV R3, A

将低八位乘10后,将计算结果的低八位存入R3
注意,接下来这段程序我理解了好久才明白什么意思,一开始一直很费解

        MOV A, B
        XCH A, R2
        MOV B, #10
        MUL AB
        ADD A, R2
        MOV R2, A

将低八位乘10后,将计算结果的低八位存入R3,然后将高八位的数据暂时存放在R2中,并把R2中的值给A,注意这时A中的值是上一次计算结果的高八位,在刚才的程序中,我们仅仅将低八位乘以了10,现在我们将高八位也乘以10,然后还需要将刚才低八位乘10后,计算结果的高八位加上,这才是真正一个二进制乘10的方法。

至此我们将上一次的计算结果乘以了10,也就是完成了Dn*10^n这一步。接下来就是加上Dn-1这个值,然后再循环就完成了这个题目,程序如下:

        INC R0
        MOV A, R3
        ADD A, @R0
        MOV R3, A
        MOV A, R2
        ADDC A, #0
        MOV R2, A
        DJNZ R1, LOOP
        SJMP $
        END

完整的程序如下:

        ORG 0000H

BCDHEX: MOV R0, #40H
        MOV R1, #03
        MOV A, @R0
        MOV R3, A
        
SOLVE:  MOV A, R3
        MOV B, #10
        MUL AB
        MOV R3, A
        MOV A, B
        XCH A, R2
        MOV B, #10
        MUL AB
        ADD A, R2
        MOV R2, A
        INC R0
        MOV A, R3
        ADD A, @R0
        MOV R3, A
        MOV A, R2
        ADDC A, #0
        MOV R2, A
        DJNZ R1, SOLVE
        SJMP $
        END
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,140评论 0 2
  • 中国有多少人真正的懂得理财? 2017年中国城镇常住人口81347万人,乡村常住人口57661万人,这个数据大家都...
    小鱼嘻嘻阅读 2,649评论 0 0
  • 持续的成长,收获不一样的人生 6月25日,高考成绩开始公布,有的家长和考生查过成绩乐了,信心满满;也有的的孩子迟迟...
    ccjl西西阅读 1,243评论 0 0
  • 连着三天发文,便有朋友来“质疑”这突然间的爆发 其实,每次疯玩过后都会想安安静静记录些什么,这种心情类似于小时候每...
    周小葵OnRoad阅读 2,976评论 1 0
  • 纽约,这个阴暗、混乱、冷漠的城市,是马修的栖身处、困扰地、想要逃亡的牢笼、原地打转的安全区。故事的一开始,是一个平...
    星期日的契里柯阅读 3,523评论 0 3

友情链接更多精彩内容