16位汇编语言寄存器及指令整理

时间:2022-05-03 01:21:38

第一次写博客,有点小紧张~

寄存器

通用寄存器

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指令系统

数据传送指令

  1. 传送指令 MOV
  2. 传送-填充指令 MOVSX/MOVZX
  3. 交换指令 XCHG
  4. 进栈操作指令 PUSH,PUSHA(80286+),PUSHAD(80386+)
  5. 出栈操作指令 POP,POPA(80286+),POPAD((80386+))
  6. 转换指令 XLAT
  7. 取有效地址指令 LEA
  8. 取段寄存器指令 LDS
  9. 字节交换指令 BSWP

算数运算指令

加法指令

  1. 加法指令 ADD
  2. 带进位加法指令 ADC
  3. 加一指令 INC
  4. 交换相加指令 XADD

减法指令

  1. 减法指令 SUB
  2. 带错位减(目的操作数-源操作数-标志位CF) SBB
  3. 减一指令 DEC
  4. 求补指令(改变正负) NEG

乘法指令

  1. 无符号乘法指令 MUL
乘数位数 隐含被乘数 存储寄存器
8位 AL AX MUL BL
16位 AX DX-AX MUL BX
32位 EAX EDX-EAX MUL ECX

2. 有符号数乘法指令 IMUL(80286-)同上

除法指令

  1. 无符号数除法指令 DIV
除数位数 隐含被除数 余数 例子
8位 AX AL AH DIV BH
16位 DX-AX AX DX DIV BX
32位 EDX-EAX EAX EDX DIV ECX

2. 有符号数的除法指令IDIV

类型转换指令

  1. 字节->字 CBW:AL中符号数->AH
  2. 字->双字 CWD:AX符号位->DX
  3. 字变双字CWDE;80386+:AX符号位->EAX
  4. 双字->四字:CDQ;80386+:EAX->EDX

逻辑运算指令

  1. 逻辑与 AND
  2. 逻辑或 OR
  3. 逻辑非 NOT
  4. 逻辑异或 XOR

移位操作指令

  1. 算数位移指令SAL(左)/SAR(右)
  2. 逻辑移位指令(补零) SHL/SHR
  3. 循环右移指令(带进位) 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 *