Assembly GNU ASM(英特尔语法)获取不带LDA的标签地址
我有一个奇怪的情况,我不确定这是GNU汇编程序的错误还是我做错了什么。我想我最终会切换到nasm,但我正在使用一些为GNU汇编程序编写的宏 例如,我有一个带有如下变量的标签:Assembly GNU ASM(英特尔语法)获取不带LDA的标签地址,assembly,code-generation,nasm,gnu-assembler,intel-syntax,Assembly,Code Generation,Nasm,Gnu Assembler,Intel Syntax,我有一个奇怪的情况,我不确定这是GNU汇编程序的错误还是我做错了什么。我想我最终会切换到nasm,但我正在使用一些为GNU汇编程序编写的宏 例如,我有一个带有如下变量的标签: msg1: .asciz "hello world" var1: .long 0 现在我期望mov-eax,var1-to-mov指针指向var1-eax,而mov-eax,[var1]应该将该变量的内容移动到eax,但两者都给我相同的代码,给我该变量的内容。我知道我可以使用LDA,但这不是必须的。如果我想将指针推到某个
msg1:
.asciz "hello world"
var1:
.long 0
现在我期望mov-eax,var1-to-mov指针指向var1-eax,而mov-eax,[var1]应该将该变量的内容移动到eax,但两者都给我相同的代码,给我该变量的内容。我知道我可以使用LDA,但这不是必须的。如果我想将指针推到某个字符串,我必须执行以下操作
lea eax, msg1
push eax
另一个问题。我用.set定义一个常量,如下所示:
.set const1 0x1000
moveax,const1给出0x1000处的内存内容,而不是立即数。我能做些什么来解决这个问题 英特尔语法是mov eax,偏移量msg1英特尔语法是mov eax,偏移量msg1