3. 8086内部寄存器 8086内部寄存器
通用寄存器组通用寄存器( 通用寄存器(8个)可分为两组: 可分为两组: 数据寄存器(4个); 数据寄存器( 地址指针和变址寄存器(4个)。 地址指针和变址寄存器( (1)数据寄存器 通用寄存器AX 、 BX 、 CX和 DX称为数据寄存器 通用寄存器 AX、 BX、 CX 和 DX 称为数据寄存器 , 称为数据寄存器, 可用来存放16位的数据或地址 也可把它们当作八个8 位的数据或地址。 可用来存放16位的数据或地址。 也可把它们当作八个8 位寄存器( AH 、 AL、 BH 、 BL 、 CH、CL、 DH、 DL) 位寄存器 ( AH、 AL、 BH、 BL、CH 、 CL 、 DH、 DL) 来使用,这时只能存放8位数据,而不能用来存放地址。 来使用 , 这时只能存放8位数据, 而不能用来存放地址 。
寄存器名 AX,AL
AH AL
BX
CX CL DX
特 殊 用 途 在输入/ 在输入/输出指令中作数据寄存器用 在乘法指令中, 在乘法指令中,存放被乘数或乘积 在除法指令中, 在除法指令中,存放被除数或商数 LAHF指令中 指令中, 在LAHF指令中,作目标寄存器用 在十进制运算指令中作累加器用 XLAT指令中作基址寄存器用 在XLAT指令中作基址寄存器用 在间接寻址中作基址寄存器用 XLAT指令中作基址寄存器用 在XLAT指令中作基址寄存器用 在串处理和LOOP指令中作计数器用 在串处理和LOOP指令中作计数器用 在移位/ 在移位/循环移位指令中作移位次数计数器用 字乘法/ 字乘
法/除法指令中存放乘积高位或被除数高位或余数 在间接寻址的输入/ 在间接寻址的输入/输出指令中作地址寄存器用
(2)地址指针和变址寄存器 包括SP、BP、SI、DI四个 位寄存器 四个16位寄存器。 包括SP、BP、SI、DI四个16位寄存器。 可以在运算过程中存放操作数 , 但只能以字 ( 16位 ) 可以在运算过程中存放操作数, 但只能以字( 16 位 为单位使用。 为单位使用。 常用在段内寻址时提供偏移地址: 常用在段内寻址时提供偏移地址: SP ( Stack Pointer ) 称 为 堆 栈 指 针 寄 存 器 , BP Pointer)称为基址指针寄存器, (Base Pointer)称为基址指针寄存器,它们都可以与 SS 寄存器联用确定堆栈段中的某一存储单元的地址 。 SS寄存器联用确定堆栈段中的某一存储单元的地址 寄存器联用确定堆栈段中的某一存储单元的地址。 SP用来指示栈顶的偏移地址 , BP可作为堆栈区中的一 SP用来指示栈顶的偏移地址 BP可作为堆栈区中的一 用来指示栈顶的偏移地址, 个基地址以便访问堆栈。 个基地址以便访问堆栈。 SI(Source Index)源变址寄存器和DI(Destination SI( Index)源变址寄存器和DI( Index)目的变址寄存器:它们一般与DS联用 Index)目的变址寄存器:它们一般与DS联用,用来确 联用, 定数据段中某一存储单元的地址。 定数据段中某一存储单元的地址。
寄存器名
SI DI BP SP
特 殊 用 途 在字符串处理指令中作源变址寄存器用 在间接寻址中作变址寄存器用 在字符串处理指令中作目标变址寄存器用 在间接寻址中作变址寄存器用 在间接寻址中作基址指针用 在堆栈操作中作堆栈指针用
段寄存器组
8086CPU的BIU中设置 8086CPU的BIU中设置4个16位段寄存器: 中设置4 16位段寄存器 位段寄存器: 代码段寄存器CS(Code Segment) 代码段寄存器CS( Segment) 数据段寄存器DS(Data Segment) 数据段寄存器DS( Segment) 附加数据段寄存器ES(Extra Segment) 附加数据段寄存器ES( Segment) 堆栈段寄存器SS(Stack Segment) 堆栈段寄存器SS( Segment)
设置段寄存器的原因: 设置段寄存器的原因: 由于8086CPU可直接寻址的存储器空间是 字节 由于8086CPU可直接寻址的存储器空间是1M字节, 可直接寻址的存储器空间是1M字节, 需要20位地址码 位地址码。 CPU所有的内部寄存器都只有16 所有的内部寄存器都只有 需要20位地址码。而CPU所有的内部寄存器都只有16 用这些寄存器只能直接寻址64K字节 字节。 位,用这些寄存器只能直接寻址64K字节。 为此把1M字节的存储空间分成许多逻辑段, 为此把1M字节的存储空间分成许多逻辑段,每段最 字节的存储空间分成许多逻辑段 长为64k字节 这
些逻辑段可在整个存储空间中浮动。 字节, 长为64k字节,这些逻辑段可在整个存储空间中浮动。 于是用段寄存器给定各个逻辑段的首地址的高16位 于是用段寄存器给定各个逻辑段的首地址的高16位,被 称为段地址。 称为段地址。
总之, 总之 , 汇编程序一般将源程序分成四个逻 辑段, 代码段CS 、 数据段DS 、 堆栈段SS 和 辑段 , 即 代码段 CS、 数据段 DS、 堆栈段 SS和 附加段ES。 附加段ES。CS→
代码段 数据段 堆栈段 附加段
CS:存放代码段的段基地址。 CS:存放代码段的段基地址。 DS:存放数据段的段基地址。 DS:存放数据段的段基地址。 SS:存放堆栈段的段基地址。 SS:存放堆栈段的段基地址。 ES:存放附加段的段基地址。 ES:存放附加段的段基地址。
DS→ SS→ ES→
控制寄存器组 (1)指令指针寄存器IP(Instruction Pointer) 指令指针寄存器IP( Pointer) 8086CPU 中设置一个 位指令指针寄存器 , 8086CPU中设置一个 16位指令指针寄存器 IP, 用来 中设置一个16 位指令指针寄存器IP 存放将要取出的下一条指令在代码段中的偏移地址。 存放将要取出的下一条指令在代码段中的偏移地址。 在程序运行过程中,BIU可修改 中的内容 可修改IP中的内容, 在程序运行过程中,BIU可修改IP中的内容,使它始 终指向将要取出的下一条指令。 终指向将要取出的下一条指令。 注意: 注意: IP与CS联用, 表示代码段中要处理的指令的逻辑地址; IP与CS联用 表示代码段中要处理的指令的逻辑地址; 联用, IP和CS由系统执行,用户一般不能使用或修改。 IP和CS由系统执行 用户一般不能使用或修改。 由系统执行,
(2)标志寄存器FLAGS 标志寄存器FLAGS
8086CPU中设立一个两字节的标志寄存器 8086CPU中设立一个两字节的标志寄存器FLAGS(又 中设立一个两字节的标志寄存器FLAGS( PSW、FR), ),有 个标志位: 称PSW、FR),有9个标志位: 6个状态标志位,表示运算结果的状态,包括CF、 状态标志位,表示运算结果的状态,包括CF、 CF PF、AF、ZF、SF和OF; PF、AF、ZF、SF和OF; 3个控制标志位,用来控制CPU的操作,包括IF、 控制标志位,用来控制CPU的操作 包括IF、 的操作, DF和TF。 DF和TF。 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 × × × × OF DF IF TF SF ZF ×AF × PF × CF
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说英语学习汇编语言程序设计_东大函授0(2)在线全文阅读。
相关推荐: