IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用

上传人:E**** 文档编号:89189089 上传时间:2019-05-21 格式:PPT 页数:16 大小:238KB
返回 下载 相关 举报
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用_第1页
第1页 / 共16页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用_第2页
第2页 / 共16页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用_第3页
第3页 / 共16页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用_第4页
第4页 / 共16页
IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用》由会员分享,可在线阅读,更多相关《IBM-PC汇编语言程序设计 教学课件 ppt 作者 余朝琨 第2章 8086CPU中的寄存器结构与使用(16页珍藏版)》请在金锄头文库上搜索。

1、第2章 8086CPU中的寄存器结构与使用 2.1 8086CPU的基本结构 2.2 用寄存器(General Register) 2.3 段寄存器 2.4 控制寄存器,第2章 8086CPU中的寄存器结构与使用 寄存器的组成是汇编语言编程的资源之一,只要充分了解寄存器的使用方法,才能正确使用寄存器资源,编好程序。 2.1 8086CPU的基本结构 图21是8086CPU中结构示意图。,汇编语言程序设计者必须了解计算机资源及其源部件,如地址空间、寄存器组、寻址方式、指令系统等。计算机通常由五大部分组成:控制器、运算器、存储器、输入设备和输出设备。其中把控制器和运算器两部分集成在一个芯片上,称为

2、微处理器,即中央处理器CPU(Central Processing Unit),CPU是整个系统的核心,指令的执行,机器的工作都是由其控制完成。 80X86是以Inter公司1978年推出的8086微处理器为基础,作纵横两个方向扩展发展起来的微处理器系列,其CPU为8086/8088、80286、80386、80486,至目前最新的奔腾与高性能奔腾中的一种,配以适当数量的支持芯片,构成功能更为强大的微型计算机系统。 8086CPU是16位微处理器,采用16位数据总线。8088CPU是准16位的微处理器,采用8位数据总线,而使用16位内部总线。8086具有6个字节指令流队列,8088则是4个字节

3、。两者指令系统相同,汇编语言一致,除了运行速度外,其它方面无区别。,2.1.1 8086CPU结构 8086CPU由指令执行部件EU与总线接口部件BIU两部分组成,其结构示意图如图21所示。 EU部件(Execution Unit)控制和执行指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和一个标志状态寄存器FLAGS组成。 BIU部件(BUS Interface Unit)负责从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设之间信息传递。BIU主要由指令队列、指令指针寄存器、段寄存器、地址加法器(形成20位的物理地址)组成。 EU和BIU能独立运行,

4、在一条指令的执行过程中,就可取下一条指令送入指令队列,实现流水操作,提高指令运行速度,因为EU与BIU可实现并行操作。 ,2.1.2 8086寄存器结构及其用途 对于汇编语言程序设计者而言,CPU中各寄存器的使用,存储器和I/O端口是他们进行编程的基本活动的“舞台”。尤其对寄存器的默认用法的掌握至关重要。必须引起充分重视。 Inter8086/8088CPU共有14个十六位寄存器,如图22所示。分别为:通用寄存器8个,控制寄存器2个,段寄存器4个。,2.2 通用寄存器(General Register) 从图22可知,通用寄存器共有8个,根据使用情况又可分为三类。 2.2.1 数据寄存器 AX

5、,BX,CX,DX四个寄存器中的每一个,既可以作为十六位寄存器来使用,同时也可以作为两个8位寄存器来使用,如:AX可看成为: 因此,这四个十六位寄存器也可以看成8个独立的八位寄存器AH,AL,BH,BL,CH,CL,DH,DL,它们分别由十六位寄存器的高八位和低八位构成。在汇编语言程序设计中,由编程人员根据需要任意选用,这些寄存器既可存放参加运算的操作数,也可存放运算的结果,具有良好的通用特性,这就是这些寄存器的共性。,但是,上述寄存器在某些指令中,或在某种场合下又有其默认的用法,这就是个性。通常是:(1)AX的默认用法有:AX为十六位累加器,AL为八位累加器;在I/O指令中必须用AX或AL;

6、AX与DX配合组成32位数据,DX中存放高16位数据等;(2)BX常做为基地址寄存器;(3)CX在串操作或用循环指令(如LOOP等)中的循环计数必须选用CX;(4)DX作为数据寄存器,在I/O端口操作中存放端口地址,与AX配合形成32位数据。还有一些隐含使用将在指令系统中作进一步说明。总之,寄存器的默认搭配必须认真记住,才不致于违反语法规则。,2.2.2 指针寄存器 堆栈指针(SP)和基址指针(BP)通常用来作为十六位地址指针。SP是指向堆栈段栈顶存储单元的偏移量,且总是指向栈顶,进栈与出栈的操作(字操作)皆由SP来指明偏移地址,堆栈指针SP就是这样的隐含使用。 用BP作地址指针时,默认的也是

7、堆栈段,用BP作地址指针可以对堆栈中任何字节存储单元或字单元进行操作,这与SP所不同之处。但BP 指明的存储单元可允许段跨越(这在后面将要讲到)。 2.2.3 变址寄存器 两个变址寄存器SI,DI皆为十六位,在不同情况下的用法为: (1) 只有在串操作指令中,源串操作数必须用SI来提供偏移量,目的串操作数必须用DI提供偏移量。对于串操作指令,SI、DI的作用绝对不能互换,在这种情况下,SI、DI才是名副其实的源变址寄存器与目的变址寄存器,必须严格按规定使用SI、DI。,(2)在串指令以外的多数情况下,源和目的变址寄存器,可由用户随意选用,被用来作地址寄存器,在变址寻址中SI、DI的内容作为段内

8、偏移量的组成部分。 (3)SI、DI两寄存器除作地址寄存器外,同BP类似,也可以作为通用数据寄存器使用,存放操作数和运算结果。 2. 3 段寄存器 在IBMPC机中,有四个专门存放段地址的寄存器,称为段寄存器。它们是代码段CS、数据段DS、堆栈段SS和附加段ES寄存器。每个段寄存器可以确定一个段的起始地址,而这些段各有各的用途。代码段主要存放运行的程序。数据段存放运行程序所用的数据,如果程序中使用了串处理指令,则其源操作数默认存放在数据段中。堆栈段定义了堆栈的所在区域,堆栈是一种数据结构,它开辟了一个比较特殊的存储区,并以“先进后出”的方式来访问这一区域,它只有一个出口,并以SP堆栈指针指明栈

9、顶。附加段是附加的数据段,它是一个辅助的数据区,在串操作指令中用到目的串必定存放在附加段中。,程序员在编制程序时,应该按照上述规定把程序的各部分放在规定的区段之内。 除非专门指定,一般情况下,编程人员定义好的各段在存储区中的分配是由操作系统负责的。当CPU访问某存储区单元,如取指令或存取操作数时,就必须指明该存储单元在哪个段寄存器指向的存储段中,同时给出该存储单元在这个存储段内的偏移地址,即偏移量。一个存储单元与它所在段的段基址之间的距离,即字节数叫作该存储单元的偏移量。 一个程序把存储器划分为多少个存储段可以是任意的,用CS,DS,ES,SS段寄存器分别指明的段叫做当前段。在程序运行的任何时

10、刻,最多只能有四个当前段。为了切换当前段,可以用程序的办法更换相应段寄存器的内容。例如:某程序已经设定有两个数据段DATA1和DATA2,当前数据寄存器DS正指向DATA1段基值时,DATA1即为当前数据段。,若在程序运行中要求访问数据段DATA2中某存储单元,这时必须先转换当前数据段,用几条指令让DS指向数据段DATA2的段基址,把DATA2切换为当前数据段。 2.4 控制寄存器 包括IP和PSW两个16位寄存器。 2.4.1 指令指针IP IP与其它计算机和微处理器中程序计数器PC的作用类同,它是指令的地址指针。它用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向下一条指令的首地址

11、,称为当前IP,它与CS寄存器联用确定下一条指令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP的内容,使它指向下一条指令的首地址。可见,计算机就是用IP寄存器来控制指令序列的执行流程的,因此IP寄存器是计算机中很重要的一个控制寄存器。,编程人员编制的程序不能直接访问IP,即不能用指令去取出IP的值或给IP设置给定值。但是可以通过某些指令的执行而自动修改IP的内容。例如转移指令JMP,JNC等的执行,会把目的地址的偏移量送入IP;调用子程序指令CALL执行时,IP原有内容自动压入堆栈,而把子程序入口地址偏移量自动送入IP。当从子程序返

12、回主程序时,执行返回指令RET时又会自动从堆栈中弹回原有IP的内容送回IP。 2.4.2 程序状态字寄存器PSW PSW(Program Status Word)为程序状态字寄存器,这是一个16位寄存器。也称为标志寄存器。用来反映微处理器在程序运行时的某些状态。PSW寄存器中有9个标志位,其中6个标志位(OF,SF,ZF,AF,PF,CF)作为状态标志,记载了刚刚执行完算术或逻辑运算指令后的某些特征。,另外三个标志位为DF、IF、TF作为控制标志,完全由编程者设定,在执行某些指令时起控制作用。而状态标志所提供的信息往往作为后续条件转移指令的转移控制条件,所以亦称为条件码。状态标志和控制标志在P

13、SW寄存器中的位置如图23所示。,PF:(Parity Flag)奇偶标志,若操作结果的低8位中含1的个数为偶数时,则PF置1,否则PF置成0。注意:PF只检查操作结果的低8位,与该指令操作数的长度无关。主要用来为机器中传送信息时可能产生的代码出错情况提供检验条件。 CF:(Carry Flag)进位标志,当进行算术运算时,如果最高位(对字操作是D15,对字节操作是D7)产生进位(加法)或借位(减法),则CF置1,否则置0。CF也可在移位类指令中使用,用它保存从最高位(左移时)或最低位(右移时)移出的代码(0或1)。以上六个状态标志中,也只有CF可用指令来设置其状态,如CLC指令使CF复位,S

14、TC使CF置位,CMC,可使CF求反。,以下3位是控制标志位。 DF:(Direction Flag)方向标志,主要用在串处理指令中控制处理信息的地址增减的方向。当DF位置1时(使用STD指令),每次串操作后变址寄存器SI和DI自动减1(字节操作)或减2(字操作),这样就使串处理从高地址向低地址方向处理。当DF为0时,则使变址寄存器SI和DI自动加1(字节操作)或加2(字操作),使串处理从低地址向高地址方向进行。 IF:(Interrupt Flag)中断标志,这个标志位主要针对外中断中可屏蔽中断的开放或禁止。当IF=1时,CPU允许响应可屏蔽中断,相反,IF0时,则不允许响应可屏蔽中断,这里所说的屏蔽即为“拒绝”之意。用STI指令使IF置1,用CLI使IF=0。 TF:又称陷阱标志(Trap Flag),又称跟踪标志(Trace Tlag)或称单步标志位。用于单步方式操作,当TF=1时,在执行完一条指令后,产生单步中断。这在DEBUG调试程序状态下,可以使指令单步运行,可逐一检查各寄存器内容,标志状态、存储器的检查或修改等等。TF=1时为调试程序时所用,当程序调试成功后让TF=0,CPU正常工作不产生单步中断。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号