寄存器
通用寄存器
| 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 | 封锁 |
以上就是本文的全部内容,希望对大家的学习有所帮助,
小孩哥哥