lecture[4]指令系统.ppt_第1页
lecture[4]指令系统.ppt_第2页
lecture[4]指令系统.ppt_第3页
lecture[4]指令系统.ppt_第4页
lecture[4]指令系统.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第四讲指令系统,主要内容:寻址方式指令系统,寻址方式:指令地址寻址、操作数地址寻址,指令地址寻址,相对寻址:将一条指令的8位立即数与下一条指令的起始地址相加,结果赋给程序计数器(PC),然后转向相加结果指向的地址立即数是带符号位的补码(128to+127),相对转移值是从下一条指令的起始地址开始,范围在128与+127之间执行“BR$addr16”指令或条件转移指令,立即寻址:将指令中的立即数赋给程序计数器(PC),然后转向该地址如“CALL!addr16”、“BR!addr16”或“CALLF!addr11”指令CALL!addr16和BR!addr16指令的转移地址范围是所有内存空间。CALLF!addr11指令的转移地址范围在0800H与0FFFH之间,CALL!addr16,BR!addr16指令,指令地址寻址,CALLF!addr11指令,指令地址寻址,表间接寻址:通过指令码低5位的立即数(从第1位到第5位),访问特定存储单元的表的内容(转移目的地址),并将表的内容赋给程序计数器(PC),然后转向该地址在执行CALLTaddr5指令时,进行表间接寻址。执行该指令时,根据存储在内存表中40H至7FH之间的地址,能够跳转到整个内存空间的任意位置,指令地址寻址,寄存器寻址:将一条指令的寄存器对(AX)的内容赋值给程序计数器(PC),然后转向该地址“BRAX”指令,指令地址寻址,指令执行期间寄存器寻址和存储器寻址所进行的操作,隐含寻址:规定某些寄存器地址是作为通用寄存器中的累加器(A和AX)使用,操作数地址寻址,寄存器寻址:将通用寄存器作为操作数进行访问,并由寄存器组选择标志(RBS0和RBS1)和指令中的寄存器标识码(Rn和RPn)确定要访问的通用寄存器,如果使用8位寄存器,则指令码中有3位用来表示一个8位寄存器,r和rp可用绝对名称(R0到R7以及RP0到RP3)和功能名称(X,A,C,B,E,D,L,H,AX,BC,DE以及HL)来描述,操作数格式,MOVA,C;选择C寄存器作为r,操作数地址寻址,直接寻址:根据指令中的立即数直接寻址(地址为16位),操作数格式,MOVA,!FE00H;将!addr16设置为FE00H,操作数地址寻址,短直接寻址:指令中的8位立即数寻址短寻址的范围是固定的(FE20H到FF1FH)共256字节该区域为内部高速RAM和特殊功能寄存器(SFR)如果8位立即数是在20H和FFH之间,则高位地址为FEH如果8位立即数是在00H与1FH之间,则高位地址为FFH,操作数格式,MOVFE30H,#50H;saddr的值为FE30H,立即数为50H,操作数地址寻址,特殊功能寄存器(SFR)寻址:指令中的8位立即数对内存中的特殊功能寄存器(SFR)区域进行寻址,寻址区间为FF00H到FFCFH以及FFE0H到FFFFH区间共240字节,操作数格式,MOVPM0,A;选择PM0作为sfr,操作数地址寻址,寄存器间接寻址:对操作数寄存器对的内容进行寻址。由寄存器组选择标志(RBS0和RBS1)和指令码中的寄存器对说明,定义需要访问的寄存器对,【操作数格式】,MOVA,DE;选择DE寄存器对作为操作数,操作数地址寻址,基址寻址:将8位立即数加到HL寄存器对中,HL寄存器对作为基地址寄存器,根据相加结果寻址。需要访问的HL寄存器对属于由寄存器组选择标志(RBS0和RBS1)确定的寄存器组。通过将偏移量扩展为16位正数,来完成加法操作,进位忽略。该寻址方式可对整个内存空间进行,【操作数格式】,MOVA,HL+10H;byte的值为10H,操作数地址寻址,基址变址寻址:将B或C寄存器的内容加到HL寄存器中,HL寄存器作为基地址寄存器,并根据相加结果寻址。需要访问的HL、B和C寄存器属于由寄存器组选择标志(RBS0和RBS1)确定的寄存器。通过将B或C寄存器扩展为一个16位的正数来完成加法运算,进位忽略。该寻址方式可对整个内存空间进行,操作数格式,MOVA,HL+B,操作数地址寻址,堆栈寻址:根据堆栈指针(SP)的内容对堆栈区域进行间接寻址。当执行PUSH,POP,子程序调用和RETURN指令时,或者根据中断请求产生对寄存器进行设置或复位时,将自动采用这种寻址方式。该方式仅对内部高速RAM区域进行寻址,操作数地址寻址,指令系统按照功能分数据传送类指令算术运算类指令逻辑运算类指令循环操作类指令无条件转移类指令条件转移类指令位操作类指令调用及返回类指令CPU控制类指令,指令系统,大写字母和符号#、!、$、是关键字,必须按其原样书写#:立即数标识!:绝对地址标识$:相对地址标识:间接地址标识立即数用来描述一个数值型数据或标志。当使用标志时,注意必须加上符号#,!,$,和。操作数寄存器标识符r和rp、功能名称(X,A,C,etc.)或绝对名称(R0,R1,R2等)都可用于标识,操作数标识符和标识方法,操作数标识符和标识方法,数据传送类指令MOV,MOVW,XCH,XCHW,PUSH,POP,指令系统,数据传送指令MOV:8位数据操作指令MOVW:16位数据操作指令指令操作不影响标志位举例:MOVA,#4DHMOVWAX,HL,数据交换指令XCH:8位数据操作指令XCHW:16位数据操作指令指令操作不影响标志位,不允许有立即数举例:XCHA,FEBCHXCHWAX,BC,堆栈操作指令PUSH16位的寄存器,PSWPOP16位寄存器,PSW举例:PUSHAXPOPHL,算术运算指令ADD,ADDC,ADDW,SUB,SUBC,SUBW,CMP,CMPW,MULU,DIVUW,INC,INCW,DEC,DECW,ADJBA,ADJBS,指令系统,加法指令ADD:8位加ADDC:8位带进位加ADDW:16位加举例:ADDCA,HL+BADDWAX,#ABC0H,减法法指令SUB:8位减SUBC:8位带进位减SUBW:16位减举例:SUBD,ASUBCA,HLSUBWAX,#ABCDH,乘法指令:(无符号乘)MULU:将A寄存器的内容与源操作数进行无符号乘法运算,结果存于AX寄存器中举例:MULUX;只能是X,除法指令:(无符号处)DIVUW:AX/CAX(商),C(余数)除数为0时,则将X寄存器的内容存于C寄存器中,并将AX的内容设置为0FFFFH举例:DIVUWC,比较指令CMP:8位操作,修改Z、AC和CY标志位CMPW:16位操作,修改Z和CY标志举例:CMPFE38H,#38HCMPWAX,#ABCDH,指令系统,增1/减1指令INC:8位加1DEC:8位减1INCW:16位加1DECW:16位减1举例:INCBDECFE92HINCWHLDECWDE,BCD码调整加指令:ADJBA:将A寄存器、CY标志以及AC标志的内容按十进制进行调整。仅在进行BCD数据相加,且相加结果在A寄存器中时,该指令有效,影响Z标志,指令系统,BCD码调整减指令:ADJBS:将A寄存器、CY标志以及AC标志的内容按十进制进行调整。仅在进行BCD数据相减,且相减结果存在A寄存器中时,有意义。如果调整结果的A寄存器内容为0,则将Z标志设置为1,否则将Z标志清零,指令系统,逻辑运算类指令AND,OR,XOR,逻辑运算指令AND:8位逻辑与OR:8位逻辑或XOR:8位逻辑异或举例:ANDFEBAH,#11011100BHORA,FE98HXORA,L,循环操作类指令ROR,ROL,RORC,ROLC,ROR4和ROL4,指令系统,ROR,ROL,RORC,ROLC,仅限于A,且移动1位,ROL4,ROR4,ROR4HL,仅限于A和HL之间,举例:RORA,1ROLA,1RORCA,1ROLCA,1ROL4HLROR4HL,无条件转移指令BR:无条件转移指令。将目标地址操作数传送到PC中,并转向该地址BR!addr16BR$jdisp8BRAX,条件转移指令:BC,BNC,BZ,BNZ,BT,BF,BTCLR,DBNZ,指令系统,BC:当CY=1时,程序转移到操作数所规定的地址处BNC:当CY=0时,程序转移到操作数所规定的地址处,BZ:当Z=1时,程序转移到操作数所规定的地址处BNZ:当Z=0时,程序转移到操作数所规定的地址处,BT:如果操作数(位)的内容为1,程序转移到操作数所规定的地址处BF:如果操作数(位)的内容为零,程序转移到操作数所规定的地址处BTCLR:如果操作数(位)的内容为1,则将它们清零,程序转移到操作数所规定的地址处。如果第一操作数(位)是PSW.bit,则将相应标志位清零,DBNZ:第一操作数所规定的目标操作数减1,相减结果存于目标操作数中。如果相减结果不等于0,程序转移到操作数所规定的地址处。如果相减结果等于0,直接执行后续指令举例:BC$300HBNC$300HDECBBZ$0A39HCMPA,#55HBNZ$0A39HBTFE47H.3,$55CH,指令系统,位操作指令位操作指令包括:MOV1,AND1,OR1,XOR1,SET1,CLR1,NOT1,指令系统,MOV1:将源操作数的位数据传送给目标操作数AND1:CY标志和源操作数进行位逻辑与运算,结果存于CY标志中OR1:CY标志和源操作数进行位逻辑或运算,结果存于CY标志中XOR1:CY标志和源操作数进行位逻辑异或运算,结果存于CY标志中SET1:将目标操作数设置为1CLR1:将目标操作数清零NOT1:CY标志的内容取反,示例MOV1P3.4,CY;将CY的内容传送到端口3的第4位AND1CY,FE7FH.3;FE7FH的第3位与CY进行逻辑与OR1CY,P2.5;端口2的第5位与CY进行逻辑或XOR1CY,A.7;A寄存器的第7位与CY进行异或SET1FE55H.1;将FE55H的第1位设置为1CLR1P3.7;将端口3的第7位清零NOT1CY;CY标志的内容取反,指令系统,调用和返回指令包括:CALL,CALLF,CALLT,BRK,RET,RETI,TETB,指令系统,CALL:子程序调用指令,采用16位绝对寻址或寄存器间接寻址CALLF:程序调用指令,调用的地址范围为0800H至0FFFHCALLT:查找调用表,转到调用表字数据所指示的地址(地址的高8位固定为00000000B,随后5位由addr5规定)BRK:软件中断指令。将PSW和下一条指令地址(PC+1)存于堆栈中,然后将IE标志清零,屏蔽向量中断。将存储的数据转向由向量地址(003EH)处的字数据所指的地址。RETB指令用于从该指令产生的软件向量中断处返回,RET:返回指令,是从CALL,CALLF和CALLT指令所执行的子程序调用处返回RETI:向量中断返回指令。将存于堆栈的字数据返回到PC和PSW中,程序从中断服务子程序处返回。不能用于BRK指令的返回。执行RETI指

温馨提示

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

最新文档

评论

0/150

提交评论