gnu汇编程序将int转换为字符串

时间:2014-03-23 12:13:46

标签: assembly x86 nasm gnu

新手在这里。我在Linux中使用GNU汇编程序(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

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

1 个答案:

答案 0 :(得分:1)

请注意,您链接的nasm代码会在ascii之间来回转换,您不会在此处执行此操作。它也只处理一位数。因此,它只不过是一个印刷品。 如果您将numericData: .long 1更改为numericData: .byte '1',则可以达到类似的效果。

否则你必须将二进制文件写入ascii转换函数。