2

私はasmを学び始めました、そして私はMOV命令を使用するこれらの2つの異なる方法の違いは何であるか疑問に思いましたAL

初め:

MOV AL,5H

2番:

MOV SI,5H
MOV AL,[SI]
4

2 に答える 2

7

これらの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アセンブリ。アセンブリは一般的に簡単な言語ですが、チュートリアル/本に従って、最初に構文を完全に理解してから、アセンブリの読み取りと書き込みの野生の世界に飛び込むのが最善です。

また、他のリソースについては、こちらをご覧ください。

于 2012-10-04T12:14:37.767 に答える
2
  1. ALレジスタの値を5Hに設定するだけです
  2. 最初にSIレジスタを5Hに設定し、次にSIによって逆参照された値をALに移動します(つまり、メモリアドレス5HにあったものはすべてALに移動されます)。

たとえば、SIなどのインデックスレジスタを使用する場合は、ゼロ以外のベースオフセットを適用することもできます。

MOV AL,[BX + SI]

最初にBXを適切なベースオフセットアドレスに設定した後。

于 2012-10-04T12:13:50.683 に答える