一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。在CPU中:
- 运算器进行信息处理;
- 寄存器进行信息存储;
- 控制器控制各种器件进行工作;
- 内部总线连接各种器件,在它们之间进行数据的传送;
关于寄存器
寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。
8086内含14个16位的寄存器,分别为:AX BX CX DX SP BP SI DI CS DS SS ES IP FLAG;
(1)通用寄存器组- | 数据寄存器 | |||
---|---|---|---|---|
符号 | 名称 | 高8位符号 | 低8位符号 | 英文 |
AX | 累加器 | AH | AL | Accumulator |
BX | 基址寄存器 | BH | BL | Base |
CX | 计数寄存器 | CH | CL | Count |
DX | 数据寄存器 | DH | DL | Data |
上面的高8位和低8位是什么意思呢?8086CPU的上一代CPU都是8位的,为了保证兼容,8086CPU中的AX,BX,CX,DX这四个寄存器都可以拆分为两个可独立使用的8位寄存器。也就是说AX可以拆分为AH和AL,AH+AL=AX
通用寄存器组- | 指针寄存器,变址寄存器 | |
---|---|---|
符号 | 名称 | 英文 |
SP | 堆栈指针寄存器 | Stack Pointer |
BP | 基址指针寄存器 | Base Pointer |
SI | 源变址寄存器 | Source Index |
DI | 目的变址寄存器 | Destination Index |
(2)段寄存器 | ||
---|---|---|
符号 | 名称 | 英文 |
CS | 代码段寄存器 | Code Segment |
DS | 数据段寄存器 | Data Segment |
ES | 附加段寄存器 | Extra Segment |
SS | 堆栈段寄存器 | Stack Segment |
(3)控制寄存器 | ||
---|---|---|
符号 | 名称 | 英文 |
IP | 指令指针寄存器 | Instruction Pointer |
FLAGS | 标志寄存器 | Status Flags |
各寄存器的作用解释:
AX:常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。
BX:可以用作数据寄存器;访问存储器时,可以存放被读写的存储单元的地址。是具有双重功能的寄存器,常用于地址索引
CX : 计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DX: 在乘除法中作为数据累加器,在输入输出操作中存放端口的地址 常用于数据传递。
SP:堆栈指针寄存器。存放栈顶的偏移地址,供堆栈操作使用。
BP:基址指针寄存器。存放堆栈内数据的基地址。
SI:源变址寄存器。主要用于存放地址,在字符串操作中存放源操作数的偏移地址。变址寄存器内存放 的地址在数据传送完成后,具有自动修改的功能。
DI:目的变址寄存器。主要用于存放地址,在字符串操作中存放目的操作数的偏移地址。
IP:指令指针寄存器,存放下一个执行指令的寄存器地址
FLAG:标志寄存器,存放例如OF等数据标志的寄存器。
关于标志寄存器的详细介绍:http://www.yuofyou.cn/20200412/361.html
寄存器之间是互相独立的,
比如AX是16位寄存器,而AH和AL是八位寄存器,如果AH存放的数据超出了八位数据会溢出
2 条评论
[…] 汇编(2)寄存器介绍 […]
[…] 汇编(2)寄存器介绍 […]