指令系统素材.pptx
《指令系统素材.pptx》由会员分享,可在线阅读,更多相关《指令系统素材.pptx(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 指令系统概述 机器指令格式 寻址技术 立即寻址 寄存器寻址 存储器寻址方式3.2 8086/8088指令系统 数据传送指令 算术运算指令 逻辑运算和移位指令 处理器控制指令3.3 80X86指令系统 指令系统 指令系统 指令系统 指令系统第3章 指令系统第1页/共104页3.1 指令系统概述 计算机的指令系统是指其处理器所能执行的各种指令的集合。计算机的主要功能必须通过它的指令系统来实现。每种计算机都有自己的指令系统,不能互相兼容。目前,一般小型或微型计算机的指令系统可以包括几十条至几百条指令。指令有机器指令和汇编指令两种形式,机器指令用二进制代码表示,便于机器识别,但不便于用户记忆和
2、交流;汇编指令则是用助记符来表示机器指令,容易阅读和使用,但在执行之前,必须先翻译成等价的机器指令。若无特殊说明,本书此后所论及的指令均指汇编指令。第2页/共104页机器指令格式 计算机指令通常由操作码字段和操作数字段(操作码)两部分组成。指令的基本格式如图3-1所示。操作码操作数图3-1 指令的基本格式 1操作码字段 操作码字段指示计算机所要执行的操作类型。如加、减、乘、除、数据传送等。一台计算机可能有几十条至几百条指令,每条指令都有一个对应的操作码。第3页/共104页 2操作数字段 操作数字段指出指令执行操作所需的数据和操作结果存放的位置。根据一条指令操作数字段提供的操作数个数,可以将指令
3、分为以下3种:(1)双操作数指令 双操作数指令中的操作数字段提供两个操作数,中间用逗号分隔,逗号前面的操作数称为目的操作数,逗号后面的操作数称为源操作数。其格式如图3-2所示。图3-2 双操作数指令格式 操作码操作码 目的操作数目的操作数 ,源操作数源操作数机器指令格式第4页/共104页 (2)单操作数指令 单操作数指令中的操作数字段只提供一个操作数。其格式如图3-3所示。图3-3 单操作数指令格式 这类指令有两种情况,一是只需要一个操作数,例如加1指令INC、减1指令DEC等;二是指令中只给出一个操作数,另一个操作数是隐含指出的,即操作数存放在固定位置,无需指令给出,例如进栈指令PUSH、出
4、栈指令POP等。操作码操作码 操作数操作数机器指令格式第5页/共104页(3)零操作数指令 这类指令中只有操作码字段,没有操作数字段。其格式如图3-4所示。图3-4 零操作数指令格式 这类指令有两种情况,一是不需要操作数,例如停机指令HLT;二是所需的操作数是隐含指出的,即操作数存放在固定位置,无需指令给出。例如:HLT;停机指令,不需要操作数CBW ;符号扩展指令,隐含的操作数在AL和AX中 操作码操作码机器指令格式第6页/共104页寻址技术 指令中的操作数字段可能直接给出操作数,也可能给出操作数的存放地址,操作数可能存放在寄存器或存储器中。若指令中给出的是操作数的存放地址,则在执行指令时就
5、要根据指令中给出的地址信息来寻找操作数,这个过程叫做寻址,寻找操作数的各种方式统称为寻址方式。第7页/共104页立即寻址 立即寻址方式是指操作数直接包含在指令中,紧跟在操作码之后,作为指令的一部分存放在代码段中。取出指令的同时也就取出了可以立即使用的操作数,这样的操作数称为立即数。立即数可以是8位或16位数,若是16位操作数,则低位字节存放在低地址单元中,高位字节存放在高地址单元中。立即寻址方式能够快速获得操作数,但适用范围有限,通常用于给寄存器或存储器赋初值。立即寻址方式只能用于源操作数,不能用于目的操作数。在汇编指令中,立即数若是数值常数可直接书写,若是字符常数,应加上引号。第8页/共10
6、4页例如:MOV BL,20H;/将8位立即数20H存入寄存器BL中MOV AX,12BCH;/将16位立即数12BCH存入寄存器AX中MOV BX,”AB”;/将字符串”AB”存入寄存器BX中 在上例中,各指令的源操作数均采用了立即寻址方式。立即寻址第9页/共104页寄存器寻址 寄存器寻址方式是指操作数存放在寄存器中,指令中直接给出寄存器名,通过寄存器名找到操作数。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP等,对于8位操作数,寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL等。寄存器寻址方式既可以用于源操作数,也可以用于目的操作数。例如:MOV C
7、X,1234H;将16位立即数1234H存入寄存器CX MOVBL,AL;将寄存器AL的内容存入寄存器BLMOVDS,BX;将通用寄存器BX的内容存入段寄存器DS 第10页/共104页存储器寻址方式 顾名思义,存储器寻址方式就是操作数在存储器单元中。如果存储器单元作为操作数,CPU必须通过指令提供的信息计算出该存储器单元的物理地址,物理地址是由段基址和偏移量组成的,操作数物理地址计算方法:物理地址=16段基址偏移量 其中段基址取自段寄存器,所以指令只需提供计算偏移量所需要的信息就可以了。在80 x86中,根据对存储器单元地址偏移量的不同计算方法,可以分为5种不同的存储器寻址方式。需要指出的是,
8、在80 x86中,为了限制指令的长度,在同一条指令中,不允许两个操作数同时采用存储器寻址方式。第11页/共104页(1)直接寻址方式 直接寻址方式是指指令所需操作数存放在存储器单元中,其地址偏移量由指令代码中的位移量直接给出。位移量可用常数表示,也可用变量名表示。操作数如果在数据段中,则指令中不必给出段寄存器名(即默认使用DS);否则,必须使用段超越前缀来说明使用其他段中的数据。操作数格式:常数|变量名。直接寻址方式如图3-5所示。图3-5 直接寻址方式存储器寻址方式第12页/共104页例如:MOV BL,100H ;将当前数据段偏移量为100H的字节单元内容存入BLMOV AX,DA_WOR
9、D;将DA_WORD指向的字单元内容存入AXMOV DA_BYTE,0FFH;将立即数0FFH存入DA_BYTE指向的字节单元MOV ES:100H,AX;将AX内容存入ES中偏移100H的字单元第13页/共104页(2)寄存器间接寻址方式 寄存器间接寻址方式是指指令所需操作数存放在存储器单元中,其地址偏移量由基址寄存器BX、BP或变址寄存器SI、DI给出。若使用BP,默认段为SS,若使用BX、SI和DI寄存器,默认段为DS。操作数格式:BX|BP|SI|DI 寄存器间接寻址方式如图3-6所示。图3-6 寄存器间接寻址方式第14页/共104页例如:MOVBX,1234H ;设BX内容为100H
10、,将1234H存入DS段偏移100H的字单元 MOVBP,BL ;设BP内容为100H,将BL的内容存入SS段偏移100H的字节单元MOVAL,SI ;设SI内容为100H,将DS段偏移100H的字节单元的内容存入AL MOVAX,DS:BP ;设BP内容为1000H,将DS段偏移1000H的字单元的内容存入AX 第15页/共104页(3)寄存器相对寻址方式 寄存器相对寻址方式是指指令所需操作数存放在存储器单元中,指令中给定的一个基址寄存器或变址寄存器名(BX、BP、SI和DI)和一个8位或16位的相对位移量,两者之和为操作数的地址偏移量。若使用BP,默认段为SS,若使用其它寄存器,默认段为D
11、S。操作数格式:位移量BX|BP|SI|DI 寄存器相对寻址方式如图3-7所示。图3-7 寄存器相对寻址方式第16页/共104页例如:MOVAL,ES:VARSI;设SI的内容为100H,VAR所指存储单元的偏移量为200H,则 源操作数偏移量为300H,将ES段偏移量为300H的字节单元内容存入ALMOV10HBX,1234H;设BX的内容为100H,则目的操作数偏移量为110H,将1234H存入DS段偏移量为110H的字单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用了寄存器相对寻址方式。第17页/共104页(4)基址变址寻址方式 基址变址寻址方式是指指令所需操作数存放在存
12、储器单元中,指令中给定的一个基址寄存器名(BX或BP)和一个变址寄存器名(SI或DI),两者内容之和为操作数的地址偏移量。若基址寄存器使用BP,默认段为SS,若基址寄存器使用BX,默认段为DS。操作数格式:BX|BPSI|DI 图3-8所示 第18页/共104页例如:MOVAX,ES:BXSI ;设BX的内容为100H,SI的内容为20H,则源操作数偏移量为120H,将ES段偏移120H的字单元内容存入AXMOV BPDI,AL ;设BP的内容为1000H,DI的内容为50H,则目的操作数的偏移量为1050H,将AL的内容存入DS段偏移量为1050H的字节单元 在上例中,第一条指令的源操作数和
13、第二条指令的目的操作数采用了基址变址寻址方式寻址方式。第19页/共104页(5)相对基址变址寻址方式 相对基址变址寻址方式是指指令所需操作数存放在存储器单元中,指令中给定的一个基址寄存器名(BX或BP)、一个变址寄存器名(SI或DI)和一个8位或16位的相对位移量,三者内容之和为操作数的地址偏移量。若基址寄存器使用BP,默认段为SS,若基址寄存器使用BX,默认段为DS。操作数格式:位移量BX|BPSI|DI 第20页/共104页例如:MOV AL,-20HBXDI;设BX的内容为100H,DI的内容为20H,则源操作数偏移量为100H,将DS段偏移量为100H的字节单元内容存入ALMOV 10
14、0HBPSI,AX;设BP的内容为1000H,DI的内容为200H,则目的操作数的偏移量为1300H,将AX的内容存入SS段偏移量1300H的字单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用了相对基址变址寻址方式。第21页/共104页3.2 8086/8088指令系统 8086/8088指令系统中的指令按照功能可以分为六类:数据传送指令、算术运算指令、逻辑运算指令、串操作指令、处理器控制指令和控制转移指令。本节介绍数据传送指令、算术运算指令、逻辑运算指令和处理器控制指令,串操作指令和控制转移指令将在第五章的相关部分介绍。第22页/共104页数据传送指令 数据传送指令用于寄存器
15、、存储器或输入/输出端口之间传送数据或地址。数据传送指令又可以分为通用数据传送指令、累加器专用传送指令、地址传送指令和标志传送指令。1通用数据传送指令(1)传送指令MOV 格式:MOV 目的操作数,源操作数 功能:将源操作数送入目的地址中,执行后,源操作数内容不变。它可以实现寄存器之间、寄存器与存储单元之间的数据传送,以及立即数到寄存器或存储单元的传送。对标志位的影响:无第23页/共104页(2)堆栈操作指令 堆栈是在存储器中开辟的一个特殊区域,它遵循“后进先出”的存取原则。堆栈操作只能在栈顶进行,堆栈的操作有进栈和出栈两种。从8086堆栈的组织形式来看,堆栈是从高地址向低地址方向生长的。最初
16、堆栈的栈顶和栈底是重叠的,随着堆栈操作的进行,栈底的位置保持不变,而栈顶的位置却在不断地变化。进栈时栈顶向低地址方向变化,出栈时栈顶向高地址方向变化。第24页/共104页进栈指令PUSH 格式:PUSH 源操作数 功能:修改堆栈指针SP,然后将源操作数压入栈顶单元。具体操作过程:先将SP的内容减1,然后将源操作数的高字节存入当前SP所指单元,再将SP的内容减1,然后将源操作数的低字节存入当前SP所指单元。说明:源操作数可以是寄存器操作数、段寄存器操作数或存储器操作数。其长度必须是16位。对标志位的影响:无第25页/共104页出栈指令POP 格式:POP 目的操作数 功能:将栈顶单元的内容弹出(
17、复制)到目的地址中,然后修改堆栈指针SP。具体操作过程:先将当前SP所指单元的内容弹出到目的地址的低字节,然后将SP的内容加1,再将当前SP所指单元的内容弹出到目的地址的高字节,然后再将SP的内容加1。说明:目的操作数除CS以外的段寄存器操作数或字类型的存储器操作数,其长度必须是16位。第26页/共104页(3)交换指令XCHG 格式:XCHG 目的操作数,源操作数 功能:将源操作数和目的操作数互换。说明:该指令至少有一个操作数在通用寄存器中。可以实现通用寄存器之间的数据交换,或通用寄存器与存储单元之间的数据交换。其操作数可以是8位的,也可以是16位的。例如:XCHGAX,BXXCHG1000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 素材
限制150内