目前我正在使用汇编语言。我想打印一个字符到控制台,我的程序运行没有错误,但它没有输出。这是我目前的代码:
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语法。我的代码有什么问题?
答案 0 :(得分:5)
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
中放置一个实际角色,你应该在那里放一个指向字符串的指针。