本によると、レジスタは小さなストレージスペースを持つCPU内の場所です(例:16ビットCPUの16ビット)。では、CPUレジスタはどのようにアドレスを持っているのでしょうか?また、メモリ内ではなくCPU上にある場合、どのようにして変位を追加できますか?
例:
mov ax, [bx+1000h]
本によると、レジスタは小さなストレージスペースを持つCPU内の場所です(例:16ビットCPUの16ビット)。では、CPUレジスタはどのようにアドレスを持っているのでしょうか?また、メモリ内ではなくCPU上にある場合、どのようにして変位を追加できますか?
例:
mov ax, [bx+1000h]
x86 レジスタは、名前によってのみアドレス指定されます。この式bx+1000h
は単に「レジスタ bx の値に 1000h を加えた値」を意味し、結果は[...]
レジスタ空間ではなくメモリへのアドレスとして (表記法を介して) 解釈されます。
式の全体的な解釈は、「アドレス bx が指すアドレスの 1000h バイト後にある 16 ビットを ax にロードする」です。
の内容をアドレスとして解釈し、bx
それをオフセットで置き換えることによって行われます。
その場合、の内容はbx
メモリの場所に保存されます1000h
ax
2000h