Kagamine Len
文章20
标签10
分类2
计算机中的寄存器

计算机中的寄存器

数据寄存器

包括4个16位的寄存器(AX, BX, CX, DX)或者8个8位寄存器( AH, AL, BH, BL, CH, CL, DH, DL)

这些寄存器都可以用来暂时存放操作数, 运算结果以及其他信息, 但同时又具有某些专用用途

l AX 数据累加器

算术运算中的主要寄存器, 在乘除运算中用来指定被除数和被除数, 也是乘, 除,运算后积和商的默认存储单元. 另外I/O指令均使用该寄存器与I/O设备传送信息

l BX 基址寄存器

指令寻址时常用做基址寄存器. 存入偏移量或偏移量的构成成分

DS:BX DS<<4+BX

l CX 计算寄存器

在循环指令操作或串处理指令中隐含计数

l DX 数据寄存器

在双字节长运算是, 与AX构成32位操作数, DX为高16位. 在某些I/O指令中, DX被用来存放端口地址

指针及变址寄存器

这些寄存器都是16位的寄存器, 用来存放16位的操作数或中间结果, 但更经常的用途是存放偏移量, 或位移量

l SP 堆栈指针寄存器

始终只是栈顶的位置, 与SS寄存器一起组成栈顶数据的物理地址

l BP 基址指针寄存器

系统默认其指向堆栈中某一单元, 即提供栈中该单元的偏移量. 加段前缀后, BP可作非堆栈段的地址指针

用于寻找堆栈中的某个特定元素

l SI 源变址寄存器

与DS联用, 指示数据段中某操作的偏移量. 在做串处理时, SI指示源操作数地址, 并有自动增量或自动减量的功能. 变址寻址时, SI与某一位移量共同构成操作数的偏移量

[BX+SI] [BX+DI] DS<<4+BX+SI 用于转移两个相对的数组空间

l DI 目的变址寄存器

与DS联用, 指示数据段中某操作数的偏移量, 或与某一位移量共同构成操作数的偏移量. 串处理操作时, DI指示附加段中目的地址, 并有自动增量或减量的功能

段寄存器

l CS 代码段

存放当前程序的指令代码

l DS 数据段

存放程序所涉及的源数据或结果

数据段首地址 即[X] 访问DS:X的地址

l SS 堆栈段

以”先入后出”为原则的数据区

l ES 附加段

辅助数据区, 存放串或其他数据

控制寄存器

l IP 指令指针寄存器

它始终指向当前将要执行指令在代码段中存放的偏移量

l FR 控制标志位

\1. CF 进位标识位

进行加减运算时, 如果最高二进制位产生进位或错位, CF则为1, 否则为0. 程序设计中, 常用条件转移指令JC, JNC指令据此标志位实现转移

\2. PF 奇偶标志位

操作结果中二进制位1的个数为偶数是, PF为1, 某则为0

\3. AF 辅助进位标志位

运算时半字节产生进位或借位时, AF为1, 某则为0. 主要用于BCD码的调整

\4. ZF 零标志位

运算结果为0时, ZF为1, 否则为0

\5. SF 符号标志位

当运算结果的最高位为1时, SF为1, 否则为0. 最高位表示符号数的正和负

\6. TF 跟踪标志位

用于调试程序时进入单步方式工作. TF=1时, 每条指令执行完后产生一个内部中断, 让用户检查指令运行后寄存器, 存储器和各标志位的内容. TF=0时, CPU工作正常, 不产生内部中断

\7. IF 中断允许标志位

IF=1同时中断屏蔽寄存器的相应位为0, 允许系统响应可屏蔽中断, 反之, 不接收外部发出的中断请求

\8. DF 方向位标志位

用于控制串操作时地址指针位移方向. 当DF=1时, 指针向高地址方向移动

\9. OF 溢出标志位

算术运算时结果超出系统所能表示的数的范围. 溢出时, OF=1

×