尝试将值传递给保留字节

问题描述 投票:0回答:1

我想将“hello world”传递给保留的“teste”,但它只读取传递的字符串的第一个字符。

section .bss
    teste resb 1024

section .text
    global main

main:
    mov byte [teste], "hello world"

    mov eax, 4
    mov ebx, 1
    mov ecx, teste
    mov edx, 10
    int 0x80

exit_program:
    mov eax, 1      
    xor ebx, ebx
    int 0x80

我已经尝试从

byte
更改为
qword
,但它只增加了 3 个字节并打印“hell”

assembly x86 nasm
1个回答
0
投票

我已经尝试从

byte
更改为
qword
,但它只增加了 3 个字节并打印“hell”

在 32 位编程中,不能使用 64 位立即数。只需 3 次 32 位移动即可完成此操作:

mov  ecx, teste
mov  dword [ecx], "hell"
mov  dword [ecx + 4], "o wo"
mov  dword [ecx + 8], "rld "
mov  eax, 4
mov  ebx, 1
mov  edx, 10
int  0x80

mov  dword [ecx + 8], "rld"
也有效。然后 NASM 将用零填充来写入完整的双字。

要显示整条消息,请使用

mov edx, 11
(10 为一短)。

© www.soinside.com 2019 - 2024. All rights reserved.