を使用した場合、アドレスのサイズを決定するためにBYTE PTRの使用:で起こる私はMBRコードを把握しようとしています(リアルモードでの16ビットアセンブリコード)と私はこれらの行を持つデータセグメント
mov si,0x7cd8
lods al,BYTE PTR ds:[si]
何リアルタイムでは、物理アドレスは「D8」です - どのように知っていますか?これは、文字列を読み込んで文字列に出力するために使用されるためです。それがこのプログラムを実行するときに私が見ることができる最初のことであり、これらはコードの最初の行です。
私の質問は、物理アドレス(セグメント* 16 +オフセット)を取得するために計算が行われたか、またはBYTE PTRがSIアドレスがバイト型であり、読み込むデータの型はバイト型ですか?
タイプは関係ありません、それは 'segment * 16 + offset'のためです。物理アドレスは 'ds = 0 'の' 0x7cd8'です。それ以外の場合は動作しません; – Jester
'BYTE PTR'は、ターゲットサイズが明白でない場合にのみ必要です。あなたの 'lods ...'は 'lodsb'と書かれています。最後に、 'ds'はとにかく' lodsxx'のデフォルトセグメントレジスタなので、セグメントのオーバーライドは不要です。 –