在第7机械臂组件中打印3位十六进制数字

时间:2014-04-10 14:53:21

标签: assembly arm hex

好吧,伙计们,我需要你帮忙解决这个问题。我试图打印出3位十六进制数字,每次增加345。我理解在汇编中我应该分别打印十六进制数的每个部分。我会通过轮班来做到这一点" lsr"但是我得到的数字的第一部分编号错误。 0之后的第一个数字应该是149(十进制的345),但我得到的是A59(十进制的2649)。

继承我的代码

.globl _start
_start:
    ldr r4,=0x101f1000
    mov r0, #0x00
    lsl r0, #4
    add r0, #0
    mov r5, #0xBB
    lsl r5, #4
    add r5, r5, #8
my_loop:
    cmp r0, r5
    bgt my_exit
    lsr r1, r0, #6
    and r1, r1, #0x0000000f
    cmp r1, #10
    addlt r1, r1, #48
    addge r1, r1, #55
    str r1, [r4]
    lsr r1, r0, #4
    and r1, r1, #0x0000000f
    cmp r1, #10
    addlt r1, r1, #48
    addge r1, r1, #55
    str r1, [r4]
    lsr r1, r0, #0
    and r1, r1, #0x0000000f
    cmp r1, #10
    addlt r1, r1, #48
    addge r1, r1, #55
    str r1, [r4]
    mov r1, #13 
    str r1, [r4]        
    mov r1, #10     
    str r1, [r4]        

    add r0, r0, #99
    add r0, r0, #99
    add r0, r0, #99
    add r0, r0, #48
    b my_loop

my_exit:

1 个答案:

答案 0 :(得分:0)

我只是想通了我的班次不正确应该是8位而不是6.还要感谢@Michael提供相同的答案。