|
Windows XP Professional Xeon 2.8GHz x 2 Microsoft VisualC++ 6.0 |
#include <stdio.h>
int add_int (int a, int b) {
int c;
__asm {
mov eax, a // eaxレジスタにaの値をコピー
add eax, b // eaxレジスタとbの値を加算してeaxレジスタに保存
mov c, eax // cにeaxレジスタの値をコピー
}
return c;
}
int main (void) {
printf ("1 + 1 = %d\n",add_int (1, 1));
return 0;
}
|
|
1 + 1 = 2 |
|
ADD - 整数加算 第1オペランドと第2オペランドとの整数加算を行う.加算結果は第1オペランドに代入される. |
||||||||||||||||||||||||||
|
|
MOV - 転送 第1オペランドに第2オペランドの値を転送する |
||||||||||||||||||||||||||
|
| r8 | 汎用バイトレジスタ(AL,CL,DL,BL,AH,CH,DH,BH) |
| r16 | 汎用ワードレジスタ(AX,CX,DX,BX,SP,BP,SI,DI) |
| r32 | 汎用ダブルワードレジスタ(EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI) |
| m8 | バイトメモリオペランド(通常は変数名) |
| m16 | ワードメモリオペランド(通常は変数名) |
| m32 | ダブルワードメモリオペランド(通常は変数名) |
| imm8 | 即値バイト値(-128〜+127) |
| imm16 | 即値ワード値(-32,768〜+32,767) |
| imm32 | 即値ダブルワード値(-2,147,483,648〜+2,147,483,647) |
| AL | ALレジスタ |
| AX | AXレジスタ |
| EAX | EAXレジスタ |