X86 匯編/搬數
< X86 汇编
指令mov搬移字節, 詞或雙詞從源至靶. 源靶尺寸需一致, 有如下組合:
靶 | 源 |
---|---|
通存器 | 通存器 |
內存 | 通存器 |
通存器 | 內存 |
通存器或內存 | 立即數 |
通存器或內存 | 段存器 |
段存器 | 通存器或內存 |
通存器 | 控制或除障暫存器 |
控制或除障暫存器 | 通存器 |
例:
身高 db 160, 165, 170
mov bx,ax ; 通存器至通存器
mov [身高],al ; 通存器至内存
mov bl,[身高] ; 内存至通存器
mov dl,32 ; 立即数至通存器
mov [身高],32 ; 立即数至内存
mov ax,ds ; 段存器至通存器
mov ebx, 身高 ; 立即数至通存器
mov [bx],ds ; 段存器至内存
mov ds,ax ; 通存器至段存器
mov ds,[bx] ; 内存至段存器
mov eax,cr0 ; 控存器至通存器
mov cr3,ebx ; 通存器至控存器
指令xchg交換兩受操者內容. 如通存器與通存器, 通存器與內容. 例:
xchg eax,ebx ; 交换两通存器内容
xchg ax,word [身高] ; 交换通存器与内存内容
入疊(push)出疊(pop)指令操作ESP所指疊.
push {尺寸符} {单个内存,通存器,段存器或立即数或多个受操者隔以空格}
push ax es [bx] 123h ; 推此四个操作数依次入叠, 等价于
push ax
push es
push [bx]
push 123h
pusha ; 等价于下行指令, popa逆其操作
push ax cx dx bx sp bp si di ; 此处sp值为ax入叠前之初始值
pop {暂存器, 段存器或内存}
push {尺寸符} 立即数 ; 无尺寸符时, 此立即数于16位模式中当作词, 32位模式中作双词, 若可行则生成8位式指令. 尺寸符word或dword强制生成push长式指令
pushw或pushd强制fasm生成16位或32位码而非长式指令.