我是一名新手汇编程序员,遇到了在屏幕上打印字符的问题。每次执行程序时,都会出现分段错误,我不知道原因在哪里。
.section .data
A:
.long 65 # ascii code for 'A'
.section .text
.globl _start
_start:
movl $1, %edx # length of character to print, 1
movl A, %ecx # what I want printed
movl $1, %ebx # file descriptor for STDOUT
movl $4, %eax # syscall number for sys_write
int $0x80 # calls kernel
movl $0, %ebx # return status
movl $1, %eax # syscall number for sys_exit
int $0x80 # calls kernel
这些是我用来构建的命令(我的文件名为write.s)
as write.s -o write.o
ld write.o -o write
这不是打印字符的正确方法吗?任何帮助将不胜感激。
file
命令将我的可执行文件列为32位ELF文件。 - Hunter McMillenmovl
会加载该地址。但是leal
完成了这项工作。您介意将其作为答案,并指点我可以用于汇编的调试器吗?@NiklasB。 - Hunter McMillenstrace
跟踪你的程序吗? - Basile Starynkevitch