【发布时间】:2014-05-22 14:57:45
【问题描述】:
我在使用 64 位汇编程序时遇到问题,我只是想使用 div -> 7/2,但出现内存访问错误,不知道为什么
section .text
global _start:
_start:
xor rdx, rdx
mov rax, 7
mov rbx, 2
div rbx,
mov rax, rdx
ret
我使用的是 64 位寄存器,所以寄存器没有问题,所以一切正常,但我得到一个错误,不知道为什么
编辑
我知道这不是汇编程序的问题,但我做错了但不确定是什么
我正在使用 nasm
更新代码
section .text
global _start:
_start:
xor rdx, rdx
mov rax, 7
mov rbx, 2
div rbx,
int 80h
mov rax, 1
现在它什么也不做,没有任何错误
【问题讨论】:
-
请告诉我们你调用这个函数的代码。
-
问题是最后的
ret——如果你在linux上运行这个没有libc,你不能使用ret来结束进程,你必须使用exit syscall。跨度> -
@Ruud 我不明白你的意思,但我有一个名为 divtest.asm 的文件,在终端中我输入 nasm -f elf64 divtest.asm 然后 ld -s -o modtest modtest。 o 这样然后 ./modtest 在此命令之间只有在最后一个命令之后才没有错误我得到内存访问错误而没有任何问题所在的行
-
@Jester 我添加了 int 80 而不是 ret 但我仍然得到同样的错误
-
@Jester 我更新了我的代码
标签: assembly 64-bit nasm x86-64