第一个汇编程序

First assembler program

我正在尝试为 UNIX 编译我的第一个汇编程序,但出现了很多错误。例如,此代码(预期从键盘读取和写入数字)给我 "Segmentation fault" 消息:

.data
.code32
printf_format:
  .string "%d\n"
scanf_format:
  .string "%d"
number:
  .space 4

.text 
.globl main
 main:

 pushl $number
 pushl $scanf_format
 call scanf
 addl , %esp

 pushl number
 pushl $printf_format
 call printf
 addl , %esp
 movl [=10=], %eax
 ret

如果您使用 gcc -m32 example.s 编译您的示例,则它工作正常。如果使用 GAS/LD-combination,则不能使用 ret 终止它。改用:

pushl [=10=]
call exit