繁体   English   中英

在Arm 7组件中打印3位数的十六进制数字

[英]Printing 3-digit Hex numbers in Arm 7 Assembly

好的,我需要您对此程序的帮助。 我正在尝试打印每次增加345的3位十六进制数字。 我知道我应该在汇编中分别打印十六进制数字的每个部分。 我可以通过执行移位“ 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:

我只是发现我的移位不正确,应该是8位而不是6位。还要感谢@Michael给出了相同的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM