汇编字符输出

3

目前我正在使用汇编语言进行一些工作。我想将一个字符打印到控制台,我的程序没有错误,但没有输出。以下是我的当前代码:

movl  $4, %eax         #Defines Output
movl  $1, %ebx         #STDOUT as first parameter
movl  $48, %ecx        #Copy char (0) to ECX
movl  $1, %edx         #String length 1
int   $0x80            #Trigger Interrupt

movl  %eax, %ebx       #Exitcode 0
movl  $1, %eax         #System Code SYS_EXIT
int   $0x80            #Trigger Interrupt

你有没有想过为什么它没有输出?如你所见,我正在使用GAS语法。我的代码有什么问题呢?

1个回答

5
< p > sys_write 调用需要三个参数:

Register | Type         | Description
---------+--------------+----------------------------
ebx      | unsigned int | file descriptor
ecx      | const char * | pointer to data to write
edx      | size_t       | length of data

您的问题在于您将一个实际字符放在ecx中,而您应该把指向字符串的指针放在那里。


1
好的,谢谢你。如果我将48推入堆栈中,它就可以正常工作。那么%ESP是一个指向地址的指针,或者我该如何想象它呢? - Cilenco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接