簡體   English   中英

無法在程序集中添加兩個值

[英]Cannot add two values in assembly

我正在嘗試通過在線閱讀文檔和教程來學習一些基本的匯編語言。

我現在已經編寫了我的第一個匯編程序,它將添加兩個值 (s = x + y),然后將總和設置為退出值。

 .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? 為什么會出現分段錯誤?

您的添加很好,但您沒有正確退出。

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

這是未經測試的,但我認為它會解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM