无法在程序集中添加两个值

时间:2013-12-24 22:54:06

标签: assembly add

我正在尝试通过在线阅读文档和教程来学习一些基本的汇编语言。

我现在编写了我的第一个汇编程序,它将添加两个值(s = x + y),然后将sum设置为退出值。

 .section .data
  x:   .int 40
  y:   .int 10
  sum: .int 0

.section .text

.globl _start
_start:
  movl x, %eax    ; move 40 to eax
  addl y, %eax    ; add 10 to eax
  movl %eax, sum  ; move eax to sum


  movl $1, sum    ; set sum as exit code
  int  $0x80

我确信我已经错过了关于寄存器的一些知识,因为我在执行程序时遇到了分段错误。是否可以在寄存器中添加多个值,如eax,而不会覆盖其他值?为什么我会出现分段错误?

1 个答案:

答案 0 :(得分:1)

您的添加很好,但是您没有正确退出。

; ...
movl %1, %eax ; sys_exit
movl sum, %ebx ; exit code in ebx
int $0x80

; ... movl %1, %eax ; sys_exit movl sum, %ebx ; exit code in ebx int $0x80 这是未经测试的,但我认为它会解决你的问题。