微机原理与接口 第4章1_指令格式及寻址方式.ppt_第1页
微机原理与接口 第4章1_指令格式及寻址方式.ppt_第2页
微机原理与接口 第4章1_指令格式及寻址方式.ppt_第3页
微机原理与接口 第4章1_指令格式及寻址方式.ppt_第4页
微机原理与接口 第4章1_指令格式及寻址方式.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1 第4章80 x86指令系统 主要内容 8086 8088指令格式8086 8088指令系统的寻址方式8086 8088指令系统80 x8 Pentium指令系统 2 1 18086 8088指令系统计算机是通过执行指令序列来完成用户的特定任务的 因此每种计算机都有一组指令集供用户使用 这组指令集就称为计算机的指令系统 指令系统中的每一条指令都对应着微处理器要完成的一种规定的操作 这在设计微处理器时就事先规定好了 所以指令系统是表征一台计算机性能的重要因素 它的格式与规模将直接影响到机器的硬件结构 指令系统是程序员编写程序的基础 因此很好地掌握指令系统的有关知识是后续进一步学习的关键 3 4 1 18086 8088指令格式 计算机是通过执行指令来处理各种数据的 因此 一条指令即要指出如何处理数据 同时还应指出数据的来源 操作结果的去向 一般来说指令是由两部分组成 即操作码和操作数 在指令中操作码是不可缺少的 但操作数可以没有 也可以有一个操作数或两个操作数 操作码 操作数 用来描述该指令的操作对象 给出该指令应完成何种操作 4 8086 8088指令系统采用变字长的指令编码格式 其指令可由1 6个字节组成 它包括操作码 第一字节 寻址方式 第二字节 位移量 立即数 第三到第六字节 三部分组成 其中 寻址方式 位移量 立即数为操作数部分 5 opcode opcode Mod字节 opcode Mod字节 opcode Mod字节 opcode Mod字节 opcode Mod字节 Data disp disp 低 Data disp 低 Data disp 高 disp 高 disp 低 disp 高 Data Data 低 Data 高 操作码部分 操作数部分 一字节指令 二字节指令 三字节指令 四字节指令 五字节指令 6 双操作数指令中各字段定义 操作码编码Add 000000Mov 100010 W表示为字节 字操作reg表示其中的R操作数两者结合能表示16种R 说明reg字段所表示的R操作数是源还是目的D 1 R为目的D 0 R为源 表示第二个操作数是什么 Mod 00 01 10 为存储器Mod 11 为寄存器 指令中的位移量moval si 05h 指令中的立即数moval 1234h 7 双操作数指令中各字段定义 8 例4 1写出下面指令的机器语言编码 MOV BX DI 6 CL 指令码为 88H 49H FAH OPCODEDW mod r m reg disp8 100010 01 001 001 0 0 11111010 例4 2写出下面指令的机器语言编码 ADDAX BX DI 0826 03H81H26H08H 9 指令按所含的操作数的个数分为四种形式 无操作数hlt ret 单操作数 可以是源操作数 也可以是目的操作数 Pushax popbx 双操作数 一个是源操作数 一个是目的操作数 Addax bx 隐含操作数 可能隐含一个操作数 源或目的 也可能隐含两个操作数 mulbl 10 根据操作数的个数 指令格式可分为以下几种 1 零操作数指令指令格式中没有操作数或操作数是隐含约定的 2 一操作数指令指令格式中有一个操作数 或还有一个隐含的操作数 实际上是双操作数 3 二操作数指令指令中有两个操作数 其中一个为目的操作数 另一个为源操作数 由此可见 操作数可分为源操作数和目的操作数 源操作数 只能读取的操作数 目的操作数 即可读取又可写入 存放操作结果 的操作数 11 一条指令中的信息按其含义分成若干个信息段 每一信息段占一个字节或多个字节 且按一定的顺序排列 这便于CPU解释执行 如8086 8088CPU的指令系统 它采用1 6个指令字节的变字长指令格式 12 第4章 4 1 28088 8086的寻址方式 指令通常应提供的信息1 做什么操作2 操作数从哪里来3 操作结果放在哪里4 对于调用和转移指令 还要涉及转移或调用地址的提供方式定义 指令中如何提供操作数或操作数地址的方式 从8088 8086的指令格式入手 论述 立即数寻址方式寄存器寻址方式存储器寻址方式 13 4 1 28086 8088的寻址方式所谓寻址方式就是寻找操作数存放地址 位置 的方法 在8086 8088系统中操作数存放的位置用以下3种 操作数包含在指令字节中 即指令格式中操作数部分就是操作数本身 这种操作数叫立即数操作数 操作数存放在CPU的某个内部寄存器中 这种操作数叫寄存器操作数 操作数在内存的数据区中 这种操作数叫存储器操作数 14 在8086 8088系统中 操作数又可分为两大类 数据操作数和地址操作数 因此 寻址方式也分为数据寻址方式和地址寻址方式两大类 1 数据的寻址方式1 立即数寻址方式例如 MOVAL 80HMOVAX 1234H 15 2 寄存器寻址方式 操作数存放在CPU的内部寄存器reg中8位寄存器r8 AH AL BH BL CH CL DH DL16位寄存器r16 AX BX CX DX SI DI BP SP4个段寄存器seg CS DS SS ES例如 MOVAX CX 89 C1 存储器 AX CX 指令码 包括操作数 16 3 存储器寻址方式 操作数在主存储器中 用主存地址表示因此 要存取操作数就必须知道其存储器的单元地址 在指令中可以直接给出或间接给出操作数的地址 以达到存取操作数的目的 程序设计时 8088 8086采用逻辑地址表示主存地址段地址在默认的或用段超越前缀指定的段寄存器中指令中只需给出操作数的偏移地址 有效地址EA 指令中给出的地址只是操作数的有效地址 EA 并且是放在方括号 中 若要从存储器中存取操作数还须得到实际的地址 物理地址 物理地址 段基址左移四位 有效地址 17 8086设计了多种存储器寻址方式 1 直接寻址方式2 寄存器间接寻址方式3 寄存器相对寻址方式4 基址变址寻址方式5 相对基址变址寻址方式 18 有效地址可以由以下三种地址分量组成 位移量 Displacement 它是存放在指令中的一个8位或16位的数 但它不是立即数 而是一个地址 基址 BaseAddress 它是存放在基址寄存器BX或BP中的内容 变址 IndexAddess 它是存放在变址寄存器SI或DI中的内容 对于某条具体指令 这三个地址分量可有不同的组合 如果存在两个或两个以上的分量 那么就需要进行加法运算 求出操作数的有效地址 EA 进而求出物理地址 PA 正是因为这三种地址分量有不同的组合 才使得对存储器操作数的寻址产生了若干种不同的方式 19 3 存储器寻址方式 直接寻址方式MOVAL 1064 设当前 DS 2000H 读取一个字节 21064H DS 10H 20000H 20000H 20 直接寻址方式的有效地址在指令中直接给出默认的段地址在DS段寄存器 可使用段超越前缀改变用中括号包含有效地址 表达存储单元的内容 演示 MOVAX 2000H AX DS 2000H MOVAX ES 2000H AX ES 2000H 例 读取一个字 直接寻址方式 22 3 存储器寻址方式 寄存器间接寻址设当前 DS 3000H SI 2000H BX 1000HMOVAX SI SI 2000H BX1000H MOV BX AL 23 3 存储器寻址方式 寄存器相对寻址 有效地址是寄存器内容与有符号8位或16位位移量之和 寄存器可以是BX BP或SI DI有效地址 BX BP SI DI 8 16位位移量段地址对应BX SI DI寄存器默认是DS 对应BP寄存器默认是SS 可用段超越前缀改变 相对寻址方式演示 MOVAX SI 06H AX DS SI 06H MOVAX 06H SI AX DS SI 06H 相对寻址方式 25 3 存储器寻址方式 寄存器相对寻址例 MOVCL BX 1064H 26 3 存储器寻址方式 基址加变址寻址方式 有效地址由基址寄存器 BX或BP 的内容加上变址寄存器 SI或DI 的内容构成 有效地址 BX BP SI DI段地址对应BX基址寄存器默认是DS 对应BP基址寄存器默认是SS 可用段超越前缀改变例 按字访问 演示基址变址寻址方式 MOVAX BX SI AX DS BX SI MOVAX BX SI AX DS BX SI 基址变址寻址方式 28 3 存储器寻址方式 基址加变址寻址方式例 按字节访问 MOVAH BP SI BP 2000H SI 1200H 29 3 存储器寻址方式 按字 基址加变址相对寻址 有效地址是基址寄存器 BX BP 变址寄存器 SI DI 与一个8位或16位位移量之和 有效地址 BX BP SI DI 8 16位位移量段地址对应BX基址寄存器默认是DS 对应BP基址寄存器默认是SS 可用段超越前缀改变 MOVAX BX DI 6 AX DS BX DI 6 MOVAX 6 BX DI MOVAX 6 BX DI 演示相对基址变址寻址方 例 按字访问 相对基址变址寻址方式 31 3 存储器寻址方式 按字节 基址加变址相对寻址MOV BX DI 1234H AH BX 0200H DI 0010H 32 第4章 操作数的表达符号 1 33 第4章 操作数的表达符号 2 掌握操作数的寻址方式后 进入指令学习 34 所谓寻址方式就是寻找操作数存放地址 位置 的方法 在8086 8088系统中 操作数又可分为两大类 数据操作数和地址操作数 因此 寻址方式也分为数据寻址方式和地址寻址方式两大类 数据操作数 指令中操作的对象是数据movax 1234h addal bl 地址操作数 在程序转移指令中的操作数 指令中操作的对象是地址 jmp0020h 8086 8088指令系统的寻址方式总结 35 cpu R MM I O接口 打印机 键盘 硬盘 1 数据操作数 总线 立即数寻址 数据段 代码段 存储器寻址中的 直接寻址 36 在8086 8088系统中操作数存放的位置有以下4种 操作数包含在指令字节中 即指令格式中操作数部分就是操作数本身 这种操作数叫立即数操作数 操作数存放在CPU的某个内部寄存器中 这种操作数叫寄存器操作数 操作数在内存的数据区中 这种操作数叫存储器操作数 操作数来自或送到I O端口 这种操作数叫I O操作数 1 数据操作数 37 2 地址操作数 数据段 代码段 MM 地址寻址方式段内直接寻址段内间接寻址段间直接寻址段间间接寻址 IP 38 数据寻址方式立即数寻址寄存器寻址存储器寻址I O端口寻址方式地址寻址方式段内直接寻址段内间接寻址段间直接寻址段间间接寻址 3 寻址方式 直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式基址变址相对寻址方式 39 五 举例 例 设当前有关寄存器的内容为 BX 6000H BP 4000H SI 2000H DS 3000H ES 3500H SS 5000H 试确定下列指令中存储器方式的操作数在内存中的逻辑地址和物理地址 逻辑地址物理地址3000 052030520H 直接寻址 MOVAX BX MOVAX 0520H MOVAX ES BX SI 0050H MOVAX BP 6060H 寄存器间接寻址 3000 600036000H 寄存器相对寻址 寄存器相对寻址 MOVAX SI 1000H 3000 300033000H 5000 A0605A060H 3500 80503D050H 基址 变址相对寻址 40 4 I O端口寻址方式 cpu I O接口 打印机 键盘 硬盘 总线 R 访问端口的地址时 用AB的低16根 端口地址可以是8位或者是16位 当端口地址大于0FFH时 必须将该地址先送到DX寄存器中 然后进行输入输出 只能由AL或AX输入 输出到外设 41 4 I O端口寻址方式 直接端口寻址方式 端口地址为8位 INAL 21H 42 间接端口寻址方式OUTDX AL 是不是错了 源操作数和目的操作数类型不一致 43 2 地址寻址方式地址的寻址方式实质 是程序转移地址的寻址方式 也就是找出程序转移的地址号 而不是操作数 转移地址可以在段内 也可以跨段转移 称段间转移 寻求转移地址的方法有以下四种 1 段内直接寻址不改变CS 在IP上加一个位移量 则EA IP disp例 JMPNEARPTRPROGIA 段内近转移 16位 JMPSHORTQUEST 段内短转移 8位 JMP25H 段内短转移JMP1025H 段内近转移其中PROGIA和QUEST是转向的符号地址 在机器指令中 用位移量来表示 44 这种寻址方式适用于条件转移或无条件转移类指令 但条件转移只有8位位移量的短程转移 IP EA 有效转移地址 位移量 存储器 CS 10H EA 位移量 45 DS MM 例 JMPSHORTABC假设 CS 1500H IP 3200H 于是该指令在存储器中的起始地址为 15000H 3200H 18200H执行完该指令 IP 3202 20H 3222Hcpu转向新的物理地址来执行指令 15000H 3222H 18222H JMPSHORTABC CS 1500H 46 2 段内间接寻址方式程序转移的地址存放在寄存器或存储器单元中 指令执行使用寄存器或存储器单元的内容来更新IP的内容 例如 JMPBXJMPWORDPTRADDRJMPWORDPTR BX ARRY 47 DS 1000H CS 1500H MM 例 JMPWORDPTR BX 设当前 CS 1500H IP 1200H BX 0100H DS 1000H 10100H 00H 10101H 27H则存储转移偏移地址的内存单元地址为 DS 10H BX 10000H 0100H 10100H执行完这条指令后 IP的内容变成2700H CPU将转移到存储单元17700H去执行程序 PA 15000H 2700H 17700H 48 3 段间直接寻址方式这种寻址方式是指令码中直接给出16位的段地址和16位的偏移地址用来更新当前的CS和IP内容 49 CS1 2000H MM CS2 4000H CS IP 1000H 2000H 1005H 4000H 3000H 例 JMPFARPTRGAMA本例指令为无条件转移指令 采用段间直接寻址方式 设当前 CS 2000H IP 1000HGAMMA 4000 3000则本指令的起始地址为 21000H转移物理地址为 PA 34000H执行完这条指令后 CS的内容变成3000H IP的内容变成4000H 从而程序转移到存储单元34000H开始执行 50 4 段间间接寻址方式这种寻址方式是由指令码的寻址方式字节求出存放转移地址的连续两个字的地址 其低位字地址单元中存放的是偏移地址 高位字地址单元中存放的是转

温馨提示

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

评论

0/150

提交评论