単純加算:メモリから
add eax, ebx ; Adds eax and ebx and stores the result in eax
負荷は、次いでメモリに格納し、追加:上記の例で
mov eax, DWORD PTR [esi] ; Load a double word from memory into eax
mov ebx, DWORD PTR [edi] ; Load a double word from memory into ebx
add eax, ebx ; Adds eax and ebx and stores the result in eax
mov DWROD PTR[esi], eax ; Store a double word in eax into memory
、DWORD PTRを厳密に必要とされませんそれはあいまいさを取り除き、コードを読みやすくするので、練習するのは良い習慣です。
同じサイズのレジスタ(上記の例ではDWORD)のみを追加できることを覚えておくことが重要です。あなたはサイズの異なる二つのレジスタを追加したい場合は、次の
mov al, BYTE PTR [esi] ; Loads a single byte from memory into al
mov bx, WORD PTR [edi] ; Loads a word from memory into bx
movzx eax, al ; Zero extends al into the entire eax register
movzx ebx, bx ; Zero extends bx into the entire ebx register
add eax, ebx ; Adds eax and ebx and stores the result in eax
を同じことを行うための簡単な方法があるので、これはそれほど良い例ではありませんが、うまくいけば、それはあなたが使用できるトリックのいくつかを紹介します。あなたはまた、レジスタにメモリ値を追加することができます
:
mov eax, DWORD PTR [esi] ; Load a double word from memory into eax
add eax, DWORD PTR [edi] ; Add a double word in memory to eax
はここで参照として使用するには良いサイトです:http://ref.x86asm.net/
ヒープありがとう!これは役に立ちました。 「同じことをする簡単な方法がある」とはどういう意味ですか?しかし、とにかく、ありがとう。 – Progrmr
また、2つの数値を追加すると、変数にその値を置き、その変数をコンソールに表示するにはどうすればいいですか?ありがとう。 – Progrmr
別のmov/movzx命令の代わりに、単にmovzx eax、BYTE PTR [esi]を実行することができます。コンソールから取得して印刷する場合は、次のリンクを試してください:http://www.masm32.com/board/index.php?topic=1094.0 – Sparafusile