linux x64加法程序

标签 linux assembly x86-64 nasm

我正在使用 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
  1. 不要使用 int0x80!,为了更好的可移植性,请使用 syscall 而且 int 0x80 在我的系统上不起作用。

希望对你有帮助,如有错误请指正

关于linux x64加法程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649076/

相关文章:

linux - mmap 文件 - 确定哪个页面是脏的

linux - 某些 Htaccess 命令阻止了我的 linux cron 作业

java - 在 Linux 中使用 java 通过 java.io.File 导入创建文件?

assembly - 分支指令和带有链接指令的分支之间的主要区别是什么? ARM ?

assembly - 有没有办法找到未记录的处理器的指令集?

assembly - 在 x64 中调用绝对地址

linux - x86-64 Linux 堆栈未对齐时没有段错误

linux - 如何从 auditctl 中删除规则

linux - 当我尝试添加一个文件名在 Windows 上无效的文件时,我可以让 git 警告我吗?

linux - 查看一个 CPU 有多少个硬件性能计数器