特曼de学习笔记 -博客 | 技术分享 - 标志寄存器
type: channel
link: https://www.yuofyou.cn/tag/%E6%A0%87%E5%BF%97%E5%AF%84%E5%AD%98%E5%99%A8/
items: 汇编(2)寄存器介绍

汇编(2)寄存器介绍
type: item
date: 2020-03-29T15:24:43+08:00
description: 一个典型的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存放的数据超出了八位数据会溢出