[英]Sum function in x86 assembly - no output
我正在尝试在 x86 程序集中编写一个简单的sum
函数 - 我将3
和8
作为参数传递给它。 但是,代码不打印总和。 感谢您在发现错误方面的任何帮助。 我正在使用 NASM
section .text
global _start
_sum:
push ebp
mov ebp, esp
push edi
push esi ;prologue ends
mov eax, [ebp+8]
add eax, [ebp+12]
pop esi ;epilogue begins
pop edi
mov esp, ebp
pop ebp
ret 8
_start:
push 8
push 3
call _sum
mov edx, 1
mov ecx, eax
mov ebx, 1 ;stdout
mov eax, 4 ;write
int 0x80
mov ebx, 0
mov eax, 1 ;exit
int 0x80
对我来说,这看起来像 Linux 汇编程序。 从这个页面,在示例部分,子部分 int 0x80,看起来 ecx 需要字符串的地址:
_start:
movl $4, %eax ; use the write syscall
movl $1, %ebx ; write to stdout
movl $msg, %ecx ; use string "Hello World"
movl $12, %edx ; write 12 characters
int $0x80 ; make syscall
因此,您必须获得一块备用内存,将结果转换为字符串,可能以空值终止该字符串,然后使用 ecx 中的字符串地址调用 write。
有关如何将整数转换为字符串的示例,请参阅打印 Int(或 Int 到字符串)您必须将每个数字存储在字符串中而不是打印它,并以空值终止它。 然后你可以打印字符串。
抱歉,我已经多年没有在汇编中编程,所以我不能给你更详细的答案,但希望这足以为你指明正确的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.