【MASM汇编语言快速入门】8086寄存器速查表

8086寄存器速查

文章目录

  • 8086寄存器速查
    • [1. 通用寄存器](#1. 通用寄存器)
      • [(1) 数据寄存器](#(1) 数据寄存器)
      • `ax`
      • `bx`
      • `cx`
      • `dx`
      • [(2) 变址寄存器](#(2) 变址寄存器)
      • `si`
      • `di`
      • [(3) 指针寄存器](#(3) 指针寄存器)
      • `bp`
      • `sp`
    • [2. 标志寄存器](#2. 标志寄存器)
      • `flags`
      • [1. 状态标志cf, pf, af, zf, sf, of](#1. 状态标志cf, pf, af, zf, sf, of)
      • [2. 控制标志df, if, tf](#2. 控制标志df, if, tf)
    • [3. 指令指针寄存器](#3. 指令指针寄存器)
    • [4. 段寄存器](#4. 段寄存器)

1. 通用寄存器

(1) 数据寄存器

ax

accumulater累加器, 用于算术逻辑运算和外设传送信息

lahf, sahf, cbw, cwd, xlat, mul, div指令的隐含寄存器

bx

base基址寄存器, 常用于存放存储地址

xlat指令的隐含寄存器

cx

count计数器, 作为循环操作的计数器

jcxz, loop指令的隐含寄存器

dx

data数据寄存器, 存放数据, 在输入输出指令中存放外设端口地址

cwd, mul(x16), div(x16)指令的隐含寄存器, 16位乘除法, 16位符号扩展, ax不够长就拿dx拼成(dx||ax)

(2) 变址寄存器

si

source源变址寄存器, 指向字符串或数组的源操作数

di

destination目的变址寄存器, 指向字符串或数组的目的操作数

(3) 指针寄存器

bp

base基址指针寄存器, 默认指向堆栈区的数据, 一般和ss配合使用, 用于指向堆栈传递的参数和局部变量

sp

stack栈指针寄存器, 指向栈顶的指针, 设计栈操作的指令会自动增减

push, pop, pushf, popf, call, ret的隐含寄存器

2. 标志寄存器

flags

flags = x, x, x, x, of(11), df(10), if(9), tf(8), sf(7), zf(6), x, af(4), x, pf(2), x, cf(0)

1. 状态标志cf, pf, af, zf, sf, of

cf: 进位标志(Carry Flag)

pf: 奇偶标志(Parity Flag)。若PF=1,表示操作结果中"1"的个数为偶数,否则PF=0。这个标志位主要用于检查数据传送过程中的错误, 和方便软件实现奇偶校验。

af: 辅助进位标志(Auxiliary Carry Flag)也叫半进位标志, 若AF=1表示字节运算产生低半字节向高半字节的进位或借位,否则AF=0. 主要用于BCD码运算的十进制调整。

zf: 全零标志(Zero Flag)。若ZF=1,表示操作结果全为零

sf: 符号标志(Sign Flag)。若SF=1,表示符号数运算后的结果为负数

of: 溢出标志OF=1,表示当进行算术运算时,结果超过了最大范围

2. 控制标志df, if, tf

df: 方向标志, 用于串指令, 若DF=1, 表示执行字符串操作时按着从高地址向低地址方向进行;否则DF=0。DF位可由指令控制。

if: 中断标志, 用于是否允许响应可屏蔽中断

tf: 陷阱标志, 也叫单步标志(Trace Flag), tf=1每执行一条指令cpu就会进入单步中断处理

3. 指令指针寄存器

ip

也就是计组里说的pc, 当前执行的指令的偏移地址, 当前执行的指令即cs:ip

4. 段寄存器

cs

代码段寄存器

ds

数据段寄存器

ss

堆栈段寄存器

es

附加段寄存器

段寄存器的使用规定***

访问存储器的方式 默认的段寄存器 可超越的段寄存器 偏移地址
取指令 cs 不可超越 ip
堆栈操作 ss 不可超越 sp
一般数据访问 ds cs, ss, es ea
串操作的源操作数 ds cs, ss, es si
串操作的目的操作数 es 不可超越 di
bp作为基址的寻址方式 ss cs, ds, es ea

段超越就是指不使用默认的段寄存器

相关推荐
2601_966949653 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
未来之窗软件服务4 小时前
终端优先同步架构终端场景下轻量化、高可用通信模型-东方仙盟
架构·东方仙盟·阿雪技术观·网络震荡·dns污染·数据中继器·边界网关
晨曦中的暮雨5 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
喵了几个咪5 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
Flynt5 小时前
我把微信运动的排行榜和定点推送复刻了一遍:100万次步数更新只要4秒,坑在别处
redis·后端·性能优化
程序员清风5 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
2601_962885727 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
_孤傲_7 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里8 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法