我正在使用 x64 程序集制作一个加法程序,但它在运行时不显示值(使用 nasm、elf64 编译)。
section .text
global _start
_start:
mov rax, 0
add rax, [num1B]
add rax, [num2B]
mov [result], rax
mov rsi, [result]
;mov rdx, 8
mov rax, 4
mov rdi, 1
int 80h
mov rax, 1
mov rdi, 0
int 080h
section .data
num1B: dq 0Ah
num2B: dq 0Ah
result: dq 00h
有谁知道为什么这不显示任何东西
最佳答案
1.以后用printf代替中断,好多了,
2.为什么用 numB1 和 numB2 的值代替它们的位置。
使用:mov rax, numB1。
3.在 64 位 nasm 程序集中,您使用:
rdi, rsi, rbx, rcx,...
用于输入中断值的寄存器。
例如:
mov rdi, 01
mov rsi, 00
syscall
- 不要使用
int0x80
!,为了更好的可移植性,请使用syscall
而且int 0x80
在我的系统上不起作用。
希望对你有帮助,如有错误请指正
关于linux x64加法程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649076/