次のコードを使用して、ebxの下位2バイトを上位2バイトに「格納」し、下位bxを「プール」へのオフセットにアクセスするための一時変数として使用しようとします。最後に、データを右にシフトして、元の値(元々は下位2バイトのみを使用)を復元します。
rol ebx, 16
mov bl, dl
;(other operations involving bx)
mov [pool+bx], dword esi
shr ebx, 16
これはnasmで問題なく組み立てられますが、エラーが発生します
適合するように切り捨てられた再配置:`.data'に対するR_386_16
リンクするとき。このエラーを回避する方法について何かアドバイスはありますか?文字通りすべてのレジスタがespを保存し、セグメントレジスタが使用されているため、単に別のレジスタを使用することはできません。
編集:誰かが尋ねると思いますので、32ビットアセンブリを使用しています