微型计算机原理与接口技术(冯博琴第2版)第3章1.ppt_第1页
微型计算机原理与接口技术(冯博琴第2版)第3章1.ppt_第2页
微型计算机原理与接口技术(冯博琴第2版)第3章1.ppt_第3页
微型计算机原理与接口技术(冯博琴第2版)第3章1.ppt_第4页
微型计算机原理与接口技术(冯博琴第2版)第3章1.ppt_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

1,第3章指令系统,2,主要内容:,指令系统的一般概念对作数的寻址方式六大类指令的操作原理:,3,3.1概述,指令:控制计算机完成某种操作,并被识别的命令指令系统:处理器所能识别的所有指令的集合指令的兼容性:同一系列机的指令都是兼容的。,4,8088/8086的指令系统(表3-1,92条指令):传数据传送指令算术运算指令逻辑运算和移位指令串操作指令控制转移指令处理器控制指令,3.1概述,5,3.1.1指令的基本构成,指令中应包含的信息:,运算数据的来源运算结果的去向执行的操作,6,1.指令格式,执行何种操作,目标操作数,源操作数,参加操作的数据或数据存放的地址,操作码操作数,操作数,7,1.指令格式:,零操作数指令:操作码单操作数指令:操作码操作数双操作数指令:操作码操作数,操作数,8,2、指令中的操作数,1)立即数2)寄存器3)存储器,参加操作的数据本身,数据存放的地址,9,1)立即数操作数,立即数只能作为源操作数。其本身是参加操作的数据,可以是8位或16位。例:MOVAX,1234HMOVBL,22H【注意】:立即数无法作为目标操作数(P93)立即数相当于高级语言的常数,可以是无符号或带符号数,其数值应在可取值范围内。,10,2)寄存器操作数:,参加运算的数存放在指令给出的寄存器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH注意:范围8位:0255/12812716位:035535/3276832767,11,3)存储器操作数,参加运算的数存放在存储器的某一个或某两个单元中表现形式:,立即数或寄存器,12,例:,MOVAX,1200HMOVAL,1200H,1200H,偏移地址,AHAL,13,段地址默认段DS,BP(SS),指定段有效地址:操作数的偏移地址也称有效地址EA多种寻找方式,3)存储器操作数,14,3.1.2指令的执行时间,指令的字长影响指令的执行速度(常用指令的执行时间见附录C)对不同的操作数,指令执行的时间不同:,快!,15,3.1.2指令的执行时间,例:若CPU的时钟频率5MHz,即一个时钟周期0.2us,MOV指令寄存器到寄存器T=20.20.4us立即数到寄存器T=40.20.8us存储器到寄存器,采用基址、变址寻址T=(8EA)0.2=(88)0.2=3.2us,16,3.1.3、CISC和RISC指令系统(了解),CISC指令系统(P95)优点指令的功能强,种类多,高级语言和机器语言间的距离缩小;缺点8020定律指令系统复杂,控制逻辑不规整,给VLSI工艺造成困难。指令功能变强,但硬件复杂度增加,程序总的执行时间变长8088指令属于CISC,17,3.1.3、CISC和RISC指令系统(了解),RISC指令系统尽量采用寄存器与寄存器之间的操作,以提高速度指令功能较弱,种类少,格式简单例如指令长度相等便于采用流水线,多数指令在1个计算机周期内完成CISC与RISC对比用CISC编写的程序代码量小,总执行时间慢用RISC编写的程序代码量大,总执行时间快,18,3.2寻址方式,寻找操作数所在地址的方法寻找指令转移地址的方法,本节,寻址包括:,19,3.2.1立即寻址,指令中的源操作数是立即数,即源操作数是参加操作的数据本身例:MOVAX,1200H,代码段,注意:低字节在低地址,20,3.2.2直接寻址,指令中直接给出操作数的偏移地址例:MOVAX,1200H设DS20000H,物理地址,数据段,AHAL,21,3.2.2直接寻址,与立即寻址区别:立即寻址的数在代码段,直接寻址的数在数据段直接寻址的16位操作数是地址,用,P97直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。例:MOVAX,ES:1200H,注意:不能漏方括号,22,3.2.3寄存器寻址,参加操作的操作数在CPU的通用寄存器中。例:MOVAX,BX,23,3.2.4寄存器间接寻址,由寄存器间接给出操作数的偏移地址;存放偏移地址的寄存器称为间址寄存器,它们是:BX,BP,SI,DI操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:P99BX,SI,DIBP,默认在数据段DS,默认在堆栈段SS,24,3.2.4寄存器间接寻址例,例3-5:MOVAX,SI设DS6000H,SI=1200H,61200H,物理地址,AHAL,1122,数据段,代码段,参与操作的操作数存放在内存中,其偏移地址为指令中的寄存器的内容。,25,3.2.5寄存器相对寻址,操作数的偏移地址为:寄存器的内容加上一个位移量例3-7:MOVAX,DATABX设:DS=6000H,BX=1000H,DATA=0008H则:物理地址=60000H+1000H+8H=61008HAX=AHAL=61009H61008HP100图36,26,3.2.5寄存器相对寻址,例3-8,将TABLE表中第10项放入ALMOVSI,9;第10项,位移量9MOVAL,TABLE+SI以下写法等价MOVAL,DATASIMOVAL,SIDATAMOVAL,SI+DATAMOVAL,DATA+SIMOVAL,DATA+SI,联想:C语言中的数组下标为什么从0开始?,27,3.2.6基址-变址寻址,寄存器间接寻址,基址寻址(间址寄存器为基址寄存器BX,BP)变址寻址(间址寄存器为变址寄存器SI,DI),28,3.2.6基址-变址寻址,操作数的偏移地址为:一个基址寄存器的内容加上一个变址寄存器的内容,操作数的段地址由选择的基址寄存器决定例3-9:MOVAX,BXSIDS=8000H,BX=2000H,SI=1000H物理地址=80000H+2000H+1000H=83000HP100图37,29,3.2.6基址-变址寻址,MOVAX,BXBP;同时出现两个基址寄存器MOVAX,SIDI;同时出现两个变址寄存器,特别注意:(P101)不允许两个基址寄存器(BX/BP)或两个变址寄存器(SI/DI)组合在一起寻址,30,3.2.7基址-变址-相对寻址,操作数的偏移地址为:一个基址寄存器的内容加上一个变址寄存器的内容,再加上一个位移量。操作数的段地址由选择的基址寄存器决定,31,3.2.7基址-变址-相对寻址,例3-10:MOVAX,DATABXSI物理地址:(DS)16(BP)(SI)DATAP101图38等价MOVAX,DATASIBXMOVAX,BX+DATASIMOVAX,BX+SI+DATAMOVAX,BXDATASIMOVAX,BX+SIDATA,32,3.2.7基址-变址-相对寻址,同样,基址变址相对寻址也不允许指令同时出现两个基址或两个变址寄存器下面两条指令是非法的MOVAX,DATASIDIMOVAX,BXBPDATA,33,3.2.8隐含寻址,指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中例:MULBL指令的执行:(AL)(BL),AX,34,实例,例:设BX=0158H,DI=10A5H,位移量DIS=1B57H,DS=2100H,各种寻址方式下,有效地址和物理地址如下:,35,实例直接、寄存器间接,直接寻址:MOVAL,DIS有效地址=1B57H物理地址=21000H+1B57H=22B57H寄存器间接寻址(寄存器为BX):MOVAL,BX有效地址=0158H物理地址=21000H+0158H=21158H,BX=0158H,DI=10A5H,DIS=1B57H,DS=2100H,36,实例寄存器相对变址寻址,BX寄存器相对间接寻址:MOVAL,BX+DIS有效地址=0158H+1B57H=1CAFH物理地址=21000H+1CAFH=22CAFH变址寻址(寄存器为DI):MOVAL,DI有效地址=10A5H物理地址=21000H+10A5H=220A5H,BX=0158H,DI=10A5H,DIS=1B57H,DS=2100H,37,实例寄存器相对变址、基址加编址,DI寄存器相对变址寻址:MOVAL,DI+DIS有效地址=10A5H+1B57H=2BFCH物理地址=21000H+2BFCH=23BFCH基址加变址的寻址(BX为基址寄存器,DI为变址寄存器):MOVAL,BX+DI有效地址=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDH,BX=0158H,DI=10A5H,DIS=1B57H,DS=2100H,38,实例相对基址加变址,相对的基址加变址的寻址(BX为基址寄存器,DI为变址寄存器):MOVAL,BXDI+DIS有效地址=0158H+10A5H+1B57H=2D54H物理地址=21000H+2D54H=23D54H,BX=0158H,DI=10A5H,DIS=1B57H,DS=2100H,39,3.38086指令系统,主要内容:指令码的含义指令对操作数的要求指令的对标志位的影响指令的功能注意:P105的常用符号含义,40,3.3.1数据传送指令,从功能上包括六大类:,数据传送算术运算逻辑运算和移位串操作程序控制处理器控制,41,3.3.1数据传送指令,数据传送指令按功能分为4类:通用数据传送输入输出地址传送标志位操作,返回,42,1、通用数据传送,一般数据传送指令堆栈操作指令交换指令查表转换指令字位扩展指令,特点:该类指令的执行对标志位不产生影响,返回,43,1)一般数据传送指令,一般数据传送指令MOV格式:MOVdest,src操作:(dest)操作数低字节SP+1操作数高字节SP+2-SP,2)堆栈操作指令,(2)出栈指令的操作,54,2)堆栈操作指令,执行POPAX,(2)出栈指令的操作,1234,55,2)堆栈操作指令,指令的操作数必须是16位的;操作数可以是寄存器或存储器两单元,但不能是立即数;不能从栈顶弹出一个字给CS;PUSH和POP指令在程序中一般成对出现;PUSH和POP执行顺序相反,以维持原来状态。,(3)堆栈操作指令说明:,56,堆栈操作指令例,例3-13MOVAX,9000HMOVDX,38FFHPUSHAXPUSHBXPOPAXPOPBX,PUSH和POP执行次序相同,返回,否则,会使AX和BX的内容互换,可用于逆序排列,57,3)交换指令,格式:XCHGREG,MEM/REG注:两操作数必须有一个是寄存器操作数不允许使用段寄存器。例:XCHGAX,BXXCHG2000,CL,返回,58,4)查表指令,格式:XLAT说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址操作:将BX+AL所指单元的内容送AL,59,4)查表指令,换码指令为XLAT,使累加器中的一个值变换为内存表格中的某一个值BX表基址,AL为索引值,等价C语言解释:unsignedchar*BX,Buffer;BX=Buffer;AL=BXAL;,60,数据段中存放有一张ASCII码转换表,设首地址为2000H,现欲查出表中第11个代码的ASCII码,查表指令例,可用如下指令实现:MOVBX,2000H;BX表首地址MOVAL,0BH;AL序号XALT;查表转换执行后得到:AL=42H,61,查表指令例,(a)典型的七段式LED器件(b)共阳极LED(c)共阴极LED,共阳极结构:数码显示端低电平有效共阴极结构:数码显示端高电平有效,例如共阴极接法中,数字7需要a、b、c三段为高电平对应段码00000111即07H,返回,62,5)字位扩展指令(P113),将有符号数的符号位扩展到高位;无符号数的扩展规则为在高位补0指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及DX,AX,除法时,要预先执行CBW(CWD)指令,以产生一个双倍长度的被除数,否则不能进行除法运算。,63,字节到字的扩展指令,格式:CBW操作:将AL内容扩展到AX规则:若最高位=1,则执行后AH=FFH若最高位=0,则执行后AH=00H结论:如果AL=80H,执行CBW后AH=FFH,64,字到双字的扩展指令,格式:CWD操作:将AX内容扩展到DXAX规则:若最高位=1,则执行后DX=FFFFH若最高位=0,则执行后DX=0000H,65,字位扩展指令例,判断以下指令执行结果:MOVAL,44HCBWMOVAX,0AFDEHCWDMOVAL,86HCBW,返回,66,专门面向I/O端口操作的指令也称累加器传送指令指令格式:,输入指令:INacc,PORT输出指令:OUTPORT,acc,端口地址,2、输入输出指令,67,指令寻址方式,2、输入输出指令,直接寻址直接给出8位端口地址,范围(0FFH)间接寻址16位端口地址由DX指定,范围(0FFFFH)间接寻址只能用DX寄存器做间址寄存器P112,68,例:从3FH端口读取一个字INAX,3FH例:将23H写到端口03B0MOVDX,03B0HMOVAL,23HOUTDX,AL,2、输入输出指令,69,判断下列指令的正误:,2、输入输出指令,INAX,80HINAL,1200HOUT35H,ALOUTAL,35H,返回,70,3、地址传送指令,取偏移地址指令LEALDS指令*LES指令*,71,操作:将变量的16位偏移地址取出送目标寄存器格式:LEAREG,MEM指令要求:源操作数必须是一个存储器操作数,目标操作数通常是间址寄存器。,取偏移地址指令LEA,3、地址传送指令,72,LEA指令,例3-18:LEABX,BUFFERMOVAL,BXMOVAH,BX+1解释:内存单元BUFFER的偏移地址送BXBUFFER+1单元的数据送ALBUFFER2单元的数据送AH,73,LEA指令,例3-19:若BX=1000H,DS=6000H,6150H=33H,6150H=44H,执行下列指令的结果MOVBX,BX+50,LEABX,BX+50H,74,LEA指令,比较下列指令:MOVAX,DATA1LEASI,DATA1,符号地址,例如:DATA1偏移地址1200则,SI=1200,75,LEA指令在程序中的应用,例题:将数据段中首地址为MEM1的50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放。编写相应的程序段。,76,开始,计数值=0?,LEA指令在程序中的应用,取源地址,取目标地址,送数据块长度到CL,传送一个字节,修改地址指针,修改计数值,N,Y,结束,77,LEA指令在程序中的应用,LEASI,MEM1LEADI,MEM2MOVCL,50NEXT:MOVAL,SIMOVDI,ALINCSIINCDIDECCLJNZNEXTHLT,P107例题312,返回,78,4、标志位操作指令,LAHFSAHFPUSHFPOPF,79,1)LAHF,SAHF,指令格式:LAHF操作:将FLAGS(P48)的低8位装入AH,80,2)PUSHF,POPF,将FLAGS压入堆栈将当前堆栈顶的2B内容弹出到FLAGS,返回,81,3.3.2算术运算类指令,算术运算指令涉及两种类型的数据,1.无符号数2.有符号数,8位无符号数的范围为025516位无符号数的范围为065535,8位有符号数的范围为-128+12716位有符号数的范围为-32768+32767,82,3.3.2算术运算类指令,加法运算指令减法运算指令乘法指令除法指令,83,3.3.2算术运算类指令,规则:如运算结果为0,则ZF=1;运算中出现进位/借位时,CF=1;当无符号数运算产生溢出时,CF=1;当有符号数运算产生溢出时,OF=1;如运算结果为负数,则SF=1;如运算结果中有偶数个1,则PF=1。,所有算术运算指令均影响状态标志。,84,3.3.2算术运算类指令,85,1、加法指令,普通加法指令ADD带进位位的加法指令ADC加1指令INC,加法指令对操作数的要求与MOV指令相同,86,1)ADD指令,格式:ADDOPRD1,OPRD2操作:OPRD1+OPRD2,ADD指令的执行对全部6个状态标志位都产生影响,OPRD1,87,ADD指令例,MOVAL,78HADDAL,99H指令执行后6个状态标志位的状态,88,ADD指令例,01111000+1001100100010001,1,标志位状态:CF=SF=AF=ZF=PF=OF=,1,0,1,0,1,0,89,2)ADC指令,指令格式、对操作数的要求、对标志位的影响与ADD指令完全一样指令的操作:OPRD1+OPRD2+CFOPRD1,ADC指令多用于多字节数相加,使用前要先将CF清零,90,2)ADC指令,例3-22:求两个4字节无符号数01017A379H+10067E4FH的和,MOVAX,A379HADDAX,7E4FHMOVBX,0107HADCBX,1006H,91,3)INC指令,格式:INCOPRD操作:OPRD+1OPRD,不影响CF标志,常用于在程序中循环计数,不能是段寄存器或立即数,92,2、减法指令,普通减法指令SUB考虑借位的减法指令SBB减1指令DEC比较指令CMP求补指令NEG,减法指令对操作数的要求与对应的加法指令相同,93,1)SUB指令,格式:SUBOPRD1,OPRD2操作:OPRD1-OPRD2OPRD1对标志位的影响与ADD指令同,94,指令格式、对操作数的要求、对标志位的影响与SUB指令完全一样指令的操作:OPRD1-OPRD2-CFOPRD1,2)SBB指令,95,3)DEC指令,格式:DECOPRD操作:OPRD-1OPRD,指令对操作数的要求与INC相同指令常用于在程序中修改计数值,96,3)DEC指令,例3-23延时子程序:Delay:MOVCX,0FFFFHNEXT:DECCXJNZNEXT;ZF0,转NEXTRET;子程序返回,C语言for(CX=FFFFH,CX0,CX-)空循环;,97,4)NEG指令,格式:NEGOPRD操作:0-OPRDOPRD,8/16位寄存器或存储器操作数,对于负数:用0减去操作数(补码形式),相当于对该操作数求“补码”,得到该操作数的绝对值(P31),98,4)NEG指令,99,格式:CMPOPRD1,OPRD2操作:OPRD1-OPRD2,5)CMP指令,指令执行的结果不影响目标操作数,仅影响标志位!,100,CMP指令,用途:用于比较两个数的大小,可作为条件转移指令转移的条件操作数的要求和对标志位的影响与SUB指令相同,101,CMP指令,1.两个无符号数:,2.两个有符号数:,ZF=1:被减数=减数,ZF=1:被减数=减数,102,CMP指令例,例3-24在内存数据段从DATA开始单元存放两个8位无符号数,比较它们大大小,并将大的送MAX单元,LEABX,DATAMOVAL,BX;取第1个数INCBX;BX指向第2个数CMPAL,BX;第1个数和第2个数比较JNCDONE;CF0表示第1个数大于第2个数MOVAL,BX;DONE:MOVMAX,ALHLT,103,3、乘法指令,无符号的乘法指令MUL带符号的乘法指令IMUL,注意:乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX;,104,3、乘法指令,MUL操作数,IMUL操作数,被乘积88AH:AL1616DX:AX3232EDX:EAX,105,1)无符号数乘法指令,格式:MULOPRD(不能是立即数)操作:OPRD为字节数OPRD为16位数,ALOPRD,AXOPRD,DXAX,AX,106,无符号数乘法指令例,MULBYTEPTRBX,BX,AL乘XXH,AX,107,2)带符号数乘法指令,格式:IMULOPRD说明:IMUL指令将OPRD视为带符号数,OPRD为补码形式,108,两条乘法指令的比较,例:设:AL=FEH,CL=11H,求AL与CL的乘积。执行:MULCL结果:AX=10DEH执行:IMULCL结果:AX=FFDEH=-34。,若设为无符号数,若将两操作数看作有符号数,109,两条乘法指令的区别,无符号数CF=OF=0,说明运算结果没有超出低位(AL/AX),高位(AH/DX)为无效数据CF=OF=1,说明运算结构超出低位(AL/AX),高位(AH/DX)为有效数据,有符号数CF=OF=0,说明运算结果没有超出低位(AL/AX),高位为地位的符号扩展(CF=OF=1,说明运算结构超出低位(AL/AX),高位(AH/DX)为有效数据,110,4、除法指令,规则:当被除数为16位,除数为8位时,8位的商放在AL,8位的余

温馨提示

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

评论

0/150

提交评论