我想将“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”
我已经尝试从
更改为byte
,但它只增加了 3 个字节并打印“hell”qword
在 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 为一短)。