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