[英]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.