使用汇编语言查找变量的内存位置

时间:2016-11-08 10:27:40

标签: assembly machine-language

你好,我是汇编语言的新手。我试图使用DOSBOX和MASM compilor获取变量m的内存位置这是代码

     .model small
   .stack 100H
 .data
   VARA BYTE 10   ;address is DS:xxxx
 VARB BYTE 0BH  ;address is DS:xxxx+1
 VARC WORD ?
   VARD SBYTE ?
   VARE DWORD ? 
   ARR BYTE 20 DUP(?)
  VARF SWORD 010B
  ARRB WORD 10 DUP(?)
  VARZ BYTE 0
 .CODE
  MAIN PROC
    mov ax,@data
mov ds,ax
mov ax,offset VARA
mov ah,09
int 21h

mov ax,offset VARB
mov ah,09
int 21h


    mov ax,offset VARC
mov ah,09
int 21h

    mov ax,offset VARD
mov ah,09
int 21h


    mov ax,offset VARE
mov ah,09
int 21h


mov ax,offset ARR
mov ah,09
int 21h


    mov ax,offset VARF
mov ah,09
int 21h

    mov ax,offset ARRB
mov ah,09
int 21h

mov ax,offset VARZ
mov ah,09
int 21h


mov ah,4ch
int 21h
main endp
end main

如何找到所有这些变量的内存地址?你可以看到图像中的错误

enter image description here

1 个答案:

答案 0 :(得分:1)

使用OFFSET修饰符,例如:

mov ax, OFFSET VARA

VARA的地址加载到ax寄存器中。您也可以使用LEA指令来实现相同的目标:

lea ax, VARA