第一次写博客,有点小紧张~
寄存器
通用寄存器
8位寄存器 |
16位寄存器 |
32位寄存器 |
寄存器名称 |
AH,AL |
AX |
EAX |
累加寄存器 |
BH,BL |
BX |
EBX |
基地址寄存器 |
CH,CL |
CX |
ECX |
计数器寄存器 |
DH,DL |
DX |
EDX |
数据寄存器 |
|
SI |
ESI |
源变址寄存器 |
|
DI |
EDI |
源目标寄存器 |
DH,DL |
DX |
EDX |
基地址寄存器 |
DH,DL |
DX |
EDX |
栈顶寄存器 |
段寄存器
标号 |
名称 |
CS |
代码段 |
DS |
数据段 |
SS |
栈段 |
ES |
附加数据段 |
GS,FS |
附加数据段(+80386) |
专用寄存器
标号 |
名称 |
IP,EIP |
指令指针 |
Flags |
EFlags |
微机CPU指令系统
数据传送指令
- 传送指令 MOV
- 传送-填充指令 MOVSX/MOVZX
- 交换指令 XCHG
- 进栈操作指令 PUSH,PUSHA(80286+),PUSHAD(80386+)
- 出栈操作指令 POP,POPA(80286+),POPAD((80386+))
- 转换指令 XLAT
- 取有效地址指令 LEA
- 取段寄存器指令 LDS
- 字节交换指令 BSWP
算数运算指令
加法指令
- 加法指令 ADD
- 带进位加法指令 ADC
- 加一指令 INC
- 交换相加指令 XADD
减法指令
- 减法指令 SUB
- 带错位减(目的操作数-源操作数-标志位CF) SBB
- 减一指令 DEC
- 求补指令(改变正负) NEG
乘法指令
- 无符号乘法指令 MUL
乘数位数 |
隐含被乘数 |
存储寄存器 |
例 |
8位 |
AL |
AX |
MUL BL |
16位 |
AX |
DX-AX |
MUL BX |
32位 |
EAX |
EDX-EAX |
MUL ECX |
2. 有符号数乘法指令 IMUL(80286-)同上
除法指令
- 无符号数除法指令 DIV
除数位数 |
隐含被除数 |
商 |
余数 |
例子 |
8位 |
AX |
AL |
AH |
DIV BH |
16位 |
DX-AX |
AX |
DX |
DIV BX |
32位 |
EDX-EAX |
EAX |
EDX |
DIV ECX |
2. 有符号数的除法指令IDIV
类型转换指令
- 字节->字 CBW:AL中符号数->AH
- 字->双字 CWD:AX符号位->DX
- 字变双字CWDE;80386+:AX符号位->EAX
- 双字->四字:CDQ;80386+:EAX->EDX
逻辑运算指令
- 逻辑与 AND
- 逻辑或 OR
- 逻辑非 NOT
- 逻辑异或 XOR
移位操作指令
- 算数位移指令SAL(左)/SAR(右)
- 逻辑移位指令(补零) SHL/SHR
- 循环右移指令(带进位) ROL/ROR
处理机制指令
指令 |
效果 |
CLC |
CF<-0 |
CMC |
CF<-{CF} |
STC |
CF<- 1 |
CLD |
DF<- 0 |
STD |
DF<- 1 |
CLI |
IF<- 0 |
STI |
IF<- 1 |
NOP |
无操作 |
HLT |
停机 |
WAIT |
等待 |
ESC |
换码 |
LOCK |
* |