- 此问题在此处已有答案**:
What happens if there is no exit system call in an assembly program?(1个答案)
4小时前关门了。
我是装配新手。我正在尝试这样做:
SECTION .data
SECTION .bss
SECTION .text
global _start
_start:
nop
mov rax, 067FEh
mov bx, ax
mov cl, bh
mov ch, bl
nop
每次运行这个程序都会出现分段错误,我用gdb测试了一下哪里出错了,好像每次mov rax, 067FEh
之后都说程序收到SIGSEGV,我试着用eax
或者ax
替换rax
,还是报错,我试着在rax
里面查值,是067FEh.我不知道发生了什么.有人能帮忙吗?
1条答案
按热度按时间a64a0gku1#
SIGSEGV
来自您退出.text
部分的事实。您需要添加:以正确退出程序。如果不这样做,带有的代码将继续执行,超出程序的范围(通常执行到一串
00 00
字节中)。此外,您不需要section .data
和section .bss
声明,因为您不使用它们。