8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。
(1)通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).
数据寄存器分为:
AHAL=AX(accumulator):累加寄存器,经常会用到于运算;在乘除等指令中指定用来存放操作数,另外,全部的I/O指令都使用这一寄存器与外界设备传送数据.
BHBL=BX(base):基址寄存器,经常会用到于地点位置索引;
CHCL=CX(count):计数寄存器,经常会用到于计数;经常会用到于保存计算值,若是移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DHDL=DX(data):数据寄存器,经常会用到于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.还有低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并独自使用。
另一组是指针寄存器和变址寄存器,涵盖:
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向现在的堆栈位置;
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;
SI(Source Index):源变址寄存器可用来存放对比DS段之源变址指针;
DI(Destination Index):目标变址寄存器,可用来存放对比 ES 段之目标变址指针。
这4个16位寄存器只可以按16位进行存取操作,主要用来形成操作数的地点位置,用于堆栈操作和变址运算中计算操作数的有效地点位置。
(2) 指令指针IP(Instruction Pointer)
指令指针IP是一个16位专用寄存器,它指向现目前需取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地点位置的段内地点位置偏移量,又称偏移地点位置(Offset Address)或有效地点位置(EA,Effective Address)。
(3)标志寄存器FR(Flag Register)
8086有一个18位的标志寄存器FR,在FR中有意义的有9位,这当中6位是状态位,3位是控制位。
OF: 溢出标志位OF用于反映有符号数加减运算所得结果是不是溢出。假设运算结果超越现目前运算位数所能表示的范围,则称为溢出,OF的值被置为1,不然,OF的值被清为0。
DF:方向标志DF位用来决定在串操作指令执行时相关指针寄存器出现调整的方向。
IF:中断允许标志IF位用来决定CPU是不是响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为什么值,CPU都一定要响应CPU外部的不可屏蔽中断所发出的中断请求,还有CPU内部出现的中断请求。详细规定请看下方具体内容:
(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;
(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
TF:跟踪标志TF。该标志可用于程序调试。TF标志没有针对的指令来设置或了解。
(1)假设TF=1,则CPU处于单步执行指令的工作方法,这个时候每执行完一条指令,就显示CPU内各个寄存器的现目前值及CPU将要执行的下一条指令。
(2)假设TF=0,则处于连续工作模式。
SF:符号标志SF用来反映运算结果的符号位,它与运算结果的高位一样。在微机系统中,有符号数采取补码表示法,故此SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,不然其值为1。
ZF: 零标志ZF用来反映运算结果是不是为0。假设运算结果为0,则其值为1,不然其值为0。在判断运算结果是不是为0时,能够让用此标志位。
AF:下方罗列出来的情况下,辅助进位标志AF的值被置为1,不然其值为0:
(1)、在字操作时,出现低字节向高字节进位或借位时;
(2)、在字节操作时,出现低4位向高4位进位或借位时。
PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。假设“1”的个数为偶数,则PF的值为1,不然其值为0。
CF:进位标志CF主要用来反映运算是不是出现进位或借位。假设运算结果的高位出现了一个进位或借位,那么其值为1,不然其值为0。)
4)段寄存器(Segment Register)
为了运用全部的内存空间,8086设定了四个段寄存器,针对用来保存段地点位置:
CS(Code Segment):代码段寄存器;
DS(Data Segment):数据段寄存器;
SS(Stack Segment):堆栈段寄存器;
ES(Extra Segment):附加段寄存器。
当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的什么位置,通过设定段寄存器 CS,DS,SS 来指向这些开始位置。一般是将DS固定,而按照需更改CS。故此程序可在可寻址空间小于64K的情况下被写成任意大小。 故此程序和其数据组合起来的大小,限制在DS 所指的64K内,那就是COM文件不可以大于64K的因素。8086以内存做为战场,用寄存器做为军事基地,以加速工作
1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,以此节省读取操作数所需占用总线和访问存储器时间。
2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,影响不了高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可达到各种存储器操作数的寻址方法,为以不一样的地点位置形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器。
作为通用寄存器,也可以存储算术逻辑运算的操作数和运算结果。
它们可作大多数情况下的存储器指针使用。
在字符串操作指令的执行途中,对它们有特定的要求,而且,还具有特殊的功能。
3、指针寄存器 32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,影响不了高16位的数据。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可达到各种存储器操作数的寻址方法,为以不一样的地点位置形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器。
作为通用寄存器,也可以存储算术逻辑运算的操作数和运算结果。
它们主要用于访问堆栈内的存储单元,还规定: BP为基指针(Base Pointer)寄存器,通过它减去一定的偏移值,来访问栈中的元素; SP为堆栈指针(Stack Pointer)寄存器,它自始至终指向栈顶。 说明:因栈的生长方向是从高地点位置向低地点位置生长,故此进栈时,sp自减;出栈时,sp自增;
4、段寄存器 段寄存器是按照内存分段的管理模式而设置的。内存单元的物理地点位置由段寄存器的值和一个偏移量组合而成 的,这样可用两个较少位数的值组合成一个可访问很大物理空间的内存地点位置。 5、指令指针寄存器 32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用一样。 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。
在具有预取指令功能的系统中,下次要执行的指令一般已被预取到指令队列中,除非出现转移情况。故此在理解它们的功能时,不考虑存在指令队列的情况。
在实方法下,因为每个段的大范围为64K,故此EIP中的高16位肯定都为0,这个时候,基本上等同于只用其低16位的IP来反映程序中指令的执行次序。 6、标志寄存器
8086CPU的通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),☆ 另一组是指针寄存器及变址寄存器(4个).☆ 数据寄存器分为:☆ AHAL=AX(accumulator):累加寄存器,☆ 经常会用到于运算;在乘除等指令中指定用来存放操作数,另外,☆ 全部的I/O指令都使用这一寄存器与外界设备传送数据.☆ BHBL=BX(base):基址寄存器,经常会用到于地点位置索引;☆ CHCL=CX(count):计数寄存器,经常会用到于计数;☆ 经常会用到于保存计算值,若是移位指令,循环(loop)☆ 和串处理指令中用作隐含的计数器.☆ DHDL=DX(data):数据寄存器,经常会用到于数据传递。☆ 他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.还有低八位:AL,BL,CL,DL。☆ 这2组8位寄存器可以分别寻址,并独自使用。☆ 另一组是指针寄存器和变址寄存器,涵盖:☆ SP(Stack Pointer):堆栈指针,与SS配合使用,☆ 可指向现在的堆栈位置;☆ BP(Base Pointer):基址指针寄存器,☆ 可用作SS的一个相对基址位置;☆ SI(Source Index):☆ 源变址寄存器可用来存放对比DS段之源变址指针;☆ DI(Destination Index):目标变址寄存器,可用来存放对比 ES 段之目标变址指针。☆ 这4个16位寄存器只可以按16位进行存取操作,☆ 主要用来形成操作数的地点位置,☆ 用于堆栈操作和变址运算中计算操作数的有效地点位置。
1、寄存器
32位寄存器有16个,分别是:
4个数据寄存器(EAX、EBX、ECX、EDX)。
2个变址和指针寄存器(ESI和EDI);2个指针寄存器(ESP和EBP)。
6个段寄存器(ES、CS、SS、DS、FS、GS)。
1个指令指针寄存器(EIP);1个标志寄存器(EFlags)。
2、数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,以此节省读取操作数所需占用总线和访问存储器时间。
32位CPU有4个32位通用寄存器:EAX、EBX、ECX和EDX。对低16位数据的取存,不影响高16
位的数据,这些低16位寄存器分别命名为AX、BX、CX和DX,它和先前的CPU中的寄存器相完全一样。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:ah~al、BX:bh~bl、CX:ch~cl:DX:dh~dl)。
每个寄存器都拥有自己的名称,可独立存取。程序员可利用数据寄存器的这样的“可合可分”的特性,灵活地处理字/
字节的信息。
AX和al一般称为累加器,用累加器进行的操作可能需更少时间,累加器可用于乘、除、输入/输出等操作,
它们的使用频率很高。
BX称为基地点位置寄存器,它可作为存储器指针来使用。
CX称为计数寄存器,在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用cl来
指明位移的位数。
DX称为数据寄存器,在进行乘、除运算时,它可以为默认的操作数参加运算,也可以用于存放I/O的端口地点位置。
在16位CPU中,AX、BX、CX和DX不可以作为基址和变址寄存器来存放存储单元的地点位置,但是在32位CPU
中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据、保存算术逻辑运算结果,而且,也可以
作为指针寄存器,故此这些32位寄存器具有更多的有通用性。
3、变址寄存器
32位CPU有2个32位通用寄存器ESI和EDI,其低16位对应先前CPU中的SI和DI,对低16位数据的
存取,影响不了高16位的数据。
ESI、EDI、SI和DI称为变址寄存器,它们主要用于存放存储单元在段内的偏移量,用它们可达到各种存储器
操作数的寻址方法,为以不一样的地点位置形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器,作为通用寄存器,也可以存储算术逻辑运算的操作数和运算结果。
它们可作大多数情况下的存储器指针使用,在字符串操作指令的执行途中,对它们有特定的要求,而且,还具有特殊的
功能。
4、指针寄存器
32位CPU有2个32位通用寄存器EBP和ESP,其低16位对应先前CPU中的BP和SP,对低16位数
据的存取,影响不了高16位的数据。
EBP、ESP、BP和SP称为指针寄存器,主要用于存放堆栈内存储单元的偏移量,用它们可达到各种存储器
操作数的寻址方法,为以不一样的地点位置形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器,作为通用寄存器,也可以存储算术逻辑运算的操作数和运算结果。
它们主要用于访问堆栈内的存储单元,还规定:
BP为基指针寄存器,用它可直接存取堆栈中的数据。
SP为堆栈指针寄存器,用它只可访问栈顶。
5、段寄存器
段寄存器是按照内存分段的管理模式而设置的。内存单元的物理地点位置由段寄存器的值和一个偏移量组合而成
的,这样可用两个较少位数的值组合成一个可访问很大物理空间的内存地点位置。
32位CPU有6个段寄存器,分别请看下方具体内容:
CS:代码段寄存器ES:附加段寄存器
DS:数据段寄存器FS:附加段寄存器
SS:堆栈段寄存器GS:附件段寄存器
在16位CPU系统中,唯有4个段寄存器,故此程序在任什么时候刻至多有4个已经在使用的段可直接访问,在
32位微机系统中,它有6个段寄存器,故此,在这里环境下开发的程序多可同时访问6个段。
32位CPU有两个不一样的工作方法:实方法和保护方法。在每种方法下,段寄存器的作用是不一样的,相关规定
简单描述请看下方具体内容:
实方法:段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义一模一样,内存单元的逻辑
地点位置仍为“段地点位置:偏移地点位置”的形式,为访问某内存段内的数据,一定要使用该段寄存器和存储单元的偏移地点位置。
保护方法:在这里方法下,情况要复杂得多,装入段寄存器的不可以再是段值,而是称为“选择子”的某个值。
6、指令指针寄存器
32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用一样。
指令指针EIP、IP是存放下次将要执行的指令在代码段的偏移地点位置,在具有预取指令功能的系统中,下次要执
行的指令一般已被预取到指令队列中,除非出现转移情况,故此在理解它们的功能时不考虑存在指令队列的情
况。
在实方法下,因为每个段的大范围为64KB,故此EIP的高16位肯定都为0,这个时候,基本上等同于只用其低16
位的IP来反映程序中的指令的执行次序。
7、标志寄存器
1.运算结果标志位。一共6个,涵盖:CF进位标志位、PF奇偶标志位、AF辅助进位标志位、ZF零标志位、
SF符号标志位、OF溢出标志位。
2.状态控制标志位。一共3个,涵盖:TF追踪标志位、IF中断允许标志位、DF方向标志位。
以上标志位在第7章里都讲过了,在这里就不可以再解释了,目前讲讲32位标志寄存器增多的4个标志位。
1. I/O特权标志IOPL。
IOPL用两位二进制位来表示,也称为I/O特权级字段,该字段指定了要求执行I/O指令的特权级,假设现目前
的特权级别在数值上小于等于IOPL的值,那么该I/O指令可执行,不然将出现一个保护异常。
2. 嵌套任务标志NT。
NT用来控制中断返回指令IRET的执行。详细规定请看下方具体内容:
(1) 当NT=0,用堆栈中保存的值恢复EFlags、CS和EIP,执行常见的中断返回操作。
(2) 当NT=1,通过任务转换达到中断返回。
3. 重开始标志RF。
RF用来控制是不是接受调试故障。规定:RF=0时,表示接受,不然拒绝。
4. 虚拟8086方法标志VM。
假设VM=1,表示处理机处于虚拟的8086方法下的工作状态,不然,处理机处于大多数情况下保护方法下的工作状态。
8、32位地点位置的寻址方法
后说一下32位地点位置的寻址方法。在前面我们学习了16位地点位置的寻址方法,一共有5种,在32位微机系统
中,又提供了一种更灵活、方便但也更复杂的内存寻址方法,以此使内存地点位置的寻址范围得到了进一步扩大。
在用16位寄存器来访问存储单元时,只可以使用基地点位置寄存器(BX和BP)和变址寄存器(SI和DI)来作为
偏移地点位置的一些,但是在用32位寄存器寻址时,不存在上面说的限制,全部32位寄存器(EAX、EBX、ECX、
EDX、ESI、EDI、EBP、和ESP)都可以是偏移地点位置的一个组成部分。
当用32位地点位置偏移量进行寻址时,偏移地点位置可分为3部分:
1. 一个32位基址寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)。
2. 一个可乘以1、2、4、8的32位变址寄存器(EAX、EBX、ECX、EDX、ESI、EDI和EBP)。
3. 一个8位~32位的偏移常量。
例如,指令:mov ebx, [eax+edx*2+300]
Eax就是基址寄存器,edx就是变址寄存器,300H就是偏移常量。
上面那3部分可进行任意组合,省去这当中之一或之二。
下面列举哪些32位地点位置寻址指令:
Mov ax, [123456]
Mov eax, [ebx]
Mov ebx, [ecx*2]
Mov ebx, [eax+100]
Mov ebx, [eax*4+200]
Mov ebx, [eax+edx*2]
Mov ebx, [eax+edx*4+300]
Mov ax, [esp]
因为32位寻址方法能使用全部的通用寄存器,故此和该有效地点位置相组合的段寄存器也就有新的相关规定,详细
规定请看下方具体内容:
1. 地点位置中寄存器的表达顺序决定该寄存器是基址寄存器还是变址寄存器。
如:[ebx+ebp]中的ebx是基址寄存器,ebp是变址寄存器,而[ebp+ebx]中的ebp是基址寄存器,ebx是变
址寄存器,可以看得出来,左边那个是基址寄存器,另一个是变址寄存器。
2. 默认段寄存器的选用主要还是看基址寄存器。
3. 基址寄存器是ebp或esp时,默认的段寄存器是SS,不然,默认的段寄存器是DS。
4. 在指令中,假设显式地给出段寄存器,既然如此那,显式段寄存器优先。
下面列举哪些32位地点位置寻址指令及其内存操作数的段寄存器。
指令列举: 访问内存单元所用的段寄存器
mov ax, [123456];默认段寄存器为DS。
mov ax, [ebx+ebp];默认段寄存器为DS。
mov ebx, [ebp+ebx];默认段寄存器为SS。
mov ebx, [eax+100];默认段寄存器为DS。
mov edx, ES:[eax*4+200];显式段寄存器为ES。
mov [esp+edx*2], ax;默认段寄存器为SS。
mov ebx, GS:[eax+edx*8+300];显式段寄存器为GS。
mov ax, [esp];默认段寄存器为SS。
8086/8088内部的寄存器组分成8个通用寄存器,4个段寄存器,1个标志寄存器和1个指令指针寄存器(一共14个寄存器,分为专用与通用),它们都是16位。
通用寄存器有: 数据寄存器(AX,BX,CX,DX); 指针寄存器:堆栈指针寄存器SP;基址指针寄存器BP; 变址寄存器:源变址寄存器SI;目标变址寄存器DI; 专用寄存器有: 控制寄存器:指令指针IP;标志寄存器FLAGS; 段寄存器:代码段寄存器CS;堆栈段寄存器SS;数据段寄存器DS;附加段寄存器ES;基址寄存器(BX),由BH,BL组成,经常会用到来存放访问内存时的基地点位置或用做间接寻址时的地点位置寄存器。还有基址指针寄存器(BP)。 变址寄存器分为源变址寄存器(SI)和目标变址寄存器(DI),他们经常用在变址寻址方法中。 有一种寻址方法叫基址变址寻址,就是基址和变址的组合例如:mov AX,[BX] [DI] 基址和变址的寻址只可以是以下四种:BX和SI,BX和DI,BP和SI,BP和DI。 至于你说的偏移量就涉及到相对基址变址寻址了,这里的相对就是偏移量了。当然偏移量不仅仅在这个地方有用到,计算有效地点位置(EA)时要把它加上去。
以上就是本文8086有哪些寄存器各有哪些功能,地址寄存器有哪些类型的全部内容
本文链接:https://www.china-share.com/xueli/202307091799998.html
发布于:华宇考试网(https://www.china-share.com/)>>> 广西专升本院校栏目(https://www.china-share.com/zhuanshengben/guangxizhuanshengben/yuanxiao/)
投稿人:网友投稿
说明:因政策和内容的变化,上文内容可供参考,终以官方公告内容为准!
声明:该文观点仅代表作者本人,华宇考试网系信息发布平台,仅提供信息存储空间服务。对内容有建议或侵权投诉请联系邮箱:e8548113@foxmail.com
关注本站了解更多关于文8086有哪些寄存器各有哪些功能,地址寄存器有哪些类型和广西专升本院校的相关信息。
8086有什么寄存器,各有什么,功能? 8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。 (1)通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄...
2023-07-09
本文主要针对山东医学类大学排名,山东本科医学院有哪些学校排名和山东省内的本科医药大学排名等几个问题进行详细讲解,大家可以通过阅读这篇文章对山东医学类大学排名有一个初步认识,对于今年数据还未公布且时效性较...
2023-07-09
本文主要针对东南大学九龙湖校区,东南大学九龙湖校区面积多少亩和东南大学九龙湖校区等进行详细讲解,大家可以通过阅读这篇文章对东南大学九龙湖校区有一个初步认识,对于今年数据还未公布且时效性较强或政策频繁变动...
2023-07-09
本文主要针对三本民办本科排名,国家认可的民办二本大学排名榜和全国民办本科院校排名等几个问题进行详细讲解,大家可以通过阅读这篇文章对三本民办本科排名有一个初步认识,对于今年数据还未公布且时效性较强或政策频...
2023-07-09
天津乐学网教育科技有限公司靠谱吗? 天津乐学网教育科技有限公司于2023年12月27日成立。法定代表人王杨,公司经营范围涵盖:活动;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;专业设计服务;广播电视设...
2023-07-09