gnu as のラベル参照に$付けるのと付けないのとの違い

gnu as(gas) には

label1:
    ...

という構文があって、label1はその部分のアドレスを表す。

例えば、

.code16

movw $label1, %ax

とすれば、axレジスタにlabel1のアドレスを入れることができる。

この時、

movw label1, %ax

と書いてもエラーにはならない。

この時の動作は label1 のアドレスから 2 バイト読み込みという動作になる

ちなみに

movw ($label1), %ax

とは書けないので、intel書きとは違うので注意する必要がある。