>>124
訂正:

hogehoge  db 'xxxx', 0
       mov cl, hogehoge
とすると、
        mov cl,[offset hogehoge]
と言う意味になり、encode としては、
       mov cl, [RIP + (offset hogehoge - offset label1)]
label1:
のように、RIP 相対の disp
       mov cl, [RIP + disp32]
に encode される。この場合の disp32 は、意味としては、rel32 で、
RIP からの32BIT相対アドレス。


ちなみに、masm では、
hoge1   db 'aaa'    ;1

hoge2:  db 'aaa'     ;2
は明確に区別されており、hoge1 は、byte 型の配列変数のような取り扱いになり、
    mov  al, hoge1    ;1
は、masm には通らないが、旧来のアセンブラの感覚で言えば、意味的には、
    mov  al, qword [offset hoge1]   ;3
となり、hoge2 の方は、直後の db 命令とは全く関係の無い単なる near アドレスと解釈され、
    mov  rax, hoge2     ;4
は、意味的には、
    mov  rax, offset hoge2    ;5
となる、ただし、4は、もしかするとそれ自体が文法上、masm の構文に合わないかもしれない。
masm は、「マクロアセンブラ」であって、通常のアセンブラとは結構異なるので。