X86レジスタは、MOVSB命令のソースの場所を示しますか?
-
28-09-2019 - |
質問
X86レジスタは、MOVSB命令のソースの場所を示しますか?
解決
32ビットモードで、 esi
.
具体的には、 movsb
1バイトからコピーします ds:esi
に es:edi
, 、両方を調整します esi
と edi
方向フラグに応じて、上または下のいずれかで1までに。
他のヒント
マニュアルからその情報を抽出する方法
osdev.orgにログインしたので、実際にそれを学んで道徳的な負債を支払う時が来ました。 :-)
Intelマニュアルボリューム2命令セットリファレンス-325383-056US 2015年9月 セクション「MOVS/MOVSB/MOVSW/MOVSD/MOVSQ - 文字列から文字列へのデータを削除」と述べています。
2番目のオペランド(ソースオペランド)で指定されたバイト、ワード、またはダブルワードを、最初のオペランド(宛先オペランド)で指定された場所に移動します。ソースオペランドと宛先オペランドの両方がメモリにあります。ソースオペランドのアドレスは、DS:ESIまたはDS:SIレジスタから読み取られます
最小限のテストプログラム
最後に、指示を使用して正しく理解したかどうかを確認する最小限のプログラムを作成する必要があります。
section .data
src db 0
dest db 1
section .text
global _start
_start:
mov esi, src
mov edi, dest
cld
movsb
/* dest == 0*/
これの実行可能なバージョンは、アサーションを使用しています githubで.
所属していません StackOverflow