bx
,
bi
,
si
,
di
の4つだけがポインタとして利用できる.
しかも,[{bx,bp}+{si,di}+即値]
のような指定ができるのが特徴.
すなわち,[bx + 6]
とか,[bp + si]
,[bx + di + 1]
のような指定ができる.
クイック リファレンス |
mov byte ptr [0201H], 0FFH
|
---|
レジスタを使わない転記の場合は,バイト長の転記であることを明瞭に示す必要がある.
いずれかのオペランドがレジスタの場合は必然的に長さが決まるが,
オペランドがメモリと即値になっているような場合には
何バイトのアクセスをしようとしているかわからなくなってしまう.
このような問題を回避するため,ptr演算子が用意されている.
例えば,
1バイト長のエリアにアクセスしようとしている場合には
byte ptr [xxxxH]
,
2バイト長(1ワード長)の場合には
word ptr [xxxxH]
と記述する.
使用例 | 説明 |
---|---|
inc byte ptr [0200H] |
オフセットアドレス0200Hの1バイトのメモリをインクリメントする. |
inc word ptr [0200H] |
0200Hを下位,0201Hを上位とする1ワードのメモリをインクリメントする. |
mov byte ptr [0201H], 0FFH |