第一个汇编程序

时间:2015-04-27 08:39:17

标签: unix assembly printf scanf att

我正在尝试为UNIX编译我的第一个Assembler程序,但是会遇到很多错误。例如,这段代码(希望从键盘读取和写入一个数字)给了我"分段错误"消息:

.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 $8, %esp

 pushl number
 pushl $printf_format
 call printf
 addl $8, %esp
 movl $0, %eax
 ret

1 个答案:

答案 0 :(得分:1)

如果使用gcc -m32 example.s编译它,您的示例可以正常工作。如果使用GAS / LD组合,则无法使用ret终止它。改为使用:

pushl $0
call exit