第5章一台计算机的数据处理能力--80x86型微处理器具有的寻址方式及指令系统_第1页
第5章一台计算机的数据处理能力--80x86型微处理器具有的寻址方式及指令系统_第2页
第5章一台计算机的数据处理能力--80x86型微处理器具有的寻址方式及指令系统_第3页
第5章一台计算机的数据处理能力--80x86型微处理器具有的寻址方式及指令系统_第4页
第5章一台计算机的数据处理能力--80x86型微处理器具有的寻址方式及指令系统_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

指令的基本概念w 指令和指令系统w CISC和 RISCw 指令的结构和分类w 指令中的数据类型w 指令的寻址方式w 指令中操作数的寻址方式指令的基本概念w 能够在计算机硬件平台上运行的程序是由一系列的机器指令组成的 ,机器指令通常简称指令。软件的功能借助指令的集合来实现,而指令可以直接由硬件执行w 在 IA-32系列的 CPU中,包含了由大量的具有各种各样作用的指令构成的指令系统。w 在 IA-32CPU中,在实地址模式下,采用 16位指令模式( 16位寄存器和 16位偏移量);采用 32位指令模式( 32位寄存器和 32位偏移量)一台计算机中所有机器指令的集合,称为这台计算机的 指令系统 。70年代末期,计算机硬件结构随着 VLSI技术的飞速发展而越来越复杂化,大多数计算机的指令系统多达几百条。我们称这些计算机为 复杂指令系统计算机 ,简称 CISC。如此庞大的指令系统不但使计算机的研制周期变长,难以保证正确性,不易调试维护,而且由于采用了大量使用频率很低的复杂指令而造成硬件资源浪费。所以在 1989年随着 80486 DX CPU计算机的诞生,人们又提出了便于 VLSI技术实现的 精简指令系统计算机 ,简称RISC,有效地减少了指令的执行周期。 而且它以 RISC技术为基础,通过几条 RISC指令和并行流水线方式来支持经典的 CISC型指令。同时由于组成指令周期的机器周期变得很规整,所以可以用组合逻辑控制器代替微程序控制器来提高 CPU处理速度。0B0E:0100 20740A AND SI+0A,DH0B0E:0103 803C3F CMP BYTE PTR SI,3F0B0E:0106 7514 JNZ 011C0B0E:0108 83F901 CMP CX,+010B0E:010B 760F JBE 011C0B0E:010D 8A07 MOV AL,BX0B0E:010F AA STOSB0B0E:0110 43 INC BX0B0E:0111 46 INC SI0B0E:0112 49 DEC CX0B0E:0113 FEC4 INC AH0B0E:0115 8A07 MOV AL,BX0B0E:0117 3C20 CMP AL,200B0E:0119 7401 JZ 011C0B0E:011B AA STOSB0B0E:011C 3400 XOR AL,000B0E:011E FD STD0B0E:011F 0AF6 OR DH,DH( CS : IP)指令字 指令的注释符 一个较完善的指令系统,应当包括数据传送类指令、算术运算类指令、逻辑运算类指令、程序控制类指令、输入输出指令、字符串类指令、系统控制类指令。 1、数据传送指令: 数据传送指令主要包括取数指令、存数指令、传送指令、成组传送指令、字节交换指令、清累加器指令、堆栈操作指令等等,这类指令主要用来实现主存和寄存器之间,或寄存器和寄存器之间的数据传送。2、算术运算指令 :这类指令包括二进制定点加、减、乘、除指令,浮点加、减、乘、除指令,求反、求补指令,算术移位指令,算术比较指令,十进制加、减运算指令等。这类指令主要用于定点浮点的算术运算,大型机中有向量运算指令,直接对整个向量或矩阵进行求和、求积运算。3、逻辑运算指令: 这类指令包括逻辑加、逻辑乘、按位加、逻辑移位等指令,主要用于无符号数的位操作、代码的转换、判断及运算。典型指令4、程序控制指令: 程序控制指令也称转移指令。计算机在执行程序时,通常情况下按指令计数器的现行地址顺序取指令。但有时会遇到特殊情况:机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。这种转移指令称为条件转移指令。转移条件来自于程序状态字(标志)寄存器 PSW 如下特征位:进位标志( C)、 结果为零标志( Z)、 结果为负标志( S) 、 结果溢出标志( V)等。5、输入输出指令 :主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和 CPU之间,或外围设备与外围设备之间的信息传送。 (单独编址和统一编址 )6、字符串处理指令 : 是一种非数值处理指令,一般包括字符串传送、字符串转换(把一种编码的字符串转换成另一种编码的字符串)、字符串比较、字符串查找(查找字符串中某一子串)、字符串抽取(提取某一子串)、字符串替换(把某一字符串用另一字符串替换)等。这类指令在文字编辑中对大量字符串进行处理。7、特权指令: 是指具有特殊权限的指令。由于指令的权限量大,若使用不当,会破坏系统和其他用户信息。因此这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。8、其他指令 :除以上各类指令外,还有状态寄存器置位、复位指令、测试指令、暂停指令、空操作指令,以及其他一些系统控制用的特殊指令。4 2 指令格式 表示一条指令的机器字,就称为 指令字 ,通常简称 指令 。一条指令字的二进制位数称为 指令字长 ,一般采用 可变的指令字长指令格式,则是指令字用二进制代码表示的结构形式。一条指令的结构可用如下形式来表示: 操作码和地址码 两部分组成。4 2 1 操作码 (固定长度的操作码、可变长度的操作码)指令的操作码表示该指令应进行什么性质的操作,如进行加法、减法、乘法、除法、取数、存数等等。组成操作码字段的位数一般取决于计算机指令系统的规模。操作码字段 地址码字段指令名称符号指令 机器指令(用十六进制表示)指令助记符 符号地址条件转移 JZ NEXT 7409H增量 INC CX 41H减量 DEC CX 49H入栈 PUSH AX 50H出栈 POP AX 58H比较 CMP STRINGBX, 0DH 80BF04000DH加法 ADD SI, 2 83C602H传送 MOV INDEX, BL 881E0A00H转子程序 CALL DISPLAY E82A00H表 4.2 典型的符号指令与其相对应的机器指令的结构形式 指令名称 指令助记符 二进制操作码(用十 六进制表示)条件转移 JZ 74H增量 INC 41H减量 DEC 49H入栈 PUSH 50H出栈 POP 58H比较 CMP 80H加法 ADD 83H传送 MOV 88H转子程序 CALL E8H表 4.3 部分典型指令的助记符与其相对应的二进制操作码 4 2 2 地址码 根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。目前二地址和一地址指令格式用的最多。 l 零地址指令 (无操作数 )的指令字中只有操作码,而没有地址码。a.无操作数的控制操作 如空操作指令、停机指令等。b.隐含操作数的操作 例如,在 8086/8088指令系统中,字节转换字指令CBW,其源操作数隐含为 AL的内容;字转换双字指令 CWD,其源操作数隐含为 AX的内容,又比如 IBMPC的指令系统中下面的几条操作标志寄存器有关的指令: LAHF、 SAHF、 PUSHF、 POPFl 单 地址指令常称为单操作数指令。a.比如压栈和弹出栈有关的两条指令 PUSH ax POP ax b. 地址码所指定的操作数为源操作数 在这种情况下,累加器 AX的内容为目标操作数,其操作如下 8位和 16位微型机的操作数单地址指令都采用这种操作方式。 Mul div 等指令w 二地址指令常称双操作数指令,它有两个地址码字段 A1和 A2,分别指明参与操作的两个数在内存中或运算器通用寄存器的地址,因此包括在寄存器 寄存器型,寄存器 存储器型和存储器 存储器型三类指令。这些指令的特点是:执行速度越来越慢,但是数据处理能力越来越强。其中地址 A1兼做存放操作结果的地址。(大多数指令都是二地址指令) (A1) OP (A2) A1 比如 : MOV AX, 054CH w l 三地址指令字中有三个顺序的操作数地址A1, A2和 A3。(比较少,往往可以实现复杂的功能 ) (A1) OP (A2) A3 比如在 80C51单片机的指令系统中比较转移类指令CJNE A,DIRECT,REL指令中的数据类型w 字节类型:有符号整数用补码表示,在 MASM汇编语言中使用 DB、 BYTE伪指令定义字节数据。如: data1 db 254w 字类型:在 IA-32计算机中,一个字由二个字节组成,其低位字节放在低地址单元,高位字节放在高地址单元。称为小尾方式。如: data1 dw 2544w 双字类型:在 IA-32计算机中,一个字由四个字节组成,其低位字节放在低地址单元,高位字节放在高地址单元。例如乘法后的乘积或除法前的被除数都是以双字出现的。如 : data1 dd 254400内存访问的实模式w : (即实地址访问模式)它是 Intel公司 80286及以后的x86(80386,80486和 80586等 )兼容处理器( CPU)的操作模式之一。实模式被特殊定义为在 32位地址中使用 20位地址的内存可访问空间,这就意味着它可访问的最大内存空间为1MB(物理内存和 BIOS-ROM),软件可通过这些地址直接访问 BIOS程序和外围硬件。实模式下处理器多道任务的工作模式。但是为了向下兼容,所以 80286及以后的 x86系列兼容处理器仍然是开机启动时工作在实模式下。 80186和早期的处理器仅有一种操作模式,就是后来我们所定义的实模式。实模式虽然能访问到 1M的地址空间,但是由于 BIOS的映射作用(即 BIOS占用了部分空间地址资源),所以真正能使用的物理内存空间(内存条),也就是在 640k到 924k之间。 1M地址空间组成是由 16位的段地址和 16位的段内偏移地址组成的。用公式表示为:物理地址 =左移 4位的段地址+偏移地址。内存访问的保护模式w 保护模式: 经常缩写为 p-mode,在 Intel iAPX 286程序员参考手册中( iAPX286是 Intel 80286的另一种叫法)它又被称作为虚拟地址保护模式。尽管在Intel 80286手册中已经提出了虚地址保护模式,但实际上它只是一个指引,真正的 32位地址出现在Intel 80386上。保护模式本身是 80286及以后兼容处理器序列之后产成的一种操作模式,它具有许多特性设计为提高系统的多道任务和系统的稳定性。例如内存的保护(限长寄存器),分页机制(页表寄存器 )和硬件虚拟存储( MMU)的支持。现代多数的 x86处理器操作系统都运行在保护模式下。 内存的组织结构 (以奔腾 CPU芯片为例)w 在 16位模式下的系统中, CPU的寄存器和数据总线的位数都是 16位长,但是地址总线却为 20根,因此对内存的寻址可以达到 1MB。w 在 16位模式的系统中,如何把 20位地址集合影射到 16位的地址集合上面呢?方法就是把内存分段:把连续的 20位的地址空间按照低四位为 0000B的原则分割成段,因此最多可以被分割成 216个段,由此 “段的寻址 ”就可以通过 16位寄存器实现了,而 16位模式下的内存段最大空间也不超过 216 B,由此 ”段内的寻址也可以通过 16位寄存器实现了。w 在 16位模式的系统中,一方面为了规范管理内存的使用,一个程序最多由四段组成,分别是代码段、数据段、堆栈段和附加段。每个段的起始地址低四位为 0,所以分别把它们的高 16位存储在 CS、 DS、 SS、 ES ,叫做段基址(寄存器)。而每个段内的地址只能保存在非段基址寄存器中。 内存的组织结构 (以奔腾 CPU芯片为例)w 1、逻辑地址:在程序设计中通常使用逻辑地址,逻辑地址包含段基址和段内偏移量,它们都是无符号的 16位二进制数据。其中段基址由 CS、 DS、 SS、 ES分别提供,而偏移量由 IP或者 EU(按照不同的寻址方式根据指令中给出有效地址计算得到)的提供。w 2、物理地址:把段基址的值左移 4位变成 20位后,加上 EU有效地址得到。w 3、寻址方式:指令中有效地址的提供方式。数据的存储结构决定着数据的寻址方式,数据的寻址方式依赖着 CPU中相应的寄存器(基址、变址等寄存器) 4 3 1 指令的寻址方式 : 顺序寻址方式、跳跃寻址方式 顺序寻址方式 : 由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序进行,这种程序顺序执行的过程,我们称为指令的 顺序寻址方式 。 跳跃寻址方式 :当程序改变执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。(教材 69页的相对寻址)(1) 立即寻址方式 * 操作数在指令中给出MOV AL, 5MOV AX, 3064HMOV AL, A* 只能用于 SRC 字段* SRC 和 DST 的字长一致 MOV AH, 3064H 汇 编 语 句 操作数长度操 作MOV BL, 44 8位 把十进制数 44( 2CH) 传送到 BL中MOV AX, 44H 16位 把十六进制数 44H传送到 AX中MOV AL, A 8位 把 A 的 ASCII码 41H传送到 AL中MOV EBX, 12340000H 32位 把十六进制数 12340000H传送到EBX中MOV ESI, 12 32位 把十进制数 12( 0CH) 传送到ESI中表 4.4 使用立即数寻址的 MOV指令例子w 在应用上,通常利用立即寻址方式给寄存器或内存单元赋初值;w w 注意:立即数只能作为 源操作数 ,不能作为目的操作数,并且只能是常数值。4.4.2 寄存器寻址方式w 此寻址方式下,操作数存放在 CPU的某个通用寄存器中 ,而指令中指出了该寄存器。w (注:寄存器寻址方式可以引用 8个 8位的通用寄存器 AL、 AH、 BL、 BH、 CL、 CH、 DL、 DH, 也可以引用 8个 16位的通用寄存器 AX、 BX、 CX、 DX、 BP、 SP、 SI、 DI, 还可以引用 8个 32位的通用寄存器 EAX、 EBX、 ECX、 EDX、 EBP、 ESP、 ESI、 EDI。) (2) 寄存器寻址方式 * 操作数在指定的寄存器中MOV AX, BXMOV AL, BHMOV AX, 3064H* 字节寄存器只有 AH AL BH BL CH CL DH DL* SRC 和 DST 的字长一致 MOV AH, BX * CS 不能用 MOV 指令改变 MOV CS, AX (3) 直接寻址方式 * 有效地址 EA由指令直接给出例 : MOV AX, 2000H EA=2000H, 假设 (DS)=3000H, 那么 PA=32000H* 隐含的段为数据段 DS* 可使用 段跨越前缀 MOV AX, ES: 2000H* 操作数地址可由变量(符号地址)表示VALUE DB 10MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE 503032000AH AL30 50(AX) = 3050H汇 编 语 句 操作数长度 操 作MOV DH, 1000H 8位 把 DS段中偏移地址 1000H单元的内容装入 DH中MOV CX, DATA1 16位 把 DS段中偏移地址为 DATA1和DATA1+1的两单元的内容装入 CXMOV ES, DATA2 16位 把 DS段中偏移地址为 DATA2和DATA2+1的两单元内容装入 ESMOV VALUE, EAX 32位 EAX内容传到 DS段中偏移地址为 VALUE至 VALUE+3 的 4个单元MOV EDI, SUM1 32位 把 DS段中偏移地址为 SUM1至SUM1

温馨提示

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

评论

0/150

提交评论