那些是暫存器名稱
mov EAX,DWORD PTR [x1]
mov 是複製指令
EAX 是32位元 累加暫存器 全名,可容納一個DWORD資料
語法:
31~16 15~08 07~00 bit
|--------------------------------|
| | AH | AL | <===整個稱為 EAX
|--------------------------------|
DWORD PTR 一個雙字組(32bit)指標,指向後面變數的 記憶體位址
[x1] 表示 x1的記憶體位址
所以 DWORD PTR [x1] 表示指向x1
因為只能存放DWORD長度的資料
所以DWORD PTR [x1] 等於 90008400h
所以:
mov EAX,DWORD PTR [x1]
表示把 90008400h 放到 EAX 裡
(DWORD PTR [x1+4] 表示指向x1 再加4byte的位址,等於 A02B0001h)
至於
Q: 為什麼要用到EAX EBX ECX EDX 這麼多的暫存器?
A: 因為需要嘛~ ^^||
比如
loop 迴圈指令會用到 計數暫存器 ECX
執行到 loop 時 ECX=ECX-1
直到 ECX=0 即執行 loop 的下一條指令 (跳脫loop迴圈)
比如
語法:
;計算1加到100 (1+2+3+...+100)
start:
xor ax , ax ; ax清除為0
mov bx , ax ; bx = 0,bx也清為零
mov cx , 100 ; 設定迴圈次數=100
C_ADD:
inc bx ; bx=bx+1
add ax , bx ; ax=ax+bx
loop C_ADD ; cx=cx-1且重複count至cx=0
: ; loop結束時ax等於 (1加到100的值)
movzx 指令 (複製較小值到較大值)
比如
要將 bl 內容複製到 EAX 裡
bl 只有一個byte長度
EAX 有4個byte長度
此時就用
movzx EAX,bl
這裡有一些教學
http://140.111.104.1/kocp/mpu/m4/m4index.htm