gpt4 book ai didi

linux - 尝试在 Linux 上的 NASM 中编写 for 循环时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:29 25 4
gpt4 key购买 nike

为了好玩,我正尝试编写一个简单的 NASM 程序,但我似乎无法弄清楚如何在其中编写 for 循环。使用以下代码,我得到了一个段错误。下面的代码应该打印出“Hello world!”然后是从 1 到 100 的所有数字。

section .data
message: db 'Hello world!', 10
messageLength: equ $-message

section .text
global _start

_start:
mov eax, 4
mov ebx, 1
mov ecx, message
mov edx, messageLength
int 80h

mov ecx, 0
jmp loop

mov eax, 1
mov ebx, 0
int 80h

loop:
mov eax, 4
mov ebx, 1
mov edx, 1
int 80h

add ecx, 1
cmp ecx, 100
jl loop

最佳答案

在跳转到循环之前,您将 0 分配给 ECX...

这意味着您的程序将尝试打印位于内存地址 0 的字符串,您不拥有该字符串,因此出现段错误...

请记住,您正在处理内存地址。将 10 分配给寄存器值实际上不会打印 10,在 ASCII 中...这只是意味着您正在获取内存地址 10...

关于linux - 尝试在 Linux 上的 NASM 中编写 for 循环时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com