【问题标题】:gnu assembler convert int to stringgnu 汇编程序将 int 转换为字符串
【发布时间】:2014-04-30 17:00:18
【问题描述】:

这里是新手。我在 Linux 中使用 GNU Assembler (GAS)。我只是想在终端上打印除“Hello world”之外的其他内容。但是,如果我打印一个数字,则不会打印任何内容。这是代码。

.section .data

msg: .ascii "Hello world"
msglen = . - msg
numericData: .long 1
numericDataLen = . - numericData
.section .text

.globl _start

_start:

movl $4, %eax
movl $1, %ebx
movl $numericData, %ecx
movl $numericDataLen, %edx
int $0x80
movl $1, %eax
int $0x80

.section .bss

您可以想象,当我用 numericData 加载 ECX 时,我希望它在控制台中打印出“1”。相反,我什么也得不到。为什么,以及如何打印出来?

使用 NASM,我们在打印整数方面没有问题,如下所示:http://www.tutorialspoint.com/assembly_programming/assembly_numbers.htm

附:不,我不想在 C 中使用 printf。我想坚持使用原始的、纯粹的汇编代码。 :-)

【问题讨论】:

    标签: assembly x86 nasm gnu


    【解决方案1】:

    请注意,您链接的 nasm 代码在 ascii 之间来回转换,您在这里没有这样做。它也只处理个位数。因此,它只不过是一个打印字符。 把numericData: .long 1改成numericData: .byte '1'也可以达到类似的效果。

    否则你将不得不编写一个二进制到 ascii 的转换函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2013-10-27
      • 2011-10-02
      • 2011-03-06
      相关资源
      最近更新 更多