1

你好,我是汇编语言的新手。我正在尝试使用 DOSBOX 和 MASM 编译器获取变量 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

我怎样才能找到所有这些变量的内存地址?你可以看到图像中的错误

在此处输入图像描述

4

1 回答 1

1

使用OFFSET修饰符,例如:

mov ax, OFFSET VARA

将地址加载VARAax寄存器中。您也可以使用该LEA指令来实现相同的目的:

lea ax, VARA
于 2016-11-08T10:37:14.017 回答