gpt4 book ai didi

linux - 在 Linux 中使用汇编将变量打印到命令行

转载 作者:太空狗 更新时间:2023-10-29 12:05:55 24 4
gpt4 key购买 nike

在尝试 Linux 汇编时,我遇到了以下问题。我才刚刚起步,所以我的程序是一个相对简单的程序,源 self 在 linuxassembly 上找到的一些示例。它接受传递给命令行的第一个参数并将其打印出来。这是我到目前为止所拥有的...

section .bss
test_string: resb 3

section .text
global _start

_start:
pop ebx ;argument number
pop ebx ;program name
pop ebx ;first argument
mov [test_string],ebx

mov eax,4
mov ebx,1
mov ecx,test_string
mov edx,3
int 80h

mov eax,1
mov ebx,0
int 80h

我知道这写得不好,但由于我是新手,我只是想在继续之前更好地了解汇编指令/变量的工作原理。我使用...组装和链接...

nasm -f elf first.asm
ld -m elf_i386 -s -o first first.o

然后我运行使用..

./first one two

我原以为它会打印出 one 但它打印出像 Y*& 这样的乱码。我究竟做错了什么?我的 test_string 类型错误吗?

最佳答案

您试图打印出指向字符串的指针的值,而不是打印字符串。你想改为这样做。

pop ebx     ;argument number
pop ebx ;program name
pop ebx ;pointer to the first argument

mov ecx,ebx ;load the pointer into ecx for the write system call

mov eax,4 ;load the other registers for the write system call
mov ebx,1
mov edx,3
int 80h

mov eax,1
mov ebx,0
int 80h

关于linux - 在 Linux 中使用汇编将变量打印到命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753106/

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