第3章IA-32微处理器指令系统简介_第1页
第3章IA-32微处理器指令系统简介_第2页
第3章IA-32微处理器指令系统简介_第3页
第3章IA-32微处理器指令系统简介_第4页
第3章IA-32微处理器指令系统简介_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 (高职高专教育) (第四版)米昶 孙杰 苑伟 编著大大 连连 理理 工工 大大 学学 出出 版版 社社普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 第3章 IA-32微处理器指令系统简介 (目录)3.1 指令系统概述3.1.1 指令系统分类3.1.2 指令格式3.1.3 寻址方式3.2 IA-32指令系统简介3.2.1 基本通用指令3.2.2 x87FPU指令3.3 IA-32结构微处理器的指令系统的发展3.4 汇编语言程序的基本结构3.4.1 汇编语言的语句成分3.4.2 汇编语言的语句类型3.4.

2、3 汇编语言的语句结构普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 第3章 IA-32微处理器指令系统简介 (目录)3.4.4 汇编语言源程序的基本结构本章小结习题普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 第3章 IA-32微处理器指令系统简介 3.1 指令系统概述CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。3.1.1 指令系统分类 从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。1、复杂指令系统计算

3、机(CISC,Complex Instruction Set Computer) 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.1 指令系统分类 2、精简指令系统计算机(RISC,Reduced Instruction Set Computer) RISC体系结构的基本思路是:针对CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,提

4、高处理器内部的并行处理能力和VLSI器件的使用效率,从而大幅度地提高处理器的性能。 RISC指令集有许多特征,其中最重要的有: 指令种类少,指令格式规范 寻址方式简化 大量利用寄存器间操作 简化处理器结构 便于使用VLSI技术 加强了处理器并行能力普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.2 指令格式 对于早期的Intel 8086和80286来说,微处理器上运行的是16位指令系统,而后期的Intel80386至Pentium等IA-32系列CPU上运行的是32位指令系统。(1)双操作数指令格式为: 标号:操作符 目的操作数,源操作数;注释 目的操作数和源操

5、作数应具有相同的类型,即必须同时为字节类型或 同时为字类型。 目的操作数不能是立即数。 操作结束后,一般情况其运算结果送入目的地址中,而源操作数不发生改变。 目的操作数和源操作数不能同时为存储器操作数。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.2 指令格式(2)单操作数指令格式为: 标号:操作符 目的操作数 相应的操作规定为: 操作对象为目的地址中的操作数,操作结束后,其运算结果送入目的地址中。 操作数不能是立即数。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式 寻址方式指的是在指令中寻找指令的操作数或操作数地址的

6、方式。在808680286CPU中,与数据有关的寻址方式主要有:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址变址寻址、寄存器相对寻址、相对基址变址寻址等几种。在80386及更高级的微处理器中还包括带比例因子的变址寻址和带比例因子的基址变址寻址方式。与程序转移地址有关的寻址方式包括:直接寻址和间接寻址。 1、与数据有关的寻址方式 (1)立即寻址 操作数直接在指令中提供的寻址方式为立即寻址方式,指令中提供的操作数也称作立即数。比如:MOV AL,80H ; (2)寄存器寻址 操作数放在微处理器内部的寄存器中,在指令中直接指出寄存器的名字。例如:INC CX ;将CX的内容加1普通高等教育普

7、通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(3)直接寻址 数据在存储器中,有效地址由指令直接给出。例如: MOVAX,1060H ;其功能是将DS段的1060H和1061H两单元的内容取到AX中。假设(DS)=2000H,那么存储单元的物理地址为21060H,如图3.1所示,将该存储单元中的数据送到寄存器AX中。30505030AHAL21060H21061H结果为:(AX)=3050H图3.1直接寻址示例普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(4)寄存器间接寻址 有效地址由指令中的基址寄存器(BX或BP)或

8、变址寄存器(SI或DI) 中给出。 例如: MOV AX, BX ;PA = 10H(DS) + (BX) 需要注意的是: 只允许使用BX、BP、SI、DI 存放有效地址。则 MOV AX,CX 是一条错误的指令。 源操作数和目的操作数的长度必须一致,下面的例子中源操作数的有效地址虽然都放在BX,但其代表的存储单元大小是不一样的。 例如: MOV DL, BX ;BX指示一个字节单元 MOV DX, BX ;BX指示一个字单元 间接寻址时,若有效地址存放在BX中,则默认的段寄存器为DS,由于BX称为基址寄存器,所以这种寻址方式也叫数据段基址寻址。例如:普通高等教育普通高等教育“十一五十一五”国

9、家级规划教材国家级规划教材 3.1.3 寻址方式 MOV AX,BX 设DS6000H,BX3000H,则本指令在执行时,将63000H和63001H两单元的内容送AX。 间接寻址时,若有效地址存放在BP中,则默认的段寄存器为SS,因为BP称为基址寄存器,所以这种寻址方式通常称为堆栈段基址寻址。例如: MOV BX,BP 设SS7000H,BP1000H,则该指令在执行时,将71000H和71001H两单元的内容送BX。 SI和DI寄存器分别称为源变址寄存器和目的变址寄存器,所以用这两个寄存器来进行间接寻址也叫变址寻址。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.

10、1.3 寻址方式(5)寄存器相对寻址方式 采用寄存器间接寻址时,允许在指令中指定一个位移量,这样有效地址通过将一个寄存器的内容加上一个位移量来得到。位移量可以为8位,也可以为16位。即: 这种寻址方式可以将位移量看成是一个相对值,因此把带位移量的寄存器间接寻址叫寄存器相对寻址。指令格式: MOV AX,COUNTSI 或 MOV AX,COUNT+SI 假设 (DS)=3000H,(SI)=2000H,COUNT=3000H,则该存储单元的物理地址为:35000H ,假设(35000H)=1234H,那么 (AX)=1234H 。有效地址=(BX)(BP)(SI)(DI)+8位位移量16位位移

11、量普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(6)基址变址寻址方式 将BX,BP和SI,DI寄存器组合起来进行的间接寻址称为基址变址寻址。通常将BX和BP称为基址寄存器,将SI和DI称为变址寄存器。基址变址寻址时,操作数的有效地址是一个基址寄存器(BX或BP)的内容加上一个变址寄存器(SI或DI)的内容。即: 例如:MOV AX,BX+SI 设DS2000H,BX4000H,SI2000H,则上面指令在执行时,有效地址为6000H,本指令将26000H和26001H两单元的内容取到AX中。有效地址=(BX)(BP)(SI)(DI)+普通高等教育普

12、通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(7)相对基址变址寻址方式 用基址变址的寻址方式时,允许带一个8位或16位的位移量。 例如:MOV AX,BX+SI+50H;将BX和SI中的内容与50H相加作为有效地址。 基址变址寻址方式中,对段寄存器的使用有一个约定规则,即如果基址寄存器用BX,则默认的段寄存器为DS;如果基址寄存器用BP,则默认的段寄存器为SS。有效地址=(BX)(BP)(SI)(DI)+8位位移量16位位移量+普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(8)带有比例因子的变址寻址 在这种格式中,存

13、储单元的有效地址采用如下形式: 存储单元的有效地址比例因子*变址寄存器的内容位移量 在指令格式中,将段寄存器考虑进去时,完整的地址表达式如下: 段寄存器:比例因子变址寄存器位移量或者 段寄存器:位移量比例因子变址寄存器 需要注意的是,访问约定的逻辑段,段超越前缀可以省略。其中比例因子可以是1,2,4,8中的1个数,这是因为操作数的长度可以是1、2、4、8个字节;变址寄存器可以EBP是或者EAXEDX,ESI和EDI寄存器。例如: MOV AX,XBX*2SI普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(9)带有比例因子的基址变址寻址 在这种格式中,

14、存储单元的有效地址采用如下形式:存储单元的有效地址基址寄存器内容比例因子*变址寄存器的内容位移量 将段寄存器考虑进去时,可以得到完整的地址表达式,形式如下: 段寄存器:基址寄存器比例因子*变址寄存器位移量或者:段寄存器:位移量基址寄存器比例因子变址寄存器 或者:段寄存器:位移量基址寄存器比例因子*变址寄存器 需要特别指出的是,在这种寻址方式中基址寄存器和变址寄存器都必须是规定的32位寄存器,与带有比例因子的变址寻址一样这种寻址方式中的比例因子可以是1,2,4,8中的一个数。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式 2、与程序转移地址有关的寻址方

15、式(1)段内直接寻址 段内直接寻址是指转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和。例如: JMP SHORT PTR PRGA ;位移量为8位的短转移,PRGA为符号地址 JMP NEAR PRGB ;位移量为16或32位的近转移,PRGB为符号地址 其中:8位位移量的跳转范围在-128+127之内。 16位位移量的跳转范围为32K之内。 32位位移量的跳转范围为 2G之内。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(2)段内间接寻址 段内间接寻址是指转向有效地址是一个寄存器或是一个存储单元的内容。这个寄存器或存储单

16、元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的转向的有效地址用来取代IP寄存器的内容。例如: 假设(DS)=2000H,(BX)=1000H,(SI)=2000H,T1的值为20A1H, (230A1H)=5678H, (240A1H)=1234H。则,执行指令 JMP BX ; 执行后(IP) = 1000H (3) 段间直接寻址 段间直接寻址是指在指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了一个段到另一个段的转移操作。例如: JMP FAR PTR NEXTPRG 其中N

17、EXTPRG为转向的符号地址,FAR PTR则是表示段间转移的操作符。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.1.3 寻址方式(4)段间间接寻址 段间间接寻址是指用存储器中的两个相继字的内容来取代IP和CS寄存器中的原始内容,以达到段间转移的目的。这里,存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。例如: JMP DWORD PTR T2+BX 其中T2+BX说明数据寻址方式为直接变址寻址方式,DWORD PTR为双字操作符,说明转向地址需取双字为段间转移指令。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划

18、教材 3.2 IA-32指令系统简介 Intel 8086/8088使用的X86指令集是IA-32指令系统的基础,80X86PENTIUM系列微机的指令系统在基本指令集的基础上进行了扩充, 表3.1 给出的是不同类型的Intel CPU指令条数。IntelIntelCPUCPU类型类型新增指令条数新增指令条数指令总数指令总数808680868989条条8989条条808780877777条条166166条条8028680286新增新增2424条条190190条条8038680386新增新增1414条条204204条条8038780387新增新增7 7条条211211条条8048680486新增

19、新增5 5条条216216条条PentiumPentium新增新增6 6条条222222条条PentiumPentiumProPro新增新增8 8条条230230条条PentiumPentiumMMXMMX新增新增5757条条287287条条PentiumPentiumIIII新增新增4 4条条291291条条PentiumPentiumIIIIII新增新增SSE1SSE1指令指令7070条条361361条条PentiumPentium4 4新增新增SSE2SSE2指令指令144144条条505505条条表3.1 Intel CPU的指令条数普通高等教育普通高等教育“十一五十一五”国家级规划教

20、材国家级规划教材 3.2.1 基本通用指令 8086/8088指令系统是80X86的基本指令集。指令的操作数宽度是8位或16位,偏移地址宽度是16位。8086/8088微处理器的指令系统可以分为以下六类指令:数据传送指令 算术运算指令位操作指令字符串操作指令控制转移指令处理机控制指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令指令中的符号指令中的符号符号的含义符号的含义OPRD操作数操作数OPRD1,OPRD2一般在多操作数指令中,一般在多操作数指令中,OPRD1为目为目的操作数,的操作数,OPRD2源操作数源操作数reg通用寄存器,长度可以是

21、通用寄存器,长度可以是8位或位或16位位Sreg段寄存器段寄存器reg88位通用寄存器位通用寄存器reg1616位通用寄存器位通用寄存器mem存储器,长度可以是存储器,长度可以是8位或位或16位。位。mem88位存储器位存储器mem1616位存储器位存储器imm立即数,长度可以是立即数,长度可以是8位或位或16位。位。imm88位立即数位立即数imm1616位立即数位立即数表表3.23.2指令中的符号说明指令中的符号说明在具体介绍指令之前,我们先将描述指令时会用到的一些符号的含义列出,如在具体介绍指令之前,我们先将描述指令时会用到的一些符号的含义列出,如表表3.2所示。所示。普通高等教育普通高

22、等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第一类指令是数据传送指令,具体见表3.3所示。这类指令主要完成计算机系统内不同数据空间之间的数据传送功能,可实现的数据传送包括: 存储器与寄存器之间的数据传送 寄存器与寄存器之间的数据传送 累加器与I/O端口之间的数据传送 立即数到寄存器或存储器的数据传送普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 指令类型指令类型功能功能格式格式通用数据通用数据传送传送将源将源操作数中的操作数中的字节或字传送到字节或字传送到目的操作数目的操作数MOV目的操作数目的操作数,源,源操作数操作数将源将源操作数中的

23、操作数中的字压入堆栈字压入堆栈PUSH源源操作数操作数将堆栈将堆栈中的中的字弹出并传送到字弹出并传送到目的操作数目的操作数POP目的操作数目的操作数完成目的操作数完成目的操作数和源和源操作数的操作数的字节或字交换字节或字交换XCHG目的操作数目的操作数,源,源操作数操作数字节翻译字节翻译XLAT地址传送地址传送将源将源操作数的操作数的有效地址装入有效地址装入目的操作数目的操作数LEA目的操作数目的操作数,源,源操作数操作数将源将源操作数的操作数的有效地址装入有效地址装入目的操作数,段目的操作数,段地址地址装入装入DS寄存器寄存器LDS目的操作数目的操作数,源,源操作数操作数将源将源操作数的操作

24、数的有效地址装入有效地址装入目的操作数,段目的操作数,段地址地址装入装入ES寄存器寄存器LES目的操作数目的操作数,源,源操作数操作数标志位标志位传送传送将标志位寄存器将标志位寄存器PSW低字节装入低字节装入AH寄存器寄存器LAHF将将AH内容装入内容装入PSW低字节低字节SAHF将将PSW内容压入堆栈内容压入堆栈PUSHF从堆栈弹出从堆栈弹出PSW内容内容POPFI/O数据传送数据传送从从I/O端口输入字节或字到累加器端口输入字节或字到累加器IN累加器,端口累加器,端口从累加器输出字节或字到从累加器输出字节或字到I/O端口端口OUT端口,累加器端口,累加器3.2.1 基本通用指令表表3.33

25、.3数据传送指令数据传送指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令1、数据传送指令(1)MOV指令 指令格式:MOV OPRD1,OPRD2 ; 功能 :OPRD2 OPRD1,两个操作数可以是8位或16位,但必须等长。 MOV指令有以下几种形式(如图3.2所示):MOVreg/Sreg,regMOVreg,SregMOVreg/Sreg,memMOVmem, reg/SregMOVreg,immMOVmem, imm通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存储储器器立立即即数数段寄存器段寄存器(CS,SS,

26、DS,ES)通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存储储器器立立即即数数段寄存器段寄存器(CS,SS,DS,ES)通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存储储器器立立即即数数段寄存器段寄存器(CS,SS,DS,ES)图图3.23.2MOVMOV指令指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令使用MOV指令传送数据时应该注意: 立即数和段寄存器CS不能作为目标操作数; 立即数不能直接传送到段寄存器 (如MOV DS,2000H,这将出现语法错误); 两个存储单元之间不能直接传送数

27、据 (一般可通过寄存器实现二者间的数据传送); 两个段寄存器之间不能直接传送数据 (如MOV DS,ES语法错误,可改为 MOV AX,ES 和MOV DS,AX)。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令(2)进栈/出栈指令 80X86中,用SS段寄存器记录堆栈段的段地址,用堆栈指针寄存器SP存储栈顶地址。 进栈指令指令格式:PUSH OPRD2 功能: SP SP-2; (SP1), (SP) )OPRD2 出栈指令指令格式:POP OPRD1功能: OPRD1SP;SP SP2需要注意的是: 堆栈操作是16位操作; 源操作数:通用Re

28、g,Sreg或mem; 目标操作数:通用Reg,Sreg(CS除外)或mem。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令(3)交换指令XCHG 指令格式:XCHG OPRD1,OPRD2; 功能: OPRD1OPRD2;例:XCHG AH,AL XCHG 2123H,BX需要注意的是: 两个操作数可以是reg,mem。 两个存储器操作数之间不能实现直接交换。 段寄存器和立即数不能作为操作数。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令(4)查表转换指令XLAT(或称换码指令) 指令格式: XL

29、AT 或 XLAT OPRD; 功能: AL BX+AL需要注意的是: 代码表必须建立在数据段。 代码表长度不超过256字节。 执行指令前,BX 表首址,AL 查找对象在表中距首址的偏移量。 XLAT中的操作数通常为码表首地址的名称。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令2、地址传送指令(1)有效地址传送指令LEA 指令格式:LEA OPRD1, OPRD2 功能:取存储器操作数在当前段内的有效地址送至16位通用寄存器中。例如,LEA AX,1234H ;AX=1234H需要注意的是: 指令中的源操作数必须是存储单元,目的操作数应为16位

30、通用寄存器; MOV指令与LEA的不同,前者传送操作数的内容,后者传送操作数的地址。(2)地址指针传送指令LDS和LES 指令格式:LDS(LES) OPRD1, OPRD2 功能:reg16mem,DS(ES)mem+2 该指令将由源操作数偏移地址确定的双字单元中的第一个字的内容送入指令指定的16位通用寄存器,第二个字的内容传送给段寄存器DS或ES。 例如:LDS DI,1000H注:指令中的源操作数必须是存储单元,目的操作数应为16位通用寄存器;普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令3、 标志位传送指令标志位传送指令专门用于对标志寄存

31、器(PSW)的保护和更新操作。(1)LAHF/SAHF(读写标志寄存器)指令LAHF用于将PSW的低8位(含SF、ZF、AF、PF和CF)读出后传送到AH寄存器。这条指令本身不影响标志位。SAHF与LAHF的操作相反。将寄存器AH中的内容写入PSW的低8位,而高8位保持不变。(2)PUSHF/POPF (标志寄存器入栈/出栈) PUSHF:将PSW内容压入堆栈,同时修改堆栈指针。 POPF:将当前栈顶的一个字 PSW,同时修改堆栈指针。例如,如果要将0FEBH存入FLAGS,可用以下指令实现:MOV AX ,0FEBH ;将常量0FEBH存入AX中PUSH AX ;AX入栈POPF ; 0FE

32、BH存入FLAGS普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令4、 输入/输出数据传送指令IN/OUT 输入指令用来控制从外部设备向计算机传送信息,输出指令用来控制从计算机向外部设备传送信息。(1)输入指令 指令格式: IN 累加器,外设端口地址 功能:从外设端口读取数据并输入到累加器中。 输入指令有以下4中形式:INAL,PORT; (PORT) AL,PORT为8位的端口地址INAX,PORT; (PORT) AX,PORT为8位的端口地址INAL,DX; (DX) AL,DX中为大于8位的端口地址INAX,DX; (DX) AX,DX中为

33、大于8位的端口地址普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令(2)输出指令 指令格式:OUT 外设端口地址,累加器 功能:将累加器中的数据输出到指定的外设端口。 输入指令有以下4中形式:OUTPORT,ALOUTPORT,AXOUTDX, ALOUTDX, AX需要注意的是: I/O指令只能使用累加器,不能使用其它寄存器; I/O指令可以传送字/字节两种长度的数据,选用哪一种取决于外设端口宽度。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第二类指令是算术运算指令,该类指令分为二进制算术运算指

34、令和BCD码算术运算调整指令,二进制算术运算指令如表3.4所示(不含BCD码算术运算调整指令)。指令类型指令类型名称名称说明说明加法指令加法指令ADDADD不带进位的加法指令不带进位的加法指令ADCADC带进位的加法指令带进位的加法指令INCINC加加1 1指令指令减法指令减法指令SUBSUB不带借位的减法指令不带借位的减法指令SBBSBB带借位的减法指令带借位的减法指令DECDEC减减1 1指令指令NEGNEG求补指令求补指令CMPCMP比较指令比较指令乘法指令乘法指令MULMUL不带符号数的乘法指令不带符号数的乘法指令IMULIMUL带符号数的乘法指令带符号数的乘法指令除法指令除法指令DI

35、VDIV不带符号数的除法指令不带符号数的除法指令IDIVIDIV带符号数的除法指令带符号数的除法指令表表3.43.4二进制算术运算指令二进制算术运算指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第三类指令是位操作指令,8086微处理器的位操作指令分为逻辑运算指令和移位指令,它们都可以直接对寄存器或存储器进行位操作,有关指令如表3.5所示。类型类型指令名称指令名称说明说明逻辑运算指令逻辑运算指令NOTNOT与运算指令与运算指令ANDAND或运算指令或运算指令TESTTEST测试指令测试指令(两操作数做与两操作数做与运算运算,仅修改标志位仅修改

36、标志位,不回送结果不回送结果)OROR或运算指令或运算指令XORXOR异或运算指令异或运算指令移位移位指令指令算术移位算术移位SALSAL算术左移指令算术左移指令SARSAR算术右移指令算术右移指令逻辑移位逻辑移位SHLSHL逻辑左移指令逻辑左移指令SHRSHR逻辑右移指令逻辑右移指令不带进位的不带进位的循环移位循环移位ROLROL循环左移指令循环左移指令RORROR循环右移指令循环右移指令带进位的循带进位的循环移位环移位RCLRCL带进位的循环左移指令带进位的循环左移指令RCRRCR带进位的循环右移指令带进位的循环右移指令表表3.53.5位操作指令位操作指令普通高等教育普通高等教育“十一五十

37、一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第四类指令是字符串操作指令,串是地址连续的字节或字存储单元,通常用于存放同一类数据。基本串操作指令有五条,即传送(MOVS)、比较(CMPS)、搜索(SCAS)、取(LODS和存(STOS)等。串操作重复前缀是加在基本串操作指令之前,根据不同条件判断是否重复执行串操作。串操作重复前缀包括REP、REPE、REPZ、REPNE和REPNZ,它们用来控制后面紧随的串操作指令是否重复。运行时分下面两种情况:(1)与REP相配合工作的为MOVS、STOS、LODS指令。 格式:REP MOVS/LODS/STOS 功能:重复串操作直到 CX

38、 = 0为止。(2)与REPE/REPZ和REPNE/REPNZ联合工作的为CMPS和SCAS指令。 格式:REPE/REPZ CMPS/SCAS REPNE/REPNZ CMPS/SCAS 功能:当相等/为零时重复串操作; 当不相等/不为零时重复串操作。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第五类指令是控制转移指令,控制转移指令用于控制程序的执行流程。这类指令包括:无条件转移指令、条件转移指令、子程序调用和返回指令、循环指令、中断和中断返回指令。1、无条件转移指令JMP 指令格式:JMPOPRD 功能:按照不同的操作数给出方式,找出目

39、标地址,用它代替原指令指针。可实现全部存储空间内的转移。 根据指令的寻址方式不同又可分为:段内直接短转移、段内直接近转移、段内间接转移、段间直接转移和段间间接转移。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令2、条件转移指令 指令格式:指令助记符 目标地址 功能:根据当前各标志位状态进行判断,如果满足指令所指定的条件,则转移至目标地址处(IP IP 当前值 + 位移量) ;否则顺序执行(IP 不变)。条件转移指令如表3.6、表3.7和表3.8所示。指令名称指令名称测试条件测试条件操作说明操作说明JZJZ(或(或JEJE)ZF=1ZF=1结果为零

40、(或相等)则结果为零(或相等)则转移转移JNZJNZ(或(或JNEJNE)ZF=0ZF=0结果不为零(或不相等)结果不为零(或不相等)则转移则转移JSJSSF=1SF=1结果为负则转移结果为负则转移JNSJNSSF=0SF=0结果为正则转移结果为正则转移JOJOOF=1OF=1结果溢出则转移结果溢出则转移JNOJNOOF=0OF=0结果无溢出则转移结果无溢出则转移JPJP(或(或JPEJPE)PF=1PF=1奇偶位为奇偶位为1 1则转移则转移JNPJNP(或(或JPOJPO)PF=0PF=0奇偶位为奇偶位为0 0则转移则转移JCJC(或(或JNAEJNAE或或JBJB)CF=1CF=1有进位则

41、转移有进位则转移JNCJNC(或(或JAEJAE或或JNBJNB)CF=0CF=0无进位则转移无进位则转移表表3.63.6简单条件转移指令表简单条件转移指令表普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令指令名称指令名称测试条件测试条件操作说明操作说明JBJB(或(或JNAEJNAE或或JCJC)CF=1CF=1低于,或不高于或等于,或进位位为低于,或不高于或等于,或进位位为1 1则转移则转移JNBJNB(或(或JAEJAE或或JNCJNC)CF=0CF=0不低于,或高于或等于,或进位位为不低于,或高于或等于,或进位位为0 0则转移则转移JAJA

42、(或(或JNBEJNBE)CFZF=0CFZF=0高于,或不低于或等于则转移高于,或不低于或等于则转移JNAJNA(或(或JBEJBE)CFZF=1CFZF=1不高于,或低于或等于则转移不高于,或低于或等于则转移指令名称指令名称测试条件测试条件操作说明操作说明JLJL(或(或JNGEJNGE)SFOF=1SFOF=1小于,或不大于或等于则转移小于,或不大于或等于则转移JNLJNL(或(或JGEJGE)SFOF=0SFOF=0不小于,或大于或等于则转移不小于,或大于或等于则转移JGJG(或(或JNLEJNLE)(SFOFSFOF)ZF=0ZF=0大于,或不小于或等于则转移大于,或不小于或等于则转

43、移JNGJNG(或(或JLEJLE)(SFOFSFOF)ZF=1ZF=1不大于,或小于或等于则转移不大于,或小于或等于则转移表表3.73.7无符号数比较条件转移指令表无符号数比较条件转移指令表表表3.83.8有符号数比较条件转移指令有符号数比较条件转移指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令3、子程序调用和返回指令子程序调用CALL调用指令有四种:段内直接调用、段间直接调用、段内间接调用和段间间接调用。RET返回指令执行的操作如表3.9示。返回返回指令指令段内返回段内返回段间返回段间返回段内带立即数返回段内带立即数返回段间带立即数返回段

44、间带立即数返回汇编汇编格式格式RETRETRETRETRET RET 表达式表达式RETRET表达式表达式执行执行操作操作(IPIP)(SPSP)+1+1, (SPSP)(SPSP)(SPSP)+2+2(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(CSCS)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(SPSP)(SPSP)+16+16位表达式位表达式(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(

45、CSCS)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(SPSP)(SPSP)+16+16 位表达式位表达式普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令4、 循环指令 循环指令共有3条: LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE,如表3-10所示。 指令格式:指令名循环入口的地址标号 指令的功能:(CX)(CX)-1判断测试条件,若条件成立,则:(IP)(IP)+8位位移量指令名指令名测试条件测试条件功能功能LOOPLOOP(CXCX)0 0无条件循环无条件循环LOOPNZ/LOOPNELOOP

46、NZ/LOOPNE(CXCX)0 0且且ZF=1ZF=1当为零或相等时循环当为零或相等时循环LOOPNZLOOPNZ(CXCX)0 0且且ZF=0ZF=0当不为零或不相等时循环当不为零或不相等时循环表表3-103-10循环指令测试条件循环指令测试条件普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 5、 中断指令和中断返回指令中断是当系统运行或程序运行期间遇到某些特殊情况,需要计算机自动执行一组专门的例行程序来进行处理。所执行的这组例行程序称为中断子程序。 中断指令格式:INT n ;中断调用,n 是中断类型码,取值范围为0255 中断返回指令格式

47、: IRET ;中断返回 指令功能:实现对n号中断的服务程序的调用及返回。中断指令的基本操作如表3.11所示。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令指令格式指令格式INTINTn nINTOINTOIRETIRET执行操作执行操作(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(PSWPSW)IF=0IF=0,TF=0TF=0(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(CSCS)(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(IPIP)(IPIP)(n n4 4)(

48、CSCS)(n n4+24+2)若若OF=1OF=1则:则:(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(PSWPSW)IF=0IF=0,TF=0TF=0(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(CSCS)(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(IPIP)(IPIP)(0010H0010H)(CSCS)(0012H0012H)(IPIP)(SPSP)+1+1,(SPSP)(SPSP)(SPSP)+2+2(CSCS)(SPSP)+1+1,(SPSP)(SPSP)(SPSP)+2+2(PSWPSW)(SPSP)

49、+1+1,(SPSP)(SPSP)(SPSP)+2+2说明说明中断指令除把中断指令除把IFIF和和TFTF位置位置0 0外,外,不影响其余的标志位。不影响其余的标志位。溢出中断指令除把溢出中断指令除把IFIF和和TFTF位置位置0 0外,不影响其余的标志位。外,不影响其余的标志位。中断返回指令中断返回指令表表3.113.11中断指令中断指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 第六类指令是处理器控制指令,处理器控制指令专门用于处理器的控制,指令格式上都不带操作数。 1、标志设置指令 标志设置指令是设置和清除标志的指令,只影响指令指定的标

50、志,如表3.12所示。 2、其它处理机控制指令 NOP ;无操作指令 HLT ;停机指令 WAIT ;等待指令 LOCK ;总线封锁指令 ESC ;交权指令指令指令格式格式指令功能指令功能执行的操作执行的操作CLCCLCSTCSTCCMCCMC进位位置进位位置0 0指令指令进位位置进位位置1 1指令指令进位位求反指令进位位求反指令CFOCFOCF1CF1CFCFCLDCLDSTDSTD方向标志位置方向标志位置0 0指令指令方向标志位置方向标志位置1 1指令指令DF0DF0DF1DF1CLICLISTISTI中断标志位置中断标志位置0 0指令指令中断标志位置中断标志位置1 1指令指令IF0IF0

51、IF1IF1表表3.123.12标志设置指令标志设置指令CF普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.1 基本通用指令 80 x86 80 x86PentiumPentiumCPUCPU在基本指令的基础上进行了扩充和增加。在基本指令的基础上进行了扩充和增加。下面将部分扩充和增加的指令做一简单介绍。下面将部分扩充和增加的指令做一简单介绍。 第一类数据传送指令的扩充主要是对通用传送类指令、输入输出指令和地址传送指令三类指令的扩充。 第二类算术运算指令的扩充主要是对加、减、乘、除和符号扩展指令的扩充。 第三类逻辑运算和移位指令对逻辑运算、移位和位扫描指令进行了扩充

52、。 第四类串操作指令的扩充,允许进行双字数据操作。 第五类控制转移指令的扩充,对位移量进行了扩大。 第六类处理器控制指令的扩充。 普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.2 x87FPU指令 协处理器指令分成六组:数据传送、非超越、比较、超越、常数和处理器控制。所有协处理器指令操作码都以字母F开始,以使它们同CPU指令区分开来。1、数据传送指令 数据传送指令有三种基本类型,即浮点数传送、带符号整数传送和BCD数传送。 浮点数传送有4条指令:FLD(装入实型数)、FST(存储实型数)、FSTP(存储实型数并出栈)和FXCH(寄存器内容交换)。 整数传送有3条

53、指令:FILD(装入整型数)、FIST(存储整型数)和FISTP(存储整型数并出栈)。 BCD数传送有2条指令:FBLD(装入BCD码)和FBSTP(存储BCD码并出栈)。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.2 x87FPU指令2、非超越指令 非超越操作包括四个基本算数操作(加、减、乘、除法)和一系列其它标准算数函数(如平方根、部分余数、绝对值等)。算数运算的寻址方式包括堆栈寻址、寄存器寻址、寄存器弹出寻址和存储器寻址等。 函数操作包括:FSQRT(平方根)、FPREM FPREM1(求部分余数)、FSCALE(比例运算)、FRUNDINT(舍入为整数

54、)、FXTRACT(提取阶码和有效数字)、FABC (绝对值)和FCHS(改变符号)等。3、比较指令 比较指令用来比较栈顶寄存器的数据与另一个寄存器单元的内容,并将比较结果返回到状态寄存器中。协处理器包括的比较指令有: FCOM (实数比较)、FCOMP(实数比较并出栈)、FCOMPP(实数比较并两次出栈)、FICOM (整数比较)、FICOMP (整数比较并出栈)、FSTS(测试)、FXAM (检查)、FUCOM(无序实数比较)、FUCOMP(无序实数比较并出栈)和FUCOMPP(无序实数比较并出栈两次)等。普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.2 x

55、87FPU指令4、超越指令 超越指令包括:FSIN(正弦)、FCOS(余弦)、FSINCOS(正弦和余弦)、FPTAN(部分正切)、FPATAN(部分反正切)、FYL2X(计算y1og 2X)、FYL2XP1(计算ylog 2 (X+1))和F2XM1(计算2X-1)。5、常数指令 每一个常数指令将所表示的常数装入栈顶寄存器中,这些指令如表3-14所示。指令指令指令功能指令功能FLDZFLDZ装入常数装入常数+0.0+0.0FLD1FLD1装入常数装入常数+1.0+1.0FLDPIFLDPI装入常数装入常数FLDL2TFLDL2T装入常数装入常数loglog2 21010FLDL2EFLDL2

56、E装入常数装入常数loglog2 2e eFLDLG2FLDLG2装入常数装装入常数装loglog10102 2FLDLN2FLDLN2装入常数装入常数logloge e2 2表表3-143-14常数指令常数指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.2.2 x87FPU指令6、处理器控制指令 处理器控制指令是用来控制协处理器动作的指令,如表3.15所示。 指令指令指令功能指令功能FNINITFNINIT/FNINIT/FNINIT协处理器初始化处理协处理器初始化处理FSETPMFSETPM改变寻址和保护方式改变寻址和保护方式FLDCWFLDCW装入控制字装入

57、控制字FSTCW/FSTCW/FNSTCWFNSTCW存储控制字存储控制字FSTSWFSTSWAX/FNSTSWAX/FNSTSWAXAX将状态字存入将状态字存入AXAX寄存器寄存器FCLEX/FCLEX/FNCLEXFNCLEX清除状态寄存器的清除状态寄存器的“忙忙”和和“错误错误”标志标志FSAVE/FSAVE/FNSAVEFNSAVE将全部状态写入内存将全部状态写入内存FRSTORFRSTOR从内存复原机器状态从内存复原机器状态FSTENV/FSTENV/FNSTENVFNSTENV存储协处理器环境存储协处理器环境FLDENVFLDENV装入由装入由FSTENV/FSTENV/FNSTE

58、NVFNSTENV保存的环境保存的环境FINCSTFINCST堆栈栈顶指针增值堆栈栈顶指针增值FDECSTPFDECSTP堆栈栈顶指针减值堆栈栈顶指针减值FFREEFFREE释放浮点寄存器释放浮点寄存器FNOPFNOP空操作空操作FWAITFWAIT使微处理器等待协处理器完成一个操作使微处理器等待协处理器完成一个操作表表3.153.15处理器控制指令处理器控制指令普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材 3.3 IA-32结构微处理器的指令系统的发展 IA-32(Intel Architechure-32 英特尔32位体系架构)的X86系列处理器是采用了Intel

59、X86指令集的处理器,X86指令集是Intel公司为其第一块16位处理器Intel 8086所专门开发的。Intel和AMD的桌面级处理器在X86指令集的基础上,为了提升处理器各方面的性能,所以又各自开发和扩展了新的指令集。 MMX指令集 MMX(Multi Media eXtension 多媒体扩展指令)指令集是Intel公司在1996年为Pentium系列处理器所开发的多媒体指令增强技术。MMX指令集中包括了57条多媒体指令。 SSE指令集 SSE指令集是Intel在Pentium III处理器平台上为提高处理器浮点性能而开发的扩展指令集,该指令集共有70条指令。普通高等教育普通高等教育“

60、十一五十一五”国家级规划教材国家级规划教材 3.3 IA-32结构微处理器的指令系统的发展 SSE2指令集 SSE2指令集是Intel在SSE的基础上所推出的一组更先进的指令集。SSE2包含了144条指令,由两个部分组成:SSE部分和MMX部分。 SSE3指令集 SSE3指令是目前规模最小的指令集,它只有13条指令。基于Prescott核心的Intel Pentium 4支持该指令集。 SSE4指令集 SSE4指令集是Intel为酷睿2架构处理器所引入的新指令集。SSE4指令集共包括16条指令,支持高级解码、拥有预处理和增强型3D处理能力。普通高等教育普通高等教育“十一五十一五”国家级规划教材

温馨提示

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

评论

0/150

提交评论