私はasmを学び始めました、そして私はMOV
命令を使用するこれらの2つの異なる方法の違いは何であるか疑問に思いましたAL
:
初め:
MOV AL,5H
2番:
MOV SI,5H
MOV AL,[SI]
これらの2つは異なることをします。
; let me use friendlier syntax; IMHO, lower case and 0x5 instead of 5h is more
; readable in case of assembly
mov al, 0x5 ; al = 0x5
mov si, 0x5 ; si = 0x5
mov al, [si] ; al = *si; that is, al is now what was in memory at address 0x5
概念と構文をよりよく説明するx86アセンブリに関する簡単なウィキブックスがあります:x86アセンブリ。アセンブリは一般的に簡単な言語ですが、チュートリアル/本に従って、最初に構文を完全に理解してから、アセンブリの読み取りと書き込みの野生の世界に飛び込むのが最善です。
また、他のリソースについては、こちらをご覧ください。
たとえば、SIなどのインデックスレジスタを使用する場合は、ゼロ以外のベースオフセットを適用することもできます。
MOV AL,[BX + SI]
最初にBXを適切なベースオフセットアドレスに設定した後。