armv8 程序集中的 ascii 数字

Number to ascii in armv8 assembly

提问人:CODECARL 提问时间:11/14/2023 最后编辑:Nate EldredgeCODECARL 更新时间:11/19/2023 访问量:24

问:

我需要帮助将数字转换为 ASCII。这是我到目前为止的代码:

.global itoascii

itoascii:

    /* Initialize variables */
    mov x1, #10               /* Divisor */
    mov x2, buffer            /* Buffer address */

convert_loop:
    udiv x3, x0, x1           /* Divide the number by 10, quotient in x3, remainder in x0 */
    add x4, x0, #'0'          /* Convert remainder to ASCII */
    strb w4, [x2], #1         /* Store ASCII character in buffer and increment buffer pointer */

    cmp x3, #0                /* Check if quotient is zero */
    beq end_conversion        /* If quotient is zero, exit the loop */

    mov x0, x3                /* Update the number with the quotient */
    b convert_loop            /* Repeat the process */

end_conversion:
    mov x0, x2                /* Return the address of the buffer */
    ret

.data
    /* Put the converted string into buffer,
       and return the address of buffer */
    buffer: .fill 128, 1, 0
程序集 ASCII ARM64 ARMv8

评论

0赞 Nate Eldredge 11/19/2023
欢迎来到 Stack Overflow!一些一般提示:(1)在开头和结尾使用自己的行格式化代码块。有关格式设置的详细信息,请参阅 stackoverflow.com/help/formatting。(2)使用汇编语言问题的汇编标签,以及你正在编程的特定架构的标签;armv8 没问题,但 arm64 得到了更多的关注。```
1赞 Peter Cordes 11/19/2023
这将以相反的顺序存储数字。从缓冲区的末尾开始,然后向后循环。此外,您需要余数作为数字(使用商、除数和原始除数。请参阅 如何在没有 printf 的情况下在汇编级编程中打印整数 从 c 库?(itoa,整数到十进制 ASCII 字符串)对于可以针对 AArch64 编译的 C 语言算法。此外,将标签地址放入 AArch64 中的寄存器中不起作用。msubmov
1赞 Nate Eldredge 11/19/2023
(3)一般来说,你应该问具体的问题,而不是“我需要写这个,请帮忙”。解释你测试了什么,出了什么问题(确切的输出和/或错误消息),你试图修复它,等等。这里的人会帮助你解决你的问题,但他们不会只为你做这件事。

答: 暂无答案