430汇编程序,将一个100以内2位数转换成低位和高位数分别输出

2019-03-24 11:35发布

就比如电子表秒数计算到25,想把25分成2和5分别查表就可以显示出来,这个小程序用汇编应该怎么写呢?PS:老师就让我用汇编编程序,真的头都大了。

老师给了我一个下面的程序,但是我实在是看不明白,求大神帮忙解读一下:
;将100以内二进制数转化为ASC码
l_str2_zcx
        swpb    r15
        clr     r14
        mov     #8,r13
l_str2_loop
        rlc     r15
        dadd.b  r14,r14
        dec     r13
        jnz     l_str2_loop
        mov.b   r14,r15
        and.b   #00fh,r15
        rla     r14
        rla     r14
        rla     r14
        rla     r14
        swpb    r14
        and.b   #00fh,r14
        add.b   #30h,r15
        add.b   #30h,r14
        ret 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
sjtitr
1楼-- · 2019-03-24 15:45
< 本帖最后由 sjtitr 于 2014-4-29 11:46 编辑

这个问题吗,首先要非常清楚这个过程,然后我们再来解读汇编。

拿到2位十进制数,首先拆成十位和个位的两个部分,无论是个位还是10位,都是{0,1,2,3,4,5,6,7,8,9}这个集合中的一个

接下来的过程,对十位数和个位数都是一样的。那就是,既然这个数小于10,那么用它直接加上数字0的ASCII码,例如5,5+【0的ASCII码】=【5的ASCII码】,就得到了它的ASCII码啦,0的ASCII码是多少呢,是0x30


  1. ;将100以内二进制数转化为ASC码
  2. l_str2_zcx
  3.         swpb    r15               ;r15中保存这原数, 把r15的高低字节互换, 目的是把二进制搞到高字节里去
  4.         clr     r14                   ;清r14的值为0
  5.         mov     #8,r13          ;设成8, 这个将来用于移位r15中的高字节
  6. l_str2_loop
  7.         rlc     r15                   ;左移r15到C, 这是最高字节的最高位
  8.         dadd.b  r14,r14         ;利用十进制加法把刚才移出来的C加上r14, 一起再加到r14, 相当于r14 * 2 + C
  9.         dec     r13                  ;移位计数减1
  10.         jnz     l_str2_loop      ; 注意这个循环结束之后, r14就应该是原来r15中那个数的十进制表示啦, 0~3位是个位, 4~7位是十位
  11.         mov.b   r14,r15        ;复制出来给r15一份
  12.         and.b   #00fh,r15     ;r15 保留个位部分, 即0~3位
  13.         rla     r14                  ;r14 左移4位, 之后十位部分就搞到高字节中去了
  14.         rla     r14
  15.         rla     r14
  16.         rla     r14                 
  17.         swpb    r14               ;交换r14的高低字节, 结果十位就回到r14的低字节的0~3位
  18.         and.b   #00fh,r14    ;保险式的只保留r14的0~3位, 这个和r15不一样, 这个里的十进制数是原数的十位部分
  19.         add.b   #30h,r15     ;加上0x30, 变为ASCII码
  20.         add.b   #30h,r14     ;加上0x30, 变为ASCII码
  21.         ret
复制代码
digitaltek
2楼-- · 2019-03-24 21:05
< :TI_MSP430_内容页_SA7 --> 在iar里用c编一个,看输出的汇编代码有助于理解
accboy
3楼-- · 2019-03-25 01:45
 精彩回答 2  元偷偷看……
emdgbx
4楼-- · 2019-03-25 02:03
sjtitr 发表于 2014-4-29 11:40
这个问题吗,首先要非常清楚这个过程,然后我们再来解读汇编。

拿到2位十进制数,首先拆成十位和个位的 ...

哇,非常感谢你啊!讲的这么详细,我现在处于很低级的起步阶段,方便留个QQ么,想跟您学习学习汇编和430
sjtitr
5楼-- · 2019-03-25 04:36
emdgbx 发表于 2014-5-6 17:17
哇,非常感谢你啊!讲的这么详细,我现在处于很低级的起步阶段,方便留个QQ么,想跟您学习学习汇编和430
...

你要的东西已经论坛留言告诉你了。
emdgbx
6楼-- · 2019-03-25 07:05
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章