爱了爱了,这篇寄存器讲的有点意思( 三 )
CX 寄存器CX 也是数据寄存器 , 能够暂存一般性数据 。 同样为了适应以前的 8 位 CPU, 而可以将 CX 当做两个独立的 8 位寄存器使用 , 即有 CH 和 CL 。 除此之外 , CX 也是有其专门的用途的 , CX 中的 C 被翻译为 Counting 也就是计数器的功能 。 当在汇编指令中使用循环 LOOP 指令时 , 可以通过 CX 来指定需要循环的次数 , 每次执行循环 LOOP 时候 , CPU 会做两件事
- 一件事是计数器自动减 1
- 还有一件就是判断 CX 中的值 , 如果 CX 中的值为 0 则会跳出循环 , 而继续执行循环下面的指令 , 当然如果 CX 中的值不为 0, 则会继续执行循环中所指定的指令。
段寄存器CPU 包含四个段寄存器 , 用作程序指令 , 数据或栈的基础位置 。 实际上 , 对 IBM PC 上所有内存的引用都包含一个段寄存器作为基本位置 。
段寄存器主要包含
- CS(Code Segment) :代码寄存器 , 程序代码的基础位置
- DS(Data Segment):数据寄存器 , 变量的基本位置
- SS(Stack Segment):栈寄存器 , 栈的基础位置
- ES(Extra Segment):其他寄存器 , 内存中变量的其他基本位置 。
- BP(Base Pointer):基础指针 , 它是栈寄存器上的偏移量 , 用来定位栈上变量
- SP(Stack Pointer): 栈指针 , 它是栈寄存器上的偏移量 , 用来定位栈顶
- SI(Source Index): 变址寄存器 , 用来拷贝源字符串
- DI(Destination Index): 目标变址寄存器 , 用来复制到目标字符串
- IP(Instruction Pointer):指令指针寄存器 , 它是从 Code Segment 代码寄存器处的偏移来存储执行的下一条指令
- FLAG : Flag 寄存器用于存储当前进程的状态 , 这些状态有
- 位置 (Direction):用于数据块的传输方向 , 是向上传输还是向下传输
- 中断标志位 (Interrupt) :1 - 允许;0 - 禁止
- 陷入位 (Trap) :确定每条指令执行完成后 , CPU 是否应该停止 。 1 - 开启 , 0 - 关闭
- 进位 (Carry) : 设置最后一个无符号算术运算是否带有进位
- 溢出 (Overflow) : 设置最后一个有符号运算是否溢出
- 符号 (Sign) : 如果最后一次算术运算为负 , 则设置 1 =负 , 0 =正
- 零位 (Zero) : 如果最后一次算术运算结果为零 , 1 = 零
- 辅助进位 (Aux Carry) :用于第三位到第四位的进位
- 奇偶校验 (Parity) : 用于奇偶校验
文章插图
CPU 通过地址总线将物理地址送入存储器 , 那么 CPU 是如何形成的物理地址呢?这将是我们接下来的讨论重点 。
现在 , 我们先来讨论一下和 8086 CPU 有关的结构问题 。
cxuan 和你聊了这么久 , 你应该知道 8086 CPU 是 16 位的 CPU 了 , 那么 , 什么是 16 位的 CPU 呢?
你可能大致听过这个回答 , 16 位 CPU 指的是 CPU 一次能处理的数据是 16 位的 , 能回答这个问题代表你的底层还不错 , 但是不够全面 , 其实 , 16 位的 CPU 指的是
推荐阅读
- 双旦OLED电视怎么选?这篇文章帮你解惑
- Golang 切片综合指南
- IntelliJ IDEA快捷键中排名前五的导航快捷键
- 不同微单系统对焦有何区别?这篇文章给你答案
- 为什么大家不讨论Macbook?
- 关于中文编程的一些思考
- Seaborn的6个简单技巧
- 谷歌登月实验室的新项目,居然这么“土”
- iPhone12买不买?看这篇就够了。
- 双十一采购推荐之路由器选购