Intel8086-8088CPU汇编语言编程结构.ppt_第1页
Intel8086-8088CPU汇编语言编程结构.ppt_第2页
Intel8086-8088CPU汇编语言编程结构.ppt_第3页
Intel8086-8088CPU汇编语言编程结构.ppt_第4页
Intel8086-8088CPU汇编语言编程结构.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第2章 Intel 80x86汇编语言编程结构 主讲: n2.1 Intel 8086 CPU的汇编语言编程结构 n2.2 Intel的32位CPU汇编语言编程结构 2.1 Intel 8086 CPU的汇编语言编程结构 Intel 8086/8088 CPU是Intel 公司于上 个世纪七十年代末先后推出的两种16位的微处理器 ,它们被IBM公司选择作为流行于世界各地的16 位微型计算机IBM-PC机和IBM-PC/XT机的 CPU,同时也是世界各国16位兼容机的主流CPU 。 Intel 8086/8088 CPU的设计思想领先, 指令系统丰富,寻址方式众多,是Intel 后续处理 器乃至Pentium处理器的鼻祖,因而,基于Intel 8086/8088 CPU的16位微型计算机的影响极其 深远,今天的32位机都尽量保持与基于Intel 8086/8088 CPU的16位计算机的兼容。 n2.1.1 8086 CPU结构概述 n2.1.2 8086 CPU寄存器结构 n2.1.3 8086 CPU内存组织 n2.1.4 8086 CPU的I/O组织 n2.1.1 8086 CPU结构概述 微型计算机中包含运算器和控制器电路的 大规模集成电路,称为“微处理器”,又称“中 央处理器(CPU)”,其职能是执行算术/逻辑 运算,并负责控制整个计算机系统,使之能自 动协调地完成各种操作。 18086的基本性能指标 n16位微处理器; n采用高速运算性能的HMOS工艺制造,芯片上集 成了2.9万只晶体管; n使用单一的+5V电源,40条引脚双列直插式封装 ; n时钟频率为5MHz10MHz,基本指令执行时间 为0.3ms0.6ms n16根数据线和20根地址线,可寻址的地址空间达 1MB n8086可以和浮点运算器、I/O处理器或其他处理 器组成多处理器系统,从而极大地提高了系统的数 据吞吐能力和数据处理能力。 n28086微处理器内部结构组成 从功能上看,可以分为两大部分,结构图如下: (1)总线接口单元BIU (Bus Interface Unit) 包括总线控制逻辑(输入/输出控制电路)和指令队 列缓冲器两部分。 总线控制逻辑用于分时传递地址信息或数据信息; 指令队列缓冲器:用于暂存指令、取指令和执行指 令可重叠操作 (2)执行单元EU (Execution Unit) 用于从指令队列中取出指令;对指令进行译码,发 出相应的控制信号;接收由总线接口送来的数据或 发送数据至接口。 n2.1.2 8086 CPU寄存器结构 8086微处理器内部共有14个16位可编程 寄存器,按大至的功能分为4组,即数据寄存 器、指针及变址寄存器、段寄存器、控制寄存 器四组 n1.数据寄存器 这组寄存器包括AX、BX、CX、DX四个寄存器 ,它们都可以以字(16位)的形式访问,也可以以字 节(8位)的形式访问。AX、BX、CX、DX这四个寄 存器除了作为一般的数据寄存器使用以外,还有各自 的专用场合,这些专用场合只有该寄存器可以使用, 其他的存储器件无法代替。 AX(accumulator):是乘除法运算和输入/输出 时使用的专用寄存器。 BX(base):用来存放存储器的地址或地址的一部 分。 CX(count):在循环(LOOP)和串处理指令中用 作隐含的计数器。 DX(data):在乘除法运算和输入/输出时使用的 专用寄存器。 n2.指针及变址寄存器 这组寄存器包括SP、BP、SI、DI四个16位寄存器。 它们可以像数据寄存器一样在运算过程中存放操作数, 但它们只能以字(16位)为单位使用。此外,在段内 寻址时用它们来提供偏移地址(又称指针)。 nSP(stack pointer):称为堆栈指针寄存器。用来 指示栈顶的偏移地址, nBP(base pointer):称为基址指针寄存器。用作 堆栈区中的一个基地址以便访问堆栈中的其他信息。 nSI(source index):源变址寄存器。当与DS联用 时,用来确定数据段中某一存储单元的地址,在串处理 指令中,SI作为隐含的源变址寄存器,与DS联用达到 在数据段寻址的目的。 nDI(dest index):目的变址寄存器。在串处理指令 中,DI作为隐含的目的变址寄存器并ES联用在附加段 中寻址,其它功能和使用方法与SI基本相同。 n3.段寄存器 这组寄存器包括CS、DS、ES、SS四个16位寄 存器。它们是Intel 8086/8088的四个段寄存 器。为了寻址1MB内存,Intel 8086/8088将 内存分成若干个逻辑段。每个段长64KB。这四个 段寄存器存放各段的段地址(段基址)。 nIntel 8086/8088中的四个段寄存器分别称为 代码段CS(Code Segment) 寄存器、 数据段DS(Data Segment) 寄存器、 堆栈段SS(Stack Segment) 寄存器和附加段ES(Extra Segment) 寄存器。 nCS段寄存器给出当前代码段的段地址。DS段寄存 器给出当前数据段的段地址。SS段寄存器给出当 前堆栈段的段地址。ES段寄存器给出当前使用的 附加段的段地址。 4.控制寄存器 这组寄存器包括IP(instruction pointer)和 FLAGS两个16位寄存器。IP为指令指针寄存器,用 来存放代码段中的偏移地址,它与CS寄存器联用确定 下一条指令的物理地址。FLAGS为标志寄存器,又称 程序状态字寄存器PSW(program status word ),是一个16位的寄存器,Intel 8086/8088使用 其中的9位,即6位条件码标志(flag)和3位控制标志 ,具体情况见下表所示: 1514131211109876543210 OFDFIFTFSFZFAFPFCF FLAGS寄存器的各位情况 其中,标示其中,标示的那一位为无用位,该位为的那一位为无用位,该位为0 0或或1 1没有任何没有任何 实际意义。条件码标志用来记录程序中运行结果的状态实际意义。条件码标志用来记录程序中运行结果的状态 信息,控制标志用来控制信息,控制标志用来控制CPUCPU的工作状态。的工作状态。 n(1)条件码标志 OF(Overflow Flag)溢出标志 溢出即把参加运算的两个数当成有符号数时, 当运算结果超过了补码的表数范围,从而导致 结果出错,这种情况称为溢出。 当溢出时, CPU自动使OF=1否则CPU自动使OF= 0。 如两个正数相加结果为负,两个负数相加结果 为正,正数减负数结果为负数,负数减正数结 果为正,这四种情况,显然结果都是错误的, 它们都是溢出。虽然是否会溢出CPU自身可以 判别出来,但读者应该也要掌握简单有效的判 别方法。 SF(Sign Flag)符号标志 把参加运算的两个数当成有符号数时,结果为负时 SF=1,否则SF=0。这种情况下,SF就是最高位 的状态。 ZF(Zero Flag)零标志 结果为0时ZF=1,否则ZF=0。 CF(Carry Flag)进位标志 记录运算时最高有效位是否产生了进位或借位值。 当最高有效位有进位或借位时CF=1,否则置CF=0 。 AF(Auxiliary carry Flag)辅助进位标志 记录运算时第3位(字节运算)或第7位(字运算)产 生的进位或借位值。例如,执行加法指令时第3位有 进位时AF=1,否则AF=0。 PF(Parity Flag)奇偶标志 当传送信息时可用PF来帮助进行奇偶校验。当结果 操作数中1的个数为偶数时PF=l,否则PF=0。 (2)控制标志 n控制标志是控制程序的运行及CPU的工作,包括DF、 IF、TF三位。 DF(Direction Flag)方向标志 n当机器执行串操作指令时,若DF位为1,每次操作后使 变址寄存器SI和DI减量.当DF为0时,则使SI和DI增 量。可用相应的汇编语言指令来设置该位。 IF(Interrupt Flag)允许标志 nIF为l时,开放可屏蔽中断中断,否则关中断。可用相 应的汇编语言指令来设置该位。 TF(Trap Flag)陷阱标志 nTF=1时,每条指令执行完后产生陷井,TF=0时, CPU正常工作不产生陷阱。TF无法使用汇编语言指令 来设置该位,但可通过间接的方法改变该位的值。 n2.1.3 8086 CPU内部组织 n1.内存储器的组成 n存储器由若干个基本存储单元组成,每个基本存 储单元有一个惟一的存储器地址即物理地址。每 个基本存储单元存放1个字节的数据,所以基本 存储单元又称字节单元。1个字节包含了8个二进 制位。 n存储容量是指存储器所具有的基本存储单元个数 ,存储容量的基本单位是字节B,常用的单位还 有KB(千字节),MB(兆字节),GB(吉字 节),甚至TB(太字节)。 n换算规则为:1KB=210字节=1024字节 1MB=220字节,1GB=230字节,1TB=240字节 。 n2.基于Intel 8086/8088 CPU的内存结构 8086/8088 CPU有20条地址线,因此 具有1M(220)的寻址能力,即可以在1M字 节单元中寻找出所需的一个存储单元。在机器 内部是用20位二进制无符号数表示存储单元 地址。 n(1)存储单元的地址和内容 n存储单元有字节单元和字单元两种,其中,一 个字节单元只有一个字节,而一个字单元包含 几个字节单元,取决于机器字长,字长为16 的机器,字单元包含连续的两个字节单元,字 长为32的机器,字单元包含4个连续的字节单 元,其它字长的机器依此类推。 n存储单元的地址 众多的存储单元以存储单元的地址加以区 分。存储单元地址从0开始顺序编址,依 次加1。存储单元的地址是无符号数。 n存储单元的内容 一个存储单元中存放的信息称为该存储单 元的内容。 n(2)存储单元物理地址的形成 n内存物理空间 Intel 8086/8088CPU地址线是20位的,所以,基 于Intel 8086/8088 CPU的计算机的内存物理空间 最大可达220B=1MB,其物理寻址范围是00000H FFFFFH。在实际的计算机内存配置中,可以小于 1MB。 n存储单元物理地址 物理地址即真正的地址,即由CPU地址引脚输出的地址 ,在基于Intel 8086/8088 CPU的计算机中,存储 单元的物理地址是20位的,每个存储单元拥有惟一的 20位物理地址。 n存储器地址空间的分段 在基于Intel 8086/8088 CPU的计算机中,把 1MB地址空间字节划成若干逻辑段。每个逻辑段必须 满足两个条件:一是逻辑段的起始字节单元物理地址( 简称段首址)必须是16的倍数,即20位物理地址的最 末4位为全0;二是逻辑段的最大长度为64KB,最小 长度为1B。 n段地址 在一个逻辑段中,所有存储单元的段地址都是一样的 ,16位,等于逻辑段在主存中的起始字节单元物理地 址(简称段首址)的高16位,程序运行后,段地址被 装入CPU中对应的段寄存器中。 n段内偏移地址 是指同一段内存储单元距离段首址的偏移量,简称偏 移地址(或称有效地址),用EA来表示,由于每段最 长为64KB,所以偏移地址为16位。 n物理地址形成 物理地址由Intel 8086/8088 CPU内部的20位 地址加法器产生,由20根地址引脚输出。20位地址 加法器的两个输入量是段寄存器中的16位段地址和指 令执行产生的16位偏移地址,按照(段地址16) 偏移地址的机制相加。即:物理地址(段地址 16)偏移地址,其中(段地址16)也可由段 地址左移4位,其后补4个0来实现。 n2.1.4 8086 CPU的I/O组织 众多的外部设备与主机(CPU和存储器)的通信是 通过外设接口(Interface)进行的,每个接口的具 体形式,功能都不尽相同,每个接口都包括一个或若 干个寄存器,数目不尽相同,但所有这些寄存器按照 它们的功能大致可以分为三类,这三类寄存器分别是 : n数据寄存器:存放外设和主机间传送的数据 n状态寄存器:保存外设或接口的状态信息 n命令寄存器:保存CPU发给外设或接口的控制命令 n在基于Intel 8086/8088 CPU的计算 机中,为了区别CPU中的寄存器,我们把 接口中的寄存器称为端口。因此接口中的 数据寄存器、状态寄存器、命令寄存器又 称数据端口、状态端口、控制端口。为了 区分外设接口中的众多端口,给每个端口 赋予一个端口地址(又称端口号),这样 就构成一个独立于内存的端口地址空间, 也称I/O空间。 2.2 Intel的32位CPU汇编语言编程结构 Intel 32位 CPU是指Intel公司生产的字 长为32位的CPU,从80386Pentium 4,基于Intel 32位 CPU的计算机的汇编 语言编程结构和基于Intel 8086/8088 CPU的计算机的汇编语言编程结构没有本质 的区别,但在工作模式,可编程寄存器的字 长及数量,内存管理等方面有很大的改进。 n2.2.1工作模式概述 n2.2.2 Intel 32位CPU的编程结构介绍 n2.2.1工作模式概述 Intel 32位CPU共有三种工作模式,即 实模式,保护模式,虚拟8086模式。 1 实模式: 只能访问实地址的工作模式。Intel32位 CPU被复位或加电时以实模式启动。 n特点: (1)Intel32位CPU都只有低20位地址线 起作用,仅能寻址第一个1MB的内存空间,禁 用CPU的所有保护功能,也不支持分页; (2)采用16位分段,段地址与偏移地址都是 16位,20位物理地址是由16位段地址左移4 位加上16位偏移地址得到的; (3)CPU总是从地址CS:IP处取指令,SS :SP指向堆栈段的栈顶地址;可以使用32位寄 存器和32位操作数,但以32位表示偏移地址时 ,只使用其中的低16位,高16位为0。 n2 保护模式: 在保护模式下,Intel 32位CPU的所有功能都 是可用的。全部地址线都能寻址;支持多任务,能 够快速地进行任务切换和保护任务环境;4个特权 级和完善的特权检查机制,既能实现资源共享又能 保证代码和数据的安全和保密及任务的隔离;支持 虚拟8086方式,便于执行8086程序。 n特点: (1)具有4个特权级(03级),其中0级为最高 特权级,3级为最低特权级; (2)采用32位物理地址,偏移地址也是32位, 每段的长度可达4GB; (3)特权指令只能由运行在特权级0下的程序使 用; (4)程序设计方法与实模式基本相同,但部分指 令所执行的操作与实模式有一定差别。 n3 虚拟8086模式: n虚拟8086模式是保护模式下的一种工作方式,也 称为V8086模式,或者简称为V86模式。在此模 式下,处理器类似于8086。寻址的地址空间是 1M字节;段寄存器的内容作为段值解释;20位 存储单元地址由段地址乘以16加偏移地址构成。 可以运行DOS及以其为平台的软件。但V86模式 毕竟是虚拟8086的一种方式,所以不完全等同于 8086。 n特点: (1)可以运行8086程序; (2)分段寻址与实模式相同; (3)分页寻址与保护模式相同; (4)支持保护机制; (5)该模式下的程序处于特权级3,因而不能使 用特权指令。 n2.2.2 Intel 32位CPU的编程结构介绍 n基于Intel 32位CPU的汇编语言编程结 构,相比基于Intel 8086/8088 CPU 的编程结构,没有本质的改变。在实模式 下和虚拟8086模式下,和8086/8088 汇编语言编程结构几乎完全一样,在保护 模式下,有所区别。在CPU中,可编程寄 存器的字长、数目有所增加;在内存中, 最大寻址空间为4GB(232);至于I/O 端口,除了可以使用32位端口地址外, 整个I/O空间仍然为64KB。 1.基于Intel 32位 CPU的可编程寄存器组 Intel 32位 CPU主要是80386、80486以及 Pentium系列CPU,其中应用程序可以用汇编语言直 接编程的可编程的寄存器只有16个,按照大致的功能 ,分为三组:通用寄存器,段寄存器,专用寄存器。 (1)通用寄存器 32位通用寄存器有8个,分别是EAX、EBX、ECX、 EDX、ESI、EDI、EBP、ESP,其中它们的低16位 分别与8086、80286的寄存器AX、BX、CX、DX 、SI、DI、BP、SP相同,可以独立使用。AX、BX 、CX、DX也可分成两个8位寄存器:AH、AL、BH 、BL、CH、CL、DH、DL。 功能上,8位及16位的寄存器仍然保持其在实模式下 其原有的功能,而对于32位通用寄存器来说,除了一 些专用功能及存放32位的操作数外,EAX、EBX、 ECX、EDX、ESI、EDI、EBP、ESP这8个寄存器 都可作基址寄存器使用,而EAX、EBX、ECX、EDX 、ESI、EDI、EBP这7个寄存器还可以作变址寄存器 使用。 n(2)段寄存器 除了CS、DS、ES和SS外,32位的CPU还引入了另外两 个16位的段寄存器FS和GS。通常,FS和GS也称为附加段 寄存器。在实模式下,段寄存器用来存放对应段的段地址, 而在保护模式下,存放段选择符。 n(3)专用寄存器 专用寄存器共2个,分别是指令指针寄存器EIP和标志寄存 器EFLAGS。 n指令指针寄存器EIP 指令指针寄存器EIP的低16位是16位的指令指针寄存器IP ,它与前面介绍过的8086CPU中的IP相同

温馨提示

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

评论

0/150

提交评论