如何在NASM中使用未声明的字符串



这是一个简单的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,这显然是错误的

相关内容

  • 没有找到相关文章

最新更新