匯編 ADD指令


知識點:
加法匯編指令ADD
 

一、加法指令 ADD(Addition) 格式
格式: ADD A,B   //A=A+B;
功能: 兩數相加

1. OPRD1為任一通用寄存器或存儲器操作數,可以是任意一個通用寄存器,而且還可以是任意一個存儲器操作數.
  OPRD2為立即數,也可以是任意一個通用寄存器操作數.立即數只能用於源操作數B.
2. A和B均為寄存器是允許的,一個為寄存器而另一個為存儲器也是允許的, 但不允許兩個都是存儲器操作數.
 //也就是說A與B不能同時是指針 如: add [eax],[ebx] 這類情況是錯的
例子:
第三課中的add函數里 有如下2句代碼
00401003  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]             ;  a
00401006  |.  0345 0C       ADD EAX,DWORD PTR SS:[EBP+C]             ;  b //eax=a+b

二、ADD指令測試
int _tmain(int argc, _TCHAR* argv[])
{
    int i=0;
    printf("");

    i=i+0x100;
    i=i+0x111;

    int *p=&i;
    __asm 
    {
        mov eax,0x222
        mov ebx,0x100
        add ebx,eax //ebx322
        //
        mov ebx,p
        add [ebx],0x111 //00401048  |.  8003 11       ADD BYTE PTR DS:[EBX],11                 ;  i=i+11
        add i,0x111     //DWORD WORD
    }
    /*
    0040101C  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  eax=i=0
    0040101F  |.  05 00010000   ADD EAX,100                              ;  eax=eax+100=0+100=100
    00401024  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ;  i=eax=100
    00401027  |.  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]             ;  ecx=i=100
    0040102A  |.  81C1 11010000 ADD ECX,111                              ;  ecx=ecx+111=100+111=0x211
    00401030  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX             ;  i=ecx=0x211
    00401033  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]             ;  edx=&i=ebp-8;
    00401036  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX             ;  p=&i
    00401039  |.  B8 22020000   MOV EAX,222
    0040103E  |.  BB 00010000   MOV EBX,100
    00401043  |.  03D8          ADD EBX,EAX                              ;  ebx=ebx+eax=100+222=322
    00401045  |.  8B5D FC       MOV EBX,DWORD PTR SS:[EBP-4]             ;  ebx=i=edx=ebp-8
    00401048  |.  8003 11       ADD BYTE PTR DS:[EBX],11                 ;  i=i+11
    0040104B  |.  8145 F8 11010>ADD DWORD PTR SS:[EBP-8],111             ;  i=i+111

    */ 

    printf("");
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM