跳至內容

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位码而非长式指令.