void AddOther()
{
int a, b, r;
cin>>a;
cin>>b;
__asm
{
//add a, b; //不正确的操作数类型
//add ->先移到寄存器中
mov eax, a;
mov ebx, b;
add eax, ebx;
mov r, eax;
}
cout << r << endl;
}
void Increase()
{
cout << "start increasing" << endl;
int a;
cin >> a;
__asm
{
inc a;
}
cout << a << endl;
cout << "end" << endl;
}
void Decrease()
{
cout << "start decreasing" << endl;
int a;
cin >> a;
__asm
{
dec a;
}
cout << a << endl;
cout << "end" << endl;
}
void Negtive()
{
cout << "negtive" << endl;
int a;
cin >> a;
__asm
{
neg a;
}
cout << a << endl;
}
void Subtract()
{
cout << "subtract" << endl;
int a, b;
cin >> a;
cin >> b;
_asm
{
mov eax, a;
mov ebx, b;
sub eax, ebx;
mov a, eax;
}
cout << a << endl;
}
void Multiply()
{
cout << "Multiply" << endl;
int a, b;
cin >> a;
cin >> b;
//mul a eax=eax*a, 结果保存在eax中
_asm
{
mov eax, a;
mul b;
mov a, eax;
}
cout << a << endl;
}
void AddTwoNumbers(int* storehere, int number1, int number2)
{
_asm
{
mov eax,dword ptr [number1];
add eax,dword ptr [number2];
mov ecx,dword ptr [storehere];
mov dword ptr [ecx],eax;
}
}
void main( )
{
//Add();
//Increase();
//Decrease();
//Negtive();
//AddOther();
//Subtract();
//Multiply();
int a = 3;
int b = 5;
int r;
AddTwoNumbers(&r, a, b);
cout << r << endl;
system("pause");
}
shl 逻辑左移,右面补零
shl 寄存器(设数值为m) 移动位数n
则寄存器结果为2n m
#include <iostream> int Power(int num, int power); int main() { std::cout << Power( 3, 8); system("pause"); return 0; } int Power(int num, int power) { //ECX为位寄存器,它的低位为CX,CX又可分为CH和CL __asm { MOV EAX, num ; MOV ECX, power //CL为CX的低bit SHL EAX, CL } // 结果保存在EAX中 }