计算机组成原理指令系统.ppt
《计算机组成原理指令系统.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理指令系统.ppt(161页珍藏版)》请在三一办公上搜索。
1、指令系统,4.1 寻址方式 4.1.1 与数据有关的寻址方式 4.1.2 与转移地址有关的寻址方式,第 4 章,4.2 指令系统 4.2.1 数据传送指令 4.2.2 算术运算指令 4.2.3 逻辑指令 4.2.4 串处理指令 4.2.5 控制转移指令 4.2.6 处理器控制指令,掌握8086 CPU的寻址方式 掌握汇编语言的指令系统,教 学 要 求,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响。其他方面该指令其他需要特别注意的地方,如
2、指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等。,第 4.1节,寻址方式,指令基本格式,一个,一个或几个,一条指令实际上包括两种信息即操作码和地址码。操作码用来表示该指令所要完成的操作,其长度取决于指令系统中的指令条数;地址码用来描述该指令的操作对象,或者直接给出操作数或者指出操作数的存储器地址或寄存器地址(即寄存器名)。,4.1.1 指令格式,指令中提供的地址数,存储单元地址码寄存器编号,1.指令提供地址的方式 显地址方式 隐地址方式,:指令中明显指明地址。:地址隐含约定,不出现在指令中。,直接或间接给出,使用隐地址可以减少指令中的地址数,简化地址结构。,4.1.1 指令格式,指令
3、和数据的联系和区别联系:都是以二进制码的形式存储的。区别:指令的地址是由程序计数器(PC)规定的;而数据的地址是由指令规定的。在程序执行过程中,要避免修改指令,但可以修改数据。,4.1.1 指令格式,指令系统,标号:给指令所在的地址取名字。注释:说明程序,汇编程序不对它作任何处理。操作码:指计算机所要执行的操作,是一种助记符。操作数:指出在指令执行过程中所需要的操作数,即指出操作数存放于何处 CPU内部的寄存器或内存储器。该字段可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是其它有关操作数的信息。操作数通常为是0个-两个。8086指令系统的指令大多数是双操作数指令。,指令的一般
4、格式,指令系统,8086指令系统的指令大多数是双操作数指令。,其中:源操作数:直接给出参加指令操作的操作数本 身,或指出操作数放在什么地方;目的操作数:指出参加指令操作的操作数放在何 处,并指出操作结果送至何处。指令执行前后,源操作数不变。,操作数的形式(3种)立即数:操作数以常量形式出现(指源操作数)寄存器操作数:要操作的数据存在R中。内存操作数:要操作的数据存在M中。,指令的寻址方式,操作数可能在哪?,地址的表示方法,物理地址逻辑地址:段地址:段内偏移量,就是寻找操作数所在地址的方法。,寻址方式:或者是寻找操作数有效地址(EA)的方法。,有效地址(EA)的构成,位移量:disp8位或dis
5、p16位基址寄存器:存放在BX或BP中的内容变址寄存器:存放在SI或DI中的内容,不同的组合方式不同的寻址方式,与数据有关的寻址方式(7种),1.立即寻址 指令中直接给出操作数,演示,与数据有关的寻址方式(7种),即操作数放在CPU内部寄存器 AX、BX、CX、DX、DI、SI、SP和BP中,不需要访问存储器。,2.寄存器寻址指令中给出存储操作数的寄存器号,演示1,演示2,与数据有关的寻址方式(7种),3.直接寻址有效地址EA由指令直接给出。物理地址=(DS)10HEA,演示1,演示2,与数据有关的寻址方式(7种),3.直接寻址,4.寄存器间接寻址 指令中直接给出操作数EA;EA在基址寄存器B
6、P、BX或变址寄存器SI、DI中,而操作数则在存储器中。,BX、SI、DI作间址寄存器,指示数据段中的数据;BP作间址寄存器,则指示的是堆栈段中的数据。,与数据有关的寻址方式(7种),4.寄存器间接寻址,演示1,演示2,与数据有关的寻址方式(7种),5.寄存器相对寻址,与数据有关的寻址方式(7种),5.寄存器相对寻址,演示1,演示2,与数据有关的寻址方式(7种),6.基址变址寻址,与数据有关的寻址方式(7种),6.基址变址寻址,演示1,演示2,与数据有关的寻址方式(7种),7.相对基址变址寻址,与数据有关的寻址方式(7种),7.相对基址变址寻址,演示1,演示2,第 4.2节,指令系统,4.2,
7、8086指令系统按功能可分为6大类:数据传送指令 算术运算指令 逻辑指令 程序控制指令 串处理指令 输入输出类指令 处理机控制指令,指令系统,数据传送指令,数据传送指令,一.通用数据传送指令,(1)数据传送MOV指令,指令格式:MOV DST,SRC;指令功能:将数据从源地址传送到目的地址,具有“复制”性质;DST、SRC分别为目的操作数和源操作数.,例如:MOVAX,1234H MOVAL,CL,注意,MOV指令传送功能 MOV DST,SRC,MOV也并非任意传送,立即数,段寄存器CS DS ES SS,通用寄存器AX BX CX DXBP SP SI DI,存储器,4.2.1 数据传送指
8、令,具体实现,1)数据在CPU内部寄存器之间传送 MOV AL,BL;通用寄存器之间字节传送 MOV DI,BX;通用寄存器之间字传送 MOV DS,AX;通用寄存器传送到段寄存器 MOV AX,ES;段寄存器传送到通用寄存器,2)立即数传送至CPU内部通用寄存器或存储器中 MOV DL,58;8位立即数传送到通用寄存器 MOV BP,016AH;16位立即数传送到通用寄存器 MOV BYTE PTR BX,7BH;8位立即数传送到存储器 MOV WORD PTR BX,057BH;16位立即数传送到存储器,4.2.1 数据传送指令,3)数据在CPU内部寄存器与存储器之间的传送 MOV CL,
9、BX+5;字节传送 MOV AX,SI;变址传送 MOV DS,BX+SI;基址变址传送 MOV AX,DATABPSI;相对基址变址传送 MOV DI,BX;将BX内容传送到DI所指位置 MOV BX,DATA1;将符号地址DATA1的存储器内容传送到BX中,具体实现,4.2.1 数据传送指令,常见错误,CS和IP不能作为目的操作数 MOV CS,AX(X)MOV IP,AX(X),不允许数据直接从存储器传送到存储器 如要把DS段内偏移地址为ADDR1的存储单元的内容,传送至同一段内地址为ADDR2的存储单元中去,MOV ADDR2,ADDR1 MOV AL,ADDR1 MOV ADDR2,
10、AL,(X),(V),4.2.1 数据传送指令,常见错误,立即数不允许直接送段寄存器,也不允许在两个段寄存器之间直接传送信息。MOVDS,5000H(X)MOVDS,ES(X)可以用通用寄存器(如AX)为桥梁来实现传送。MOV AX,5000H MOV DS,AX(V),4.2.1 数据传送指令,一.通用数据传送指令,指令格式:XCHG OPR1,OPR2;执行操作:OPR1 OPR2;指令功能:将一个字节或一个字的源操作数和 目的操作数相交换;,(2)交换指令XCHG,交换可在reg之间、reg与mem之间进行。可以是字节交换,也可以是字交换。段寄存器内容不能交换。,4.2.1 数据传送指令
11、,复习提问,1.说明程序功能,寻址方式,判断对错并改正(1)MOV 2000H,BX(2)MOV 2000H,IP(3)MOV SS,2000H(4)MOV DS,SI+DI(5)MOV DS,ES(6)MOV BX+DI,AX(7)MOV BL,BP(8)MOV BX,BX+DI+2000H(9)MOV BH,BP+SI(10)MOV AL,ES:2000H(11)PUSH 2000H(12)POP DS,2.现有:(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(212
12、00H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H。试说明下列各指令执行后,AX寄存器的内容。,(1)MOV AX,1200H(2)MOV AX,BX(3)MOV AX,1200H(4)MOV AX,BX(5)MOV AX,1100HBX(6)MOV AX,BXSI(7)MOV AX,1100HBXSI,复习提问,3.假定:(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H。指出下列源操作数的寻址方式?有效地址和物理地址值是
13、多少?,(1)MOV AX,00ABH(2)MOV AX,100H(3)MOV AX,BX(4)MOV AX,BP(5)MOV AX,BX+10(6)MOV AX,BXSI(7)MOV AX,BX(8)MOV AX,VAL(9)MOV AX,ES:BX(10)MOV AX,SI(11)MOV AX,VALBX(12)MOV AX,VALBPSI,堆栈:在内存中开辟的一片数据存储区(设置在堆栈段内),存储方式:是一端固定,另一端活动,即只允许在一端向该存储区存入或取出数据,数据的存取遵循“先进后出”原则。从硬件来看,堆栈由一片存储单元和一个指示器(即堆栈指针SP)组成。堆栈的固定端称栈底(BOT
14、TOM)。堆栈指针SP用于指示数据进栈和出栈时偏移地址的变化,SP所指示的最后进入数据的单元称栈顶(TOP),堆栈中所有数据的存取都在栈顶进行。,二.堆栈操作指令,4.2.1 数据传送指令,二.堆栈操作指令,4.2.1 数据传送指令,(1)压栈指令格式 PUSH,格式为:PUSH SRC;(先减后压)执行的操作:(SP)(SP)2(SP)1,(SP)(SRC)SRC可以是内部寄存器、段寄存器、存储器,二.堆栈操作指令,(2)出栈指令格式 POP,格式为:POP DST;(先弹后加)执行的操作:(DST)(SP)1,(SP)(SP)(SP)2;DST可以是内部寄存器、段寄存器(CS除外)、存储器
15、。,4.2.1 数据传送指令,(2)堆栈操作指令,1)堆栈指令必须是16位双字节数,即每进行一次PUSH操作,SP减2;每进行一次POP操作SP加2;2)目的操作数DST,与原操作数SRC都不能为立即数;3)DST不能为代码段寄存器CS;4)堆栈指令不影响标志位寄存器FR的值。,注意,例:PUSH 1234H POP CS,不能用立即寻址方式 DST不能是CS,4.2.1 数据传送指令,例:实现两个字型存储器操作数BUF1及BUF2的交换,方法1:利用寄存器,方法1:利用堆栈,MOV AX,BUF1XCHG AX,BUF2MOV BUF1,AX,PUSH BUF1 PUSH BUF2 POP
16、BUF1 POP BUF2,例:寄存器间交换,MOV AX,1234H;AX=1234H MOV BX,5678H;BX=5678H XCHG AX,BX;AX=5678H,BX=1234H XCHG AH,AL;AX=7856H,4.2.1 数据传送指令,(2)POPF指令,指令功能:与PUSHF指令执行相反的操作,将堆栈栈顶 两个单元的内容弹出至FR。指令格式:POPF 执行操作:(FR低8位)(SP);(FR高8位)(SP1);(SP)(SP2);,指令格式:PUSHF 指令功能:把标志寄存器FR的内容压栈;执行操作:(SP)(SP2);(SP)(FR低8位);(SP1)(FR高8位);
17、,PUSHF和POPF是成对出现,用于保护和修改FR,标志传送指令,三.,4.2.1 数据传送指令,进入子程序push axpush bxpush cxpushfpopfpop cxpop bxpop ax返回,子程序内容,进入子程序首先保护现场,从子程序返回前恢复现场,例:子程序应用,4.2.1 数据传送指令,指令功能:将源操作数传送至一对目标寄存器;指令格式:LDSREG,SRC;执行操作:(REG)(SRC)(DS)(SRC2);,(2)LDS指针送寄存器和DS,4.2.1 数据传送指令,四.地址传送指令,(3)LES指针送寄存器和ES,指令功能:除地址指针的段地址送ES外,其他与LDS
18、类似;指令格式:LDS REG,SRC;执行操作:(REG)SRC;(ES)(SRC2);,4.2.1 数据传送指令,例:LEA BX,BX+SI+0F62H LDS SI,10H LES DI,BX,TABLE(DS):1000H,MOV BX,TABLE;(BX)=0040HMOV BX,OFFSET TABLE;(BX)=1000HLEA BX,TABLE;(BX)=1000HLDS BX,TABLE;(BX)=0040H;(DS)=3000HLES BX,TABLE;(BX)=0040H;(ES)=3000H,注意:*不影响标志位*REG 不能是段寄存器*SRC 必须为存储器寻址方式,
19、4.2.1 数据传送指令,算术运算指令,运算的操作数允许是字节或字;可以是有符号数,也可以是无符号数。指令中有单操作数指令,也有双操作数指令。,算术运算指令,算术运算指令,1.加法指令,(1)加法指令ADD,指令格式:ADD DST,SRC;执行操作:(DST)(SRC)(DST),指令格式:ADC DST,SRC;执行操作:(DST)(SRC)(DST)CF,运算结果影响的标志位:CF、DF、PF、SF、ZF和AFADC指令主要与ADD配合,实现多精度加法运算,注意:ADD和ADC影响标志位:,1 结果为负0 否则,SF=,1 结果为00 否则,ZF=,1 和的最高有效位 有向高位的进位0
20、否则,CF=,1 同号相同,结果相异0 否则,OF=,CF 位表示 无符号数 相加的溢出。OF 位表示 带符号数 相加的溢出。,算术运算指令,1.加法指令,ADD,ADC,例:n=8bit 带符号数(-128127),无符号数(0255),带符号数和无符号数都不溢出,带符号数溢出,无符号数溢出,带符号数和无符号数都溢出,例双精度数加法计算,已知:(DX)=0002H(AX)=0F365H(BX)=0005H(CX)=8100H 指令序列 ADD AX,CX;(1)ADC DX,BX;(2),(1)执行后(AX)=7465H CF=1 OF=1 SF=0 ZF=0,(2)执行后(DX)=0008
21、H CF=0 OF=0 SF=0 ZF=0,4.2.2 算术运算指令,(3)加1指令INC,指令格式:INCOPR 执行操作:(OPR)(OPR)1,【例】INC AL INC BYTE PTR BX INC WORD PTR BX,INC,4.2.2 算术运算指令,SUB,SBB,DEC,4.2.2 算术运算指令,2.减法指令,CMP,4.2.2 算术运算指令,例x、y、z 均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现:w x+y+24-z,并用W,W+2单元存放w,MOV AX,XMOV DX,X+2ADD AX,YADC DX,Y+2;x+
22、y,ADD AX,24ADC DX,0;x+y+24,SUB AX,ZSBB DX,Z+2;x+y+24-z,MOV W,AXMOV W+2,DX;结果存入W,W+2单元,3.,(1)无符号数乘法指令MUL,乘法指令,指令格式:MUL SRC 指令操作:(AX)(AL)*(SRC);字节操作数(DX,AX)(AX)*(SRC);字操作数,4.2.2 算术运算指令,乘法指令对 CF/OF 的影响:,00 乘积的高一半为零11 否则,MUL指令,CF,OF=,00 乘积的高一半是低一半的符号扩展11 否则,3.,乘法指令,CF,OF=,IMUL指令,4.2.2 算术运算指令,除法指令,4.,指令I
23、DIV格式与操作同DIV指令。,4.2.2 算术运算指令,除法指令,4.,除法错中断:当被除数远大于除数时,所得的商有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出;8086CPU中就产生编号为0的内部中断除法错中断。发生除法溢出的情况:对DIV指令,除数为0,或在字节除时商超过8位,或者在字除时商超过16位。对IDIV指令,除数为0,或在字节除时商不在-128127范围内,或者在字除时商不在-3276832767范围内。,4.2.2 算术运算指令,5.符号扩展指令,指令功能:AL AX指令格式:CBW 若(AL)的最高有效位为0,则(AH)=00H 若(AL)的最
24、高有效位为1,则(AH)=FFH,指令功能:AX(DX,AX)指令格式:CWD 若(AX)的最高有效位为0,则(DX)=0000H 若(AX)的最高有效位为1,则(DX)=FFFFH,4.2.2 算术运算指令,5.符号扩展指令,例(AX)=0BA45H CBW;(AX)=0045H CWD;(DX)=0FFFFH;(AX)=0BA45H,符号扩展;指用一个操作数的符号位(即最高位)形成另一个操作数。后一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小,即将原操作数的符号位复制到扩展后高半部分的各个位。,数据64H(表示+100),其最高位D7为0,符号扩展后:0064H(仍表
25、示数据100)数据ff00H(表示256),其最高位D15为1,符号扩展后:ffffff00H(仍表示有符号数256),4.2.2 算术运算指令,例 x y z v 均为16位带符号数,计算(v(x*y+z 540)/x,MOV AX,X IMUL Y;X*Y(DX,AX),MOV CX,AXMOV BX,DXMOV AX,ZCWD;Z(DX,AX),ADD CX,AXADC BX,DX;X*Y+Z(BX,CX),SUB CX,540 SBB BX,0;X*Y+Z-540,MOV AX,VCWD;V(DX,AX)SUB AX,CXSBB DX,BX;V-(X*Y+Z-540),IDIV X;(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 指令系统
链接地址:https://www.31ppt.com/p-6023926.html