第1章 基础知识(4)-80X86处理器.ppt
《第1章 基础知识(4)-80X86处理器.ppt》由会员分享,可在线阅读,更多相关《第1章 基础知识(4)-80X86处理器.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.4 80X86处理器的寄存器处理器的寄存器201308 GLUT_C11.4.1 8086处理器的寄存器处理器的寄存器1.4.1.1 8086的寄存器的寄存器 8086是是16位处理器位处理器16位数据总线宽度,内部寄存器,位数据总线宽度,内部寄存器,ALU都是都是16位的。位的。地址总线地址总线20位,以字节为单位对存储器进行编制,可寻位,以字节为单位对存储器进行编制,可寻址址220 1M字节。字节。我们只讨论与程序设计有关的寄存器我们只讨论与程序设计有关的寄存器.201308 GLUT_C28086的编程结构的编程结构201308 GLUT_C3与程序设计有关的寄存器与程序设计有关的寄
2、存器44个个16位数据寄存器可分位数据寄存器可分为为8个个8位寄存器使用位寄存器使用201308 GLUT_C4从功能上,从功能上,8086分为两部分,即分为两部分,即总线接口单元总线接口单元(bus interface unit,BIU)执行单元执行单元(execution unit,EU)201308 GLUT_C51执行单元执行单元EUl执行单元执行单元EU的功能只是负责执行指令。的功能只是负责执行指令。l执行的指令从指令队列缓冲器中直接得到,执行的指令从指令队列缓冲器中直接得到,l执执行行指指令令时时若若需需要要从从存存储储器器或或I/O端端口口读读写写操操作作数数时时,由由EU向向B
3、IU发出请求,再由发出请求,再由BIU对存储器或对存储器或I/O端口进行访问。端口进行访问。201308 GLUT_C6 16位算术逻辑单元位算术逻辑单元(ALU):进行算术和逻辑运算。:进行算术和逻辑运算。1616位标志寄存器位标志寄存器位标志寄存器位标志寄存器FLAGSFLAGS:存放存放CPU运算的状态和控制标志运算的状态和控制标志。数据数据暂存寄存器暂存寄存器:暂存参加运算的数据暂存参加运算的数据 通用寄存器通用寄存器:包括:包括4个个16位数据寄存器位数据寄存器AX、BX、CX、DX和和 4个个16位指针与变址寄存器位指针与变址寄存器SP、BP与与SI、DI。EU控制电路控制电路:它
4、是控制、定时与状态逻辑电路,接收从:它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控中指令队列取来的指令,经过指令译码形成各种定时控制信号,对制信号,对EU的各个部件实现特定的定时操作。的各个部件实现特定的定时操作。(1)执行单元执行单元EUEU由下列部件组成由下列部件组成201308 GLUT_C7(2)EU的任务的任务执行指令。执行指令。它负责从它负责从BIU的指令队列中取指令,并对指令进行译码,的指令队列中取指令,并对指令进行译码,根据指令的根据指令的要求向要求向EU内部各部件发出控制信号内部各部件发出控制信号,执行指令,执行指令规定的操作功能规
5、定的操作功能。201308 GLUT_C8(3)EU的寄存器l包括通用寄存器:包括通用寄存器:A、B、C、D、l堆栈指针寄存器堆栈指针寄存器SPl地址指针寄存器地址指针寄存器BP、SI、DIl标志寄存器标志寄存器FLAGS这些寄存器是程序设计中频繁使用的寄存器,这些寄存器是程序设计中频繁使用的寄存器,201308 GLUT_C9 4 4个通用寄存器,个通用寄存器,l四个四个1616位通用寄存器:位通用寄存器:AXAX、BXBX、CXCX、DXDX;1616位字长位字长l这这四四个个通通用用寄寄存存器器每每个个都都可可以以作作为为2 2个个独独立立的的8 8位位寄寄存存器器使使用。用。8 8位寄
6、存器符号:位寄存器符号:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL201308 GLUT_C10 4 4个专用寄存器,即个专用寄存器,即l 基地址指针寄存器基地址指针寄存器BPBP(BaseBase Pointer Pointer)l 堆栈指针寄存器堆栈指针寄存器SP(StackSP(Stack Pointer)Pointer)l 源变址寄存器源变址寄存器SI(SourceSI(Source Index)Index)l 目的变址寄存器目的变址寄存器DI(DestinationDI(Destination Index)Index);201308 GLUT_C1
7、1 标志寄存器标志寄存器共有16位,其中7位未用,所用的各位含义如下:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 015 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OFOFDFDFIFIFTFTFSFSFZFZF AFAF PFPF CFCF根据功能,根据功能,8086的标志可以分为两类:的标志可以分为两类:状态标志状态标志控制标志控制标志201308 GLUT_C12状态标志状态标志有有6个,即个,即SF、ZF、PF、CF、AF和和OF 符号标志符号标志SF(Sign Flag)负数负数SF1,零标志零标志ZF(Zero Flag)运算
8、结果运算结果0,ZF=1 奇偶标志奇偶标志PF(Parity Flag)运算结果低运算结果低8位中位中1的个数为偶的个数为偶数,数,PF=1(PE),低),低8位中位中1的个数为奇数,的个数为奇数,PF=0(PO)。)。进位标志进位标志CF(Carry Flag)最高位产生进位最高位产生进位CF=1 辅助进位标志辅助进位标志(Auxiliary carry Flag)溢出标志溢出标志OF(Overflow Flag)算术运算产生溢出算术运算产生溢出8位运算结果超出位运算结果超出-128+127 16位运算结果超出位运算结果超出-32768+32767201308 GLUT_C13控制标志控制标
9、志有有3个,即个,即 方向标志方向标志DF(direction flag)中断允许标志中断允许标志IF(interrupt enable flag)跟踪标志跟踪标志TF(trap flag)又称为单步标志又称为单步标志80X86的标志寄存器各位可以通过程序进行修改。的标志寄存器各位可以通过程序进行修改。由于它特别重要,为防止意外被修改,因此对标志寄存器的由于它特别重要,为防止意外被修改,因此对标志寄存器的修改有特殊的指令和方法。修改有特殊的指令和方法。201308 GLUT_C14(6)、标志寄存器)、标志寄存器16位寄存器,其中有位寄存器,其中有7位未用。位未用。D15D0 OF DF IF
10、 TF SF ZF AF PF CF进进借借位位标标志志奇奇偶偶标标志志半半进进借借位位标标志志零零标标志志符符号号标标志志单单步步中中断断中中断断允允许许方方向向标标志志溢溢出出标标志志1-有进、借位有进、借位0-无进、借位无进、借位1-低低8位有偶数个位有偶数个10-低低8位有奇数个位有奇数个11-低低4位向高位向高4位有进、借位位有进、借位0-低低4位向高位向高4位无进、借位位无进、借位1-结果为结果为00-结果不为结果不为0201308 GLUT_C150101 0100 0011 1001+0100 0101 0110 10101001 1001 1010 0011最高位最高位=1
11、SF=1低八位低八位1的个数为的个数为 4 个个 PF=1运算结果不为运算结果不为 0 ZF=0低低 4 位向前有进位位向前有进位 AF=1最高位向前没有进位最高位向前没有进位 CF=0次高位向前有进位次高位向前有进位,最高位无进位最高位无进位 CF=0,DF=1,OF=115 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O D I T S Z A P C 101011最高位无进位,CF=0向高4位有进位,AF=1201308 GLUT_C16例:例:设变量设变量x=11101111B,y=11001000B,A=0101101000001010B,B=0100110
12、0 10100011B,请问分别执,请问分别执行行x+y和和A+B操作操作后标志寄存器中各状态位的状态如何?后标志寄存器中各状态位的状态如何?11101111 +)11001000 10110111 1自动丢失0101101000001010 0100110010100011 1010011010101101CF=0CF=1DF=1DF=1x+yA+BAF=1CF=1次高位进位信号DF=1最高位进位信号CF=1OF=CF DF=0低8位有5个1,PF=0低8位有6个1,PF=1201308 GLUT_C17状态状态位位执行执行x+y后后执行执行A+B后后CF最高位最高位D7向前有进位,向前有进
13、位,CF=1最最 高高 位位 D15向向 前前 没没 有有 进进 位位,CF=0PF1的个数为偶数的个数为偶数(6),PF=11的个数为奇数的个数为奇数(5位位),PF=0AF低低4位向前有进位,位向前有进位,AF=1低低4位向前没有进位,位向前没有进位,AF=0ZF计算结果不为计算结果不为0,ZF=0计算结果不为计算结果不为0,ZF=0SF最高位最高位D7为为1,SF=1最高位最高位D15为为1,SF=1OFCF DF=0,没有溢出,没有溢出,OF=0CF DF=1,结果溢出,结果溢出,OF=1201308 GLUT_C182.总线接口部件总线接口部件(1 1)总线接口单元)总线接口单元)总
14、线接口单元)总线接口单元BIUBIU的任务:的任务:的任务:的任务:依据依据EU的请求,完成的请求,完成CPU与存储器、与存储器、CPU与与I/O设备之间的设备之间的信息传送。信息传送。读指令读指令当指令队列出现空字节当指令队列出现空字节(8088 有有1个空字节,个空字节,8086 有有2个空字节个空字节)时,从内存取出后续指令。时,从内存取出后续指令。BIU取指令时,取指令时,并不影响并不影响EU的执行,两者并行工作,大大提高了的执行,两者并行工作,大大提高了CPU的执行速的执行速度。度。读操作数读操作数EU需要从内存或外设端口读取操作数时,根据需要从内存或外设端口读取操作数时,根据EU给
15、出的地址从内存或外设端口读取数据供给出的地址从内存或外设端口读取数据供EU使用。使用。写操作数写操作数EU的运算结果、数据或控制命令等由的运算结果、数据或控制命令等由BIU送往送往指定的内存单元或外设端口。指定的内存单元或外设端口。201308 GLUT_C19 4个个16位段寄存器:位段寄存器:代码段寄存器代码段寄存器CS(Code Segment)、数据、数据段寄存器段寄存器DS(Data Segment)、堆栈段寄存器、堆栈段寄存器SS(Stack Segment)和附加数据段寄存器和附加数据段寄存器ES(Extra Segment);一一个个16位的指令指针寄存器位的指令指针寄存器IP
16、(Instruction Pointer);Pointer);一一个个20位地址加法器;位地址加法器;6字节指令队列缓冲器;字节指令队列缓冲器;一个一个与与EU通讯的内部通讯的内部寄存器以及寄存器以及总线控制电路总线控制电路等等等等。(2 2)总线接口单元()总线接口单元()总线接口单元()总线接口单元(BIUBIU)的组成)的组成)的组成)的组成201308 GLUT_C20 段寄存器段寄存器 8086CPU的的地地址址引引脚脚有有20根根,能能提提供供20位位的的地地址址信信息息,可可直接对直接对1M个存储单元进行访问个存储单元进行访问。但但CPU内部可用来提供地址信息的寄存器都是内部可用
17、来提供地址信息的寄存器都是16位的,位的,那么如何用那么如何用16位寄存器实现位寄存器实现20位地址的寻址呢?位地址的寻址呢?(3)BIU寄存器简介寄存器简介201308 GLUT_C218086/8088采用了分段结构的内存管理的方法。采用了分段结构的内存管理的方法。将将指令代码和数据分别指令代码和数据分别存储在存储在l代码段代码段l数据段数据段l堆栈段堆栈段l附加数据段附加数据段(简城附加段)(简城附加段)中,中,每一段最大每一段最大64KB(216个字节),可用个字节),可用16位的地址寄存位的地址寄存器管理。器管理。201308 GLUT_C22代码段段基地址代码段段基地址相对于段基地
18、相对于段基地址的偏移量址的偏移量数据段段基地址数据段段基地址相对于段基地相对于段基地址的偏移量址的偏移量这些段的段基地址分别由段这些段的段基地址分别由段寄存器寄存器CS、DS、SS、ES提供,提供,而代码或数据在段内的偏移而代码或数据在段内的偏移地址则由有关寄存器或立即地址则由有关寄存器或立即数给出。数给出。201308 GLUT_C23l 代码段寄存器代码段寄存器CS:存储存储程序当前使用的代码段的段地址。代码段用来存放程序的程序当前使用的代码段的段地址。代码段用来存放程序的指令代码。下一条要读取指令在代码段中的偏移地址由指令指指令代码。下一条要读取指令在代码段中的偏移地址由指令指针寄存器针
19、寄存器IP提供;提供;l 数据段寄存器数据段寄存器DS:用来用来存放程序当前使用的数据段的段地址。一般来说,程序中存放程序当前使用的数据段的段地址。一般来说,程序中所用到的原始数据、中间结果以及最终结果都存放在数据段所用到的原始数据、中间结果以及最终结果都存放在数据段中;中;201308 GLUT_C24l 堆栈段寄存器堆栈段寄存器SS:用来存放程序当前所使用的堆栈段的段地址。堆栈是在存储器用来存放程序当前所使用的堆栈段的段地址。堆栈是在存储器中开辟的一个特定区域;中开辟的一个特定区域;l 附加数据段寄存器附加数据段寄存器ES:用来存放程序当前使用的附加数据段的段地址。附加数据段通用来存放程序
20、当前使用的附加数据段的段地址。附加数据段通常用于存放字符串操作时的目的字符串。常用于存放字符串操作时的目的字符串。201308 GLUT_C25程序员在编写汇编语言源程序时,应该按照上述规定将程序程序员在编写汇编语言源程序时,应该按照上述规定将程序的各个部分放在规定的段内。的各个部分放在规定的段内。每个源程序必须至少有一个代码段,每个源程序必须至少有一个代码段,而数据段、堆栈段和附加数据段则根据程序的需要决定是否而数据段、堆栈段和附加数据段则根据程序的需要决定是否设置。设置。201308 GLUT_C26 指令指令指针寄存器指针寄存器指令指令指针指针寄存器寄存器IP:用来用来存放下一条要读取的
21、指令在代码段存放下一条要读取的指令在代码段中的偏移中的偏移地址。地址。IP在程序运行中能在程序运行中能自动修正自动修正,从而使其始终存放的是下一条,从而使其始终存放的是下一条要读取的指令在代码段的偏移要读取的指令在代码段的偏移地址。地址。由于由于CS和和IP的内容决定了程序的执行顺序,因此程序员不能的内容决定了程序的执行顺序,因此程序员不能直接用赋值指令对其内容进行直接用赋值指令对其内容进行修改。修改。有些有些指令能使指令能使IP和和CS的值改变(如跳转指令)或使其值压入的值改变(如跳转指令)或使其值压入堆栈或从堆栈中弹出恢复原值(如子程序调用指令和返回指令)堆栈或从堆栈中弹出恢复原值(如子程
22、序调用指令和返回指令)。201308 GLUT_C27 20位地址加法器位地址加法器 8086/8088CPU在在对对存存储储单单元元进进行行访访问问以以读读取取指指令令或或读读/写写操操作作数数时时,必必须须在在地地址址总总线线上上提提供供20位位的的地地址址信信息息,以以便便选选中中对应的对应的存储单元。存储单元。CPU的寄存器都是的寄存器都是16位(段基址寄存器和偏移地址都是)。位(段基址寄存器和偏移地址都是)。那么那么,CPU是如何产生是如何产生20位地址的呢?位地址的呢?CPU提供的用来对存储单元进行访问的提供的用来对存储单元进行访问的20位地址是由位地址是由BIU中的地址加法器产生
23、的。中的地址加法器产生的。201308 GLUT_C28 存储器中每个存储单元的地址可有以下两种表示方式:存储器中每个存储单元的地址可有以下两种表示方式:l逻辑地址:逻辑地址:其表达表达形式为形式为“段地址:段内偏移段地址:段内偏移地址地址”的的地址。地址。l段段内偏移地址又称为内偏移地址又称为“有效地址有效地址EA(Effective Address)。在读指令时,段地址由代码段寄存器在读指令时,段地址由代码段寄存器在读指令时,段地址由代码段寄存器在读指令时,段地址由代码段寄存器CSCS提供,当前要读取提供,当前要读取提供,当前要读取提供,当前要读取指令在代码段中的偏移地址由指令指针寄存器指
24、令在代码段中的偏移地址由指令指针寄存器指令在代码段中的偏移地址由指令指针寄存器指令在代码段中的偏移地址由指令指针寄存器IPIP提供;提供;提供;提供;在读取或存储操作数时,根据具体操作,段地址由在读取或存储操作数时,根据具体操作,段地址由在读取或存储操作数时,根据具体操作,段地址由在读取或存储操作数时,根据具体操作,段地址由DSDS、ESES或或或或SSSS提供,段内偏移地址由指令给出。提供,段内偏移地址由指令给出。提供,段内偏移地址由指令给出。提供,段内偏移地址由指令给出。201308 GLUT_C29物物理理地地址址:CPU与与存存储储器器进进行行数数据据交交换换时时在在地地址址总总线线上
25、上提提供供的的20位地址信息称为物理地址。位地址信息称为物理地址。物理地址的形成过程如图所物理地址的形成过程如图所示。示。201308 GLUT_C30段寄存器内容左移四位后(相当于乘以段寄存器内容左移四位后(相当于乘以10H),与),与16位段内偏位段内偏移地址,在移地址,在BIU中的地址加法器中进行相加,形成一个中的地址加法器中进行相加,形成一个20位的位的物理地址。这就是由逻辑地址求出物理地址的方法。由逻辑地物理地址。这就是由逻辑地址求出物理地址的方法。由逻辑地址求物理地址的公式为:址求物理地址的公式为:物理物理物理物理地址地址地址地址=段地址段地址段地址段地址 10H+10H+段内偏移
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 基础知识4-80X86处理器 基础知识 80 X86 处理器
限制150内