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

これらすべての変数のメモリアドレスを見つけるにはどうすればよいですか? Uは画像のエラーを見ることができます

ここに画像の説明を入力

4

1 に答える 1

1

OFFSET修飾子を使用します。例:

mov ax, OFFSET VARA

VARAのアドレスをレジスタにロードしますaxLEA命令を使用して同じことを達成することもできます。

lea ax, VARA
于 2016-11-08T10:37:14.017 に答える