邏輯運算
5.非運算:0為1,1為0
彙編:not c語音:!
計算機的計算2+3運算(cpu)
組合語言的2➕3的計算
兩個16進位制數代表一個位元組
一個位儲存一個1和0
暫存器與記憶體
CPU裡的儲存容器為暫存器,
記憶體條裡的儲存容器為記憶體
1.暫存器
32位指的是32個位元組
ADD是加法,SUB為減法。
MOV EAX, 12345678 //1234678為立即數
ADD EAX,1 //EAX加上1,並放到EAX裡(EAX+1=EAX)
MOV ECX,2
ADD EAX,ECX
SUB EAX,3 //EAX-3=EAX
2.記憶體
1.32位指記憶體裡的定址條最大定址範圍(即0xfffffffff)
也是指4g,但也可以超過4g.
2.每個記憶體單元的寬度為8
1kb=1024位元組
使用
定址公式:
1.立即數
讀取記憶體的值
MOV EAX,DWORD PTR DS:[0X13FFC4] //dword--32位
MOV EAX,DWORD PTR DS:[0X13FFC8]
向記憶體寫入資料
MOV DWORD PTR DS:[0X13FFC4],0x87654321
MOV DWORD PTR DS:[0X13FFC8],ebx
獲取記憶體編碼
LEA ECX,DWORD PTR DS:[0X13FFC4]
LEA EAX,DWORD PTR DS:[ESP+8]
2.用暫存器表示地址
讀取記憶體值
MOV ECX,0X13FFC4 //把地址放進ECX裡
MOV EAX,DWORD PTR DS:[ECX]
3.暫存器+立即數
讀取記憶體值
MOV ECX,0X13FFC4
MOV EAX,DWORD PTR DS:[ECX+4] //取得是0x13FFC8
4.[reg+reg*i] //reg指暫存器,i為1,2,4,8
MOV EAX,0X13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX+ECX*4] //0X13FFC4+(2*4)
5.[reg+reg*i+立即數] //i為1,2,4,8
MOV EAX,0X13FFC4
MOV ECX,2
MOV EDX,DWORD PTR DS:[EAX+ECX*4+4] //0X13FFC4+(2*4)+4
堆疊
1.本質為記憶體
2.棧 是用來儲存臨時變數,函式傳遞的中間結果
棧頂(esp),棧底(ebp)
入棧(push),出棧(pop)——地址都是改變esp
3.
待續。。。。。