是/否:
这是一个简单的nasm"Hello World"程序
section .text
global _start
_start:
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov eax, 1
int 0x80
section .data
msg db 'Hello, world!',0xa
len equ $ - msg
但是,我可以在不创建部分.data
的情况下将mov
字符串转换为ebx
吗?
示例:
mov ecx, "Hello World"
这样做可能吗?
我试过类似的东西
wordvar dw 123
但我犯了一个错误。
- 是的,不强制将数据放入
.data
部分。如果msg
在.text
部分中,您的程序将正常工作(按原样,在exit(2)
之后,因此它不被视为指令代码(
请注意,.text
是只读的。阅读SECTION
指令的ELF扩展,以了解有关此部分和其他标准部分的更多信息 - 不,这是不可能的,因为
write(2)
将期望内存地址写入指定的FD,而不仅仅是寄存器的内容。在Hello Worldmov ecx, 'ABCD'
中写入"地址"0x44434241
,这显然是错误的