Memory 为寄存器程序集分配内存位置

Memory 为寄存器程序集分配内存位置,memory,assembly,x86,att,Memory,Assembly,X86,Att,比如说,我有四个特定的内存地址,每个地址都包含一个32位整数。如何使用汇编语言获取地址并将其分配给寄存器%eax 它是不是movl 0x12AED567,%eax?是的,就是这么简单。如果您已经有了地址,只需将它们分配给eax,我稍微更正了您的代码: mov 12AED567h, eax 但是,如果要动态获取地址,必须使用lea指令,下一个小程序将演示如何: .stack 100h .data my_number dd A01Ch .code ;INITIALIZE DAT

比如说,我有四个特定的内存地址,每个地址都包含一个32位整数。如何使用汇编语言获取地址并将其分配给寄存器
%eax


它是不是
movl 0x12AED567,%eax

是的,就是这么简单。如果您已经有了地址,只需将它们分配给eax,我稍微更正了您的代码:

mov 12AED567h, eax
但是,如果要动态获取地址,必须使用lea指令,下一个小程序将演示如何:

.stack 100h
.data
my_number dd A01Ch
.code          
;INITIALIZE DATA SEGMENT.
  mov  ax,@data
  mov  ds,ax

;GET THE MEMORY ADDRESS OF MY_NUMBER, NOT THE NUMBER ITSELF.  
  lea  eax, my_number    

;FINISH THE PROGRAM PROPERLY.
  mov  ax,4c00h
  int  21h           
这就是你要找的吗


顺便说一下,这是一个采用英特尔语法的8086汇编程序。

您提到了四个特定的内存地址。然后你问,…记下地址。。。。你指的是这四个人中的哪一个?或者他们中的任何一个?通常,您关心的数据位置都有标签,当您想要引用它们时,可以通过标签来引用它们。内存中由4项组成的块的标记方式取决于它们是什么。如果它是一个数组,则可能在最低地址都有一个标签。或者他们都有自己的标签。通常,如果你有数据,它会被标记,你会使用标签,而不是文字十六进制地址。我同意,潜伏者,在这种情况下,你使用LEA来获取变量的地址。是的,这回答了我的问题。非常感谢。好吧,如果你愿意,你可以接受答案(作为正确的答案),或者对它投赞成票(或者两者兼而有之!)。