分配内存位置以注册程序集

时间:2015-03-18 19:57:24

标签: memory assembly x86 att

让我们举例说,我有四个特定的内存地址,每个地址都包含一个32位整数。您如何使用汇编语言获取地址并为其分配注册%eax

movl 0x12AED567, %eax吗?

1 个答案:

答案 0 :(得分:1)

是的,就这么简单。如果您已经拥有地址,只需将它们分配给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汇编程序,采用英特尔的语法。