《汇编语言知识讲解》PPT课件.ppt_第1页
《汇编语言知识讲解》PPT课件.ppt_第2页
《汇编语言知识讲解》PPT课件.ppt_第3页
《汇编语言知识讲解》PPT课件.ppt_第4页
《汇编语言知识讲解》PPT课件.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习提问,什么是机器数,有哪三种机器数? (11110011)补的真值是多少?,本章要点,了解80x86计算机系统的基本结构:CPU、内存、I/O与系统总线 了解80x86 CPU的3种工作模式 掌握80x86 CPU的寄存器组 掌握实模式下的内存分段与编程要点 熟练掌握4个常用标志位(CF、OF、SF和ZF)的含义及判断方法,第2章 80x86计算机系统组织,2.1 80x86计算机的基本结构,80x86计算机的组成: CPU 内存 I/O子系统 各部分以系统总线相连,主要由算术逻辑部件,控制部件和寄存器组构成。 任务:执行内存中的指令序列。 CPU的作用: 执行算术与逻辑运算。 控制指令的执行。 通常,将Intel公司生产的8086/8088、80286、80386、80486、Pentium、Pentium Pro、Pentium II、Pentium III、Pentium 4 及其兼容的CPU,统称为80x86 CPU或x86 CPU,将基于这些CPU的计算机,称为80x86计算机或x86计算机。,2.1.1 CPU,图2-1 8086的功能结构,BIU,EU,8086CPU从功能上分成两大部分:总线接口单元BIU和执行单元EU。,BIU(总线接口部件)负责与存储器接口,即8086CPU与存储器之间的信息传送,都是由BIU进行的。BIU负责从内存的指定部分取出指令和操作数,传送给EU部分去执行。 EU(指令执行部件)部分负责指令的执行,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条(或多条)指令,在指令流队列中排队。在一条指令执行完以后就可以立即执行下一条指令,减少了CPU为取指令而等待的时间,提高了CPU的利用率和执行速度,降低了与之相配的存储器对采样速度的要求。,图2-2 8086的执行方式,BIU和EU分开,取指和执行可以重叠。,图2-3 一般8位机的执行方式,总线是用来系统各部件的一组公共导线,是部件之间进行数据交换的通道。 (1)数据总线 DB 数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 80x86系列CPU的数据总线为8位、16位、32位或64位。这就是“为什么通常的数据存取是以8位、16位、32位或64位进行的”。 数据总线越宽,处理能力越强。 具有N位数据总线并不意味着CPU只能处理N位数据。,2.1.2.系统总线,(2)地址总线 AB 地址总线用来指出数据的地址(内存或I/O)。 地址总线的位数决定了最大可编址的内存与I/O空间。 对于N位地址总线,CPU可以提供2N个不同地址:02N -1。 如8086的地址总线为20位,可寻址的最大内在空间是220MB,即1MB 地址总线由内存与I/O子系统共享使用(I/O只用低16位)。,(3)控制总线 控制CPU与内存和I/O设备之间的数据传送方式 (如传送方向)。,内存是存放指令和数据的部件,由若干内存单元构成。 内存单元的2个要素:地址(编号)与值(内容)。 为了正确区分不同的内存单元,给每个单元分配一个存储器地址,可存放1个字节。 地址从0开始编号,顺序递增1。机器中的地址是用无符号二进制数表示,可简写为十六进制数形式。 一个存储单元中存放的信息称为该单元的值(内容)。例如,2号单元中存放了一个数字8,则表示为:(2)=8。,2.1.3 内存,对内存单元可以读/写操作。对某个内存单元进行读操作后,该单元的值保持不变;对其进行写操作后,原来的值就被新的数据所覆盖。 对于字、双字、四字数据类型,由于它们每个数据都要占用连续多个单元,访问时只需给出最低单元的地址号即可,然后依次存取后续字节。习惯上,对于字、双字、四字数据类型,其低地址中存放低位字节数据,高地址中存放高位字节数据,这就是所谓的数据“逆序存放”。字的地址由其低地址来表示。 同一地址可以看作是字节、字或双字单元的地址,取决于具体的使用方式。,例: 内存现有以下数据: 地址: 0 1 2 3 4 5 数据:12H 34H 45H 67H 89H 0AH 则对于不同的数据类型,取到1号单元的数据是: (1)字节=34H (1)字=4534H (1)双字=89674534H 要遵守“数据对齐规则”: 字存放在偶地址,双字存放在4倍地址。,0 1 2 3 4 5,每个I/O设备必须通过专门的I/O接口电路与主机(CPU和内存)相连。 1. I/O接口:由一组寄存器组成,分为以下三种类型: (1)数据寄存器 (2)状态寄存器 (3)命令寄存器 2. I/O端口:将各个I/O接口中的所有寄存器统一编号,就形成了I/O地址,也称为 80x86 的I/O端口号。 大多数设备使用多个I/O端口(数据端口、状态端口等)。 CPU是通过端口与I/O设备通信的。 80X86 系统有两个独立的地址空间: 内存空间和I/O空间。,2.1.4 I/O子系统,2.2 80x86 CPU的寄存器组,8位通用寄存器8个: AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个: AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个: EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。AX、BX、CX、DX、SI、DI、BP和SP分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP的低16位。,1.通用寄存器,寄存器分为四类: 通用寄存器、段寄存器、专用寄存器、其他寄存器。,图2-9 8086的寄存器结构,记!,2.段寄存器 段寄存器有6个,每个16位,其中CS、DS、SS分别作为指令代码段、数据段和堆栈段寄存器,ES、FS和GS作为附加数据段寄存器。,指令指针寄存器:EIP(32位)、IP(16位)。IP是EIP的低16位。用来存放当前代码段中下一条要执行指令的偏移量(或称偏移地址)。 标志寄存器:EFLAGS(32位)、FLAGS(16位)。FLAGS是EFLAGS的低16位。用来反映指令执行结果或控制指令的执行方式。,3.专用寄存器,4. 其他寄存器(略),2.3 80x86 CPU的工作模式,(1)实模式 与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的内存空间,该空间内的地址称为实地址。MS DOS运行在实模式下。内存采用分段管理机制。(一个段64KB) (2)保护模式 32位80x86 CPU的主要工作模式,提供对程序和数据进行安全检查的保护机制。全部地址线都能寻址。内存采用分段和分页管理机制。但分段寻址与实模式不同。(一个段4GB) (3)虚拟8086模式 虚拟生成多个8086处理器,以便运行DOS程序。 分段寻址方式与实模式相同,分页寻址与保护模式相同。,3种工作模式 :,(1)内存分段 采用分段内存管理机制,主要包括下列几种类型的段: 代码段:用来存放程序的指令序列。 数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。 一个程序可以有多个代码段、多个数据段甚至多个堆栈段。 采用分段管理后,一个内存单元地址要用段基地址和偏移量所形成的逻辑地址来描述,表示为 段基址:偏移量,2.3.1 实模式,8086内部的ALU能进行16位运算,有关地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086对地址的运算也只能是16位。 对于8086,各种寻址方式,寻找操作数的范围最多只能是64 KB。所以,整个1 MB存储器以64 KB为范围分为若干段。在寻址一个具体物理单元时,必须要由一个基地址再加上由SP、IP、BP、SI或DI等可由CPU处理的16位偏移量来形成实际的20位物理地址。 基地址由8086中的段寄存器,即CS、SS、DS以及ES中的一个来形成的。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加。,段地址:偏移量,1200H:0000H,1200H:347CH,1200H:0FFFFH,64KB,图2-20 8086实地址模式物理地址的形成,逻辑地址 = 段基址:偏移地址 物理地址 = 段基址10H+偏移地址,20位,0000,段寄存器指示的段基址16位,每次在需要产生一个20位物理地址的时,一个段寄存器会自动被选择,且能自动左移4位再与一个16位的地址偏移量相加,以产生所需要的20位物理地址。 段寄存器与偏移量的搭配: 取指时: 物理地址=CS10H+IP 堆栈操作时:物理地址=SS 10H+SP。 取操作数时:物理地址=DS 10H+16位偏移量 或物理地址=ES 10H+16位偏移量,在不改变段寄存器值的情况下,寻址的最大范围是64 KB,所以,若有一个任务,它的程序长度、堆栈长度以及数据区长度都不超过64 KB,则可在程序开始时,分别给DS、SS、ES置值,然后在程序中就可以不再考虑这些段寄存器,程序就可以在各自的区域中正常地进行工作,若某一个任务所需的总的存储器长度(包括程序长度、堆栈长度和数据长度等)不超过64 KB,则可在程序开始时使CS、SS、DS相等,程序也能正常工作。,图2-21 8086的存储器结构,实地址模式,存储器采用分段管理后其物理地址的计算方法为 10H段基址+偏移量 (其中H表示是十六进制数) 段基址和偏移量一般用十六进制数表示,简便的计算方法是在段基址的最低位补以0H,再加上偏移量。,例2-2 某内存单元的地址用十六进制数表示为1234H5678H,其物理地址是多少? 1 2 3 4 0 (10H段基址) + 5 6 7 8 (偏移量) 1 7 9 B 8 (物理地址) 则其物理地址为179B8H,如图2-29所示。,图2-29 物理地址的形成,实地址模式,:,程序执行时,其当前段的段基址存放在相应的段寄存器中,偏移量视访问内存的操作类型决定,可能放在寄存器中或通过操作数寻址方式得到。 例2-3 若(CS)=1234H,(DS)=2000H,(IP)=0010H,(SS)=4000H,则下一条要执行指令的地址是多少? 10H(CS)+(IP)=12340H+0010H=12350H 所以,下一条要执行指令的地址是12350H。 可以用不同的段基址:偏移量表示同一个物理地址。例如可以用10001F00、11F00000、11000F00和10801700表示同一个物理地址,其物理地址都是11F00H。因这几个逻辑地址的段基址不同,所以这个单元属于不同的段(段发了部分重叠现象)。如下图:,段1 64KB,段2 64KB,此单元就会两个逻辑地址: 1000H:1F00H 1100H:0F00H 但物理地址是唯一的,为: 11F00H,段1起始地址:10000H,段2起始地址:11000H,.,状态标志通常由CPU根据指令执行结果自动设置,以反映指令执行结果的特征。 80x86 CPU将状态标志作为条件判断的依据,以控制程序的执行流程。 最常用的状态标志是CF、OF、SF和ZF,应熟练掌握。,2.4.1 状态标志,2.4 标志位,标志寄存器EFLAGS中有若干标志位,用来表示CPU当前的操作方式和状态信息,与普通应用程序有关的主要是FLAGS中的9个标志位,包括6个状态标志和3个控制标志。,各个标志位的功能分述如下: (1) 辅助进位标志AF(Auxitiary Carry Flag)。在字节操作时,由低半字节(一个字节的低4位)向高半字节(一个字节的高4位)进位或借位;在字操作时,低位字节向高位字节有进位或借位,则AF=1 ,否则为0。这个标志用于十进制算术运算指令中。 (2) 进位标志CF(Carry Flag)。当结果的最高位(字节操作时的D7或字操作时的D15)产生一个进位或借位,则CF=1,否则CF=0。这个标志主要用于多字节数的加、减法运算。移位和循环移位指令也能够把存储器或寄存器中的最高位(左移时)或最低位(右移时)放入标志CF中。 (3) 溢出标志OF(Overflow Flag)。在算术运算中,带符号数的运算结果超出了8位或16位(带符号数能表达的范围),即在字节运算时结果大于 +127或结果小于 -128,在字运算时结果大于32 767或结果小于 -32 768,OF=1,溢出和进位是两个不同性质的标志,千万不能混淆了。例如,在字节运算中 MOV AL,64H ADD AL,64H 即 01100100 + 01100100 11001000 D7位向前无进位,故运算后CF=0;但运算结果超过了+127,此时,溢出标志OF=1。 又例如,在字节运算中 MOV AL,0ABH ADD AL,0FFH 即 10101011 (-85) + 11111111 (-1) 1 10101010 D7位向前有进位,故运算后CF=1;但运算的结果又不小于 -128,此时,溢出标志OF=0。,在字运算中 MOV AX,0064H ADD AX,0064H 即 00000000 01100100 + 00000000 01100100 00000000 11001000 D15位未产生进位,故CF=0;运算结果未超过 +32767,故OF=0。,又例如: MOV AX,0AB00H ADD AX,0FFFFH 即: 10101011 00000000 + 11111111 11111111 110101010 11111111 D15位产生进位,故CF=1,但运算结果不小于-32768,故OF=0。,(4) 符号标志SF(Sign Flag)。它的值与运算结果的最高位相同。即结果的最高位(字节操作时为D7,字操作时为D15)为1,则SF=1;否则SF0。由于在80X86中符号数是用补码表示的,所以SF表示了结果的符号,SF=0为正,SF=1为负。 (5) 奇偶标志PF(Parity F1ag)。若操作结果中“1”的个数为偶数,则PF=1,否则PF=0。这个标志可用于检查在数据传送过程中是否发生错误。 (6) 零标志ZF(Zero Flag)。若运算的结果为0,则ZF=1,否则ZF=0。,(1) 方向标志DF(Direction Flag)。若用指令置DF=1,则引起串操作指令为自动减量指令,也就是从高地址到低地址处理字符串;若使DF=0,则串操作指令就为自动增量指令,也就是从低地址到高地址处理字符串。 (2) 中断允许标志IF(Interrupt-enable Flag)。若指令中置IF=1,则允许CPU去接收外部的可屏蔽中断请求;若使IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用。 (3) 追踪标志TF(Trap Flag)。置TF标志,使处理进入单步方式,以便于调试。在这个方式中,CPU在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以后进行检查。,2.4.3 控制标志,小 结,80x86计算机由CPU、内存和I/O子系统三部分组成,各部分之间由系统总线相连。 数据总线决定了CPU每次存取数据的最大宽度(位数);地址总线决定了最大可编址空间;控制总线控制CPU与内存和I/O设备之间的数据传送方式。 80x86系统的I/O地址为16位,可寻址65536个不同的I/O端口。 80x86程序可以存取的最小数据单位是字节。例如,若要读取的位数不足8位,则只能先读出一个完整字节,再屏蔽掉其它位。 字的存储采取“低字节在低地址,高字节在高地址,字的地址由低地址表示”的小端方式,双字也类似。,要正确理解内存单元的地址和值,地址表示位置,值是相应位置处的内容。同一地址既可以看作字节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论