5

コンパイラやアセンブリ言語について学んできたので、演習として自分のアセンブラを書いてみたいと思います。しかし、いくつか質問があります。

@DATA や OFFSET/ADDR VarA などのセグメントのアドレスを計算するにはどうすればよいですか?

例として、簡単なアセンブリ プログラムを取り上げます。

    .model small
    .stack 1024
    .data
          msg db 128 dup('A')
    .code
    start:
        mov ax,@data
        mov ax,ds
        mov dx, offset msg
                           ; DS:DX points at msg
        mov ah,4ch
        int 21h            ; exit program without using msg
    end

では、アセンブラはセグメントのセグメント アドレスをどのように計算するの@dataでしょうか。

そして、何を即時に入れるべきかをどのように知るのmov dx, offset msgでしょうか?

4

2 に答える 2