16位汇编语言寄存器及指令整理(小结)
作者:蔚蓝深处
这篇文章主要介绍了16位汇编语言寄存器及指令整理(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
寄存器
通用寄存器
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 | 封锁 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。