下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 3指令系统

3指令系统.ppt

3指令系统

liwenjiao29
2012-12-21 0人阅读 举报 0 0 暂无简介

简介:本文档为《3指令系统ppt》,可适用于高等教育领域

第三章C单片机指令系统第三章C单片机指令系统指令系统概述寻址方式指令系统分类第三章指令系统第三章指令系统指令系统概述常用符号说明常用符号说明Rn:当前被选中的工作寄存器R~R共个Ri:当前选定的工作寄存器中能作为间接寻址的两个寄存器R或Ri=#data:位二进制立即数#data:位二进制立即数direct:位片内RAM的地址(或SFR)为字节地址rel:带符号的位相对地址偏移量(-~)常用符号说明常用符号说明addr:位二进制数的目的地址addr:位二进制数的目的地址bit:片内RAM或SFR中的位地址:间址寄存器前缀符号:位操作数的前缀表示对该位取反(x):表示寄存器或存储单元x(地址)中的内容((x)):表示以寄存器或存储单元x内容作为地址的存储单元的内容(即表示x不是我们要的数据而是我们所要数据的地址):数据传送方向(左边的内容被右边的内容代替)指令是指计算机能够识别和执行的操作命令指令系统是一台计算机所具有的全部指令的集合指令系统很大程度上决定了计算机处理问题的能力和使用的快捷每一种CPU都有其独立的指令系统MCS系列单片机指令系统共有条指令MCS指令系统的功能十分强大它把体现单片机的各种功能的寄存器组织在统一的地址空间中MCS指令系统在其存储空间、时间的利用率及工作效率方面都是较高的。单字节条单周期条双字节条双周期条三字节条四周期条一、助记符:(指令助记符)一、助记符:(指令助记符)由助记符组成的指令系统成为汇编语言助记符与二进制码(机器码)有对照表共个助记符组成条指令形成种功能数据传送类指令条算术运算类指令条逻辑运算类指令条控制转移类指令条位操作类指令条二、指令格式二、指令格式操作码操作数操作码表示该指令的操作功能即指令做什么操作(又被称作操作符、功能助记符)操作数是指指令操作所需要的数或数存放的地址即对什么数进行操作标号:操作码操作数操作数操作数注释LOOP:MOVA,R将R的内容送A标号:该指令的符号地址有字母-数字串组成注释:中英文均可数据操作类指令:(数据传送、算术运算、逻辑运算)操作码目的源例MOVAH控制转移类:操作码操作数操作数转移目的地址第三章指令系统第三章指令系统寻址方式寻址方式就是如何寻找操作数或操作数存放的地址。指令的一个重要组成部分是操作数。由寻址方式指定参与运算的操作数或操作数所在单元的地址。寻址方式越多计算机寻址能力越强但指令系统也越复杂。MCS-系统七种寻址方式MCS-系统七种寻址方式立即寻址方式直接寻址方式寄存器寻址方式寄存器间接寻址方式基址加变址的间接寻址方式相对寻址方式位寻址方式一、立即寻址一、立即寻址操作数直接出现在指令码中即指令的操作码后面的就是实际的操作数(立即数)。 操作数可能是字节也可能是字节。用#data或#data表示立即数例:MOVDPTR,#H(DPH)←H,(DPL)←H MOV  A#H(A)←H立即寻址方式只能适用于源操作数。 二、直接寻址二、直接寻址指令中直接出现存放操作数的单元地址。例:ANL  H#H(H)←(H)∧HMOV  AH(A)←(H) LJMPH这种寻址方式使用的变量是direct可访问片内RAM、ROM。特殊功能寄存器只能使用直接寻址方式。 PUSHBPUSHFHPOPACCPOPEHMOV  TMODA(H)←(A)注:A(寄存器)≠ACC(代表A的地址)三、寄存器寻址三、寄存器寻址指令中出现寄存器的名称操作数是寄存器的内容。 例:MOVAR(A)←(R) INC  R(R)←(R)MOVAB(A)←(B) MOVDPTR#H这种寻址方式适用于A、DPTR、Rn(其状态由PSW中的RS和RS确定)四、寄存器间接寻址四、寄存器间接寻址指令中寄存器中的内容不是操作数本身而是操作数的地址该地址的内容才是真正的操作数。 用“寄存器”表示例:MOV  AR(A)←((R)) 如果(R)=H(H)=H则(A)=HMOVX  ADPTR如果DPTR=H片外RAM(H)=H则(A)=H寄存器间接寻址适用的存储空间有: 内部RAM使用的变量为R、R、SP例:MOVR,H  ((R))←(H)     PUSHPSW(SP)←(SP)((SP))←(PSW)SP通常隐含外部RAM(或IO口)使用的变量是R、R、DPTR例:MOVXRA((R))←(A)     MOVXA,DPTR(A)←((DPTR))五、基址加变址的间接寻址(变址间接寻址)五、基址加变址的间接寻址(变址间接寻址)以基址寄存器的内容加上变址寄存器的内容作为操作数的地址。基址寄存器:PC(位)、DPTR(位)变址寄存器:A以程序计数器PC或数据指针DPTR中的内容为基地址加上累加器A中的内容作为操作数的地址。这种寻址方式仅适用于程序存储器空间ROM 例:MOVC  AADPTR(A)←((A)(DPTR))如果DPTR=AH(A)=H则AH+H=CH如果片外ROM中(CH)=H则(A)=HMOVC  AAPC(A)←((A)(PC))注意:PC为当前值(开始执行本条指令时候PC已经+)六、相对寻址六、相对寻址作用:确定控制转移类指令的转移地址。(即指定转移的目标地址用于改变程序当前的执行顺序PC值不再顺序加)以PC内容作为基地址把指令中提供的偏移量与PC的当前值相加得到参与操作的数据地址(即指定的转移的目标地址:新的PC值)。偏移量rel是单字节带符号数。  相对寻址方式只能适用于程序存储器ROM空间。与变址寻址的区别与变址寻址的区别变址寻址中的内容是无符号的数。相对寻址中偏移量是有符号的数以补码形式给出的。取值范围是H~FH即(-~+)。故转移的目标地址在当前PC值的-~+之间。注:注:CPU取指令后PC会自动增加具体的增加量与当前指令的长度(字节数)有关。若当前指令为字节PC值会+。若当前指令为字节则PC值会+。例:SJMPH程序跳转指令字节如果当前指令的地址PC=H则PC的当前值为PC=H+=H则执行此指令后PC=+H=CH例:JC  H该指令为字节指令C=顺序执行 即(PC)←(PC)    C=转移(PC)(PC),(PC)(PC)H注意:H表示向前跳(-)如果C=此指令的地址为H则PC=PC+-H=H-=FH七、位寻址七、位寻址操作对象是存储单元的一位而不是一个字节。指令中直接给出位地址。这种寻址方式也可以归并于直接寻址方式但它提供的是直接的位地址。  SFR中有个寄存器可以位寻址但实际上只有个可以位寻址的位。所以共有+=个位可寻址MOVCbitbit-位地址有四种表示方法:(以PSW中D位为例)、直接地址法:DHMOVCDH、点操作符法:PSWMOVCPSW、位名称法:FMOVCF、点字节地址法:DHMOVCDH特殊功能寄存器位地址特殊功能寄存器位地址例如:CPLHH单元D位取反CLRHH单元D位清零CLREA(EA) 位寻址方式只能适用于位地址空间针对布尔处理器中条位操作指令。 附:程序字节数与寻址方式附:程序字节数与寻址方式只含有寄存器的为字节:MOVARMOVAR含有直接地址+字节:MOVAH含有位立即数+字节:MOVA#H第三章指令系统第三章指令系统指令系统分类一、数据传送指令一、数据传送指令按存储空间及指令功能划分:内部字节的RAM单元之间的数据传送(包括片内RAM和特殊功能寄存器SFR)堆栈操作指令数据交换指令ROM访问指令外部RAM访问指令、内部RAM单元之间的数据传送、内部RAM单元之间的数据传送)以累加器为目的操作数的数据传送指令MOVA#data(A)←#dataMOVARnn=~(A)←(Rn)MOVARii=,(A)←((Ri))MOVAdirect(A)←directdirect为内部RAM或SFR例:MOVA#HMOVARMOVARMOVAHMOVR,#HMOVH,#HMOVA,R(A)=思考)以直接地址direct为目的操作数的数据传送指令)以直接地址direct为目的操作数的数据传送指令MOVdirectA(direct)←(A)MOVdirectRn(direct)←(Rn)n=~MOVdirectRi(direct)←((Ri))i=,MOVdirectdirect(direct)←(direct)MOVdirect#data(direct)←#data例:MOVPAMOVHRMOVHRMOVEHHMOVH#H)以当前工作寄存器Rn为目的操作数的数据传送指令)以当前工作寄存器Rn为目的操作数的数据传送指令MOVRnA(Rn)←(A)n=~MOVRndirect(Rn)←(direct)MOVRn#data(Rn)←#data例:MOVRAMOVRHMOVR#FAH)以寄存器间接地址Ri为目的操作数数据传送指令)以寄存器间接地址Ri为目的操作数数据传送指令MOVRiA((Ri))←(A)i=,MOVRidirect((Ri))←(direct)MOVRi#data((Ri))←#data例:MOVRAMOVRHMOVR#HMOVR,P)位数据传送指令)位数据传送指令MOVDPTR#data(DPTR)←#data 例:MOVDPTR#H=MOVDPH#HMOVDPL#H注:注:A是一个很重要的位寄存器可以与directRiRn任意交换数据立即数#data可以给AdirectRnRidirect直接寻址可以与directRiARn任意交换数据Rn与Ri不能交换数据。例题:例题:设(H)=H(H)=HP为输入口当前输入状态为BHMOVR#HMOVARMOVRAMOVARMOVRP运行结果:(H)=(H)=(A)=(R)=(R)=P=BHHHHHBH、堆栈操作指令、堆栈操作指令必须使用直接地址只针对片内M所用的指针是SPPUSHdirect(SP)←(SP),((SP))←(direct)POPdirect(direct)←((SP)),(SP)←(SP)例:(SP)=H(A)=H(B)=HPUSHACCPUSHB(SP)←(SP)=H((SP))←(ACC)(SP)←(SP)=H,((SP))←(B)结果:(H)=H(H)=H(SP)=H例:(SP)=H(H)=H(H)=HPOPDPHPOPDPL则(DPTR)=(SP)=HH注:注:使用堆栈指令前应设SP初值否则复位(SP)=H例如:MOVSP#FH(FH单元并未“堆放”数据可作为它用)例:将H单元的数传送到H单元中PUSHHPOPH一般PUSH和POP应成对出现否则在子程序返回或中断时将出错。、数据交换指令、数据交换指令)字节交换指令:只用于内部RAM与A之间的数据交换XCHA,Rn(A)←→(Rn)XCHA,direct(A)←→(direct)XCHA,Ri(A)←→(Ri)例:(A)=H(R)=H执行:XCHAR结果:(A)=H(R)=H例:将片内RAMH单元与H单元的数据交换。XCHHH←对吗?)半字节交换指令:只针对A与Ri交换低四位XCHDARi(A)←→((Ri))(A)低位与((Ri))低位交换高位不变例:(R)=H,(H)=EH,(A)=H执行:XCHDA,R结果:(A)=EH(H)=H)累加器高低半字节交换指令将A的低位和高位相互交换SWAPA(A)~(A)~例:(A)=AHSWAPA则:(A)=AH、访问程序存储器ROM指令、访问程序存储器ROM指令即从ROM向A传送数据共条。程序存储器中的数据往往是按表格形式存放着因此程序存储器中的这类数据是用查表指令提取。MOVCAAPC(A)←((A)(PC))以PC作为基址寄存器A作为变址寄存器A的内容为无符号数相加可得到一个位地址。将该地址指出的程序存储单元的内容送入A一般用作读ROM中表格常数。寄存器A取值~FFH故本指令寻址范围为PC当前值后的个字节。即表格常数必须在PC当前值后个字节内。故也称为近程查表指令。例:设(A)=HH:MOVCAAPC则:PC当前值为HH+H=H然后将程序存储器H单元的内容送入累加器A中。MOVCA,ADPTR(A)←((A)(DPTR))以DPTR为基址寄存器与A中无符号数相加得到一个位地址将该地址所指的ROM内容送给A。由于DPTR范围为H~FFFFH所以该指令寻址范围是KROM即表格可放在KROM任何地址空间故也称为远程查表指令。例:(DPTR)=H,(A)=HROM中(H)=H执行:MOVCA,ADPTR结果:(A)=H例:编制根据A中数(~)查其平方表的程序。把平方表用伪指令DB存放在ROM中把表的首地址置入DPTR中把数~存放在变址寄存器A中。MOVDPTR#HMOVCAADPTR……H:DBHHHHHDBHHHHH采用MOVCA,APC地址源程序ORGHHMOVA,#HHMOVCA,APCHDBHHDBHHDBHHDBHHDBHHDBHHDBHAHDBHBHDBHCHDBH、访问外部RAM(或扩展IO口)与A之间的传送指令、访问外部RAM(或扩展IO口)与A之间的传送指令只采用寄存器间接寻址方式地址指针可以是R、RDPTRMOVX只与A相互传递(双向)共有条指令MOVXARi(A)←((Ri))MOVXADPTR(A)←((DPTR))MOVXRiA((Ri))←(A)MOVXDPTRA((DPTR))←(A) 片外扩展的RAM和IO口统一编址共同使用KB。因为DPTR是位所以用DPTR间接寻址可以访问KB任意单元。因为Ri是位寄存器只能寻B空间。当片外RAM小于B时可直接采用这种方式当片外RAM大于B时利用P口输出高位地址(页地址)作为一页有Ri进行页内寻址。例:向外部RAM的H单元写入数据HMOVA#HMOVDPTR#HMOVXDPTRA或MOVA#HMOVP#HMOVR#HMOVXRA总结:总结:)完成同样功能可采用不同的寻址方式的指令例:把A的内容送到HMOVHAMOVHACCMOVHEH)有些指令看起来相似但实际不同MOVHAMOVHACC)所有数据传送指令都不影响PSW习题习题.MOVA#HA←H.MOVXAHA←(H)片外RAM.MOVCAHA←(H)片外ROM.MOVXHA片外RAM(H)←A.MOVRH片内RAM(H)←(H)MOVHRXCHRRR←→RMOVXDPTR#HDPTR←HMOVXHDPTR片内RAM←片外RAM下列指令是否错误如错请改正:第三章指令系统第三章指令系统指令系统分类二、算术运算指令二、算术运算指令算术运算指令进行加、减、乘、除四则运算以及增量、减量、二-十进制调整操作共条算术运算指令影响PSW标志位Cy:进位标志位最高位D产生进位时(CY)=否则(CY)=对于无符号数结果超出则(CY)=否则(CY)=AC:辅助进位标志位当D有进位时(CY)=否则(CY)=F:供用户使用的标志位RS、RS:选择当前工作寄存器P:奇偶标志累加器A中“”的个数为奇数则(P)=累加器A中“”的个数为偶数则(P)=OV:溢出标志有符号数(补码)作加减法当结果超出(-~+)时(OV)=此时运算结果错误否则(OV)=此时运算结果正确。另一方面理解:(OV)=D’⊕D’D’:D位向D位进位或借位D’:D位向CY位进位或借位、加法指令、加法指令)不带进位的加法指令ADD源操作数均为累加器A中的内容将目的操作数与A中的内容相加结果也放在A中。ADDA,Rn(A)←(A)(Rn)ADDA,Ri(A)←(A)((Ri))ADDA,direct(A)←(A)(direct)ADDA,#data(A)←(A)#data对标志位的影响:D产生进位则(CY)=否则(CY)=D产生进位则(AC)=否则(AC)=作为有符号数溢出(超出-~+)则OV=运算结果出错否则OV=运算结果正确。结果A中“”的个数为奇数则(P)=否则(P)=例:设(A)=H(H)=DHADDAH则(A)=H(CY)=(AC)=(OV)=(P)=分析:当作为无符号数时:H=DH=HDH=>则(CY)=当作为有符号数时:H=-DH=-其和为-超出-~+故溢出(OV)=。事实上两个负数相加其结果(A)=H=为正数不合理必然溢出。例:(A)=H(R)=H(H)=FCHADDAR则(A)=FH(CY)=(AC)=(OV)=(P)=对于无符号数H=FCH=其和为>故(CY)=对于有符号数:H=FCH=其和(A)=FH=正确故(OV)=例:MOVA#BHMOVH#HMOVR#HADDARADDARADDA#H(A)=BH(H)=H(R)=H(A)=BHH=CH(A)=CHH=EH(A)=EHH=FH)带进位加法指令ADDC)带进位加法指令ADDC用于多字节加法运算使在进行高字节加法时考虑到低字节向高字节的进位。ADDCA,Rn(A)←(A)(Rn)(Cy)ADDCA,Ri(A)←(A)((Ri))(Cy)ADDCA,direct(A)←(A)(direct)(Cy)ADDCA,#data(A)←(A)#data(Cy)对标志位的影响与ADD相同例:(A)=H(R)=H(CY)=ADDCAR结果:(A)=ABH(CY)=(AC)=(OV)=(P)=例:两个位数相加低位分别存于H、H中高位分别存于H、H中求和和的低位送H高位送HMOVAHADDAHMOVHAMOVAHADDCAHMOVHA)加指令)加指令INCA(A)←(A)INCRn(Rn)←(Rn)INCdirect(direct)←(direct)INCRi((Ri))←((Ri))INCDPTR(DPTR)←(DPTR)该指令是唯一的位运算指令除INCA和INCACC影响P标志位外其他均不影响PSW标志位若:(A)=FFH,(Cy)=执行:INCA结果:(A)=H,(Cy)=比较INCAADDA#H前者不影响标志位CY、OV、AC后者影响标志位CY、OV、AC前者为个字节后者为个字节例:(A)=FFH(R)=FH(H)=FH(R)=H(H)=HINCAINCRINCHINCR常用于访问连续地址和循环程序中循环数的控制例:把H~FH单元的内容移入H~FH单元中MOVRO#HMOVR#HMOVR#HLOOP:MOVARMOVRAINCROINCRDJNZRLOOP(R)←(R)若R)≠则到LOOP处RET)十进制调整指令)十进制调整指令以上是十六进制表示的二进制的加法运算其结果都是十六进制。十进制(BCD码)加法的结果应该是十进制但系统没有专门的十进制指令因此只能借助二进制加法指令(把十进制当作十六进制相加)但结果可能出现A~FBCD码中无A~F所以需要进行十进制调整将十进制加法结果调整为十进制。DAA例:求D和D的和先看作H+H再调整MOVA,#HADDA,#H(A)=CH,并不是HDAA(A)=HH为压缩BCD码表示百位是十位为,个位为十进制数相加时在ADD和ADDC后各加上一条DAA即可、减法指令、减法指令均为带借位的减法指令)带借位的减法指令:从A中减去源操作数和借位标志CY结果留住A中。SUBBA,Rn(A)←(A)(Rn)(CY)SUBBA,Ri(A)←(A)((Ri))(CY)SUBBA,direct(A)←(A)(direct)(CY)SUBBA,#data(A)←(A)#data(CY)D位有借位(不够减)则(CY)=否则(CY)=D位有借位则(AC)=否则(AC)=D位有借位而D位不借位或D位有借位而D位不借位则(OV)=否则(OV)=影响奇偶标志P例:(A)=CH(R)=H(CY)=SUBBAR结果:(A)=H(CY)=(AC)=(OV)=(P)=若为有符号数CH为负数H为正数H为正数负数-正数=正数明显错误故(OV)=注:若只做单字节减法(位-位)即不带借位减法应先将CY清零:CLRC再执行SUBB指令。)减指令)减指令DECA(A)←(A)-DECRn(Rn)←(Rn)-DECdirect(direct)←(direct)-DECRi((Ri))←((Ri))-除第一条影响P外其他对标志位不产生影响若:(A)=H,(CY)=执行:DECA结果:(A)=FFH,(CY)=注:DPTR没有减指令只有加指令。若需要DPTR-则:DPTR(DPL、DPH)若(DPL)≠则只需(DPL)-若(DPL)=则(DPH)-CJNZDPL,#H,NEXTDECDPHNEXT:DECDPL、乘法指令、乘法指令MULAB(A)×(B)低位→A高位→B均为无符号数(A)←被乘数(B)←乘数(A)←乘积低字节(B)←乘积高字节若乘积大于FFH则OV=否则OV=。CY总是清零例:(A)=H(B)=AHMULAB则(B)=H(A)=H乘积为H(OV)=例:位×位设被乘数高位在H低位在H乘数在H乘积(位)高、中、低字节分别在H、H、H中。例:位×位设被乘数高位在H低位在H乘数在H乘积(位)高、中、低字节分别在H、H、H中。MOVA,HMOVB,HMULABMOVH,BMOVH,AMOVA,HMOVB,HMULABADDA,HMOVH,AMOVA,BADDCA,#HMOVH,A、除法指令、除法指令DIVAB(A)÷(B)商→(A)余数→(B)均为无符号数(A)←被除数(B)←除数(A)←商(B)←余数CY总是清零若(B)=则(OV)=否则(OV)=本指令范围小(~)故用处不大三、逻辑运算指令三、逻辑运算指令逻辑运算、“与”运算∧∧=∧=∧=∧=、“或”运算∨∨=∨=∨=∨=、“非”运算取反“A”==、“异或”运算⊕⊕=⊕=⊕=⊕=、逻辑“与”指令、逻辑“与”指令ANLA,Rn(A)←(A)∧(Rn)ANLA,direct(A)←(A)∧(direct)ANLA,#data(A)←(A)∧dataANLA,Ri(A)←(A)∧((Ri))ANLdirect,A(direct)←(direct)∧(A)ANLdirect,#data(direct)←(direct)∧data除前四条影响到P标志位外不影响其他PSW标志位。例:(A)=H(R)=FDHANLA,R∧)(A)=H(P)=、逻辑“或”指令、逻辑“或”指令ORLA,Rn(A)←(A)∨(Rn)ORLA,direct(A)←(A)∨(direct)ORLA,#data(A)←(A)∨dataORLA,Ri(A)←(A)∨((Ri))ORLdirect,A(direct)←(direct)∨(A)ORLdirect,#data(direct)←(direct)∨data除前四条影响到P标志位外不影响其他PSW标志位。例:(P)=H(A)=HORLPA∨)=H(P)=H、逻辑异或指令、逻辑异或指令XRLA,Rn(A)←(A)⊕(Rn)XRLA,direct(A)←(A)⊕(direct)XRLA,#data(A)←(A)⊕dataXRLA,Ri(A)←(A)⊕((Ri))XRLdirect,A(direct)←(direct)⊕(A)XRLdirect,#data(direct)←(direct)⊕data例:设(A)=H(R)=HXRLAR⊕)=EH(A)=EH(P)=总结:“ANL”常用来屏蔽(清零)某些位欲清的位用“”去“与”欲保留的位用“”去“与”“ORL”常用来使某些位置“”欲置“”的位用“”去“或”欲保留的位用“”去“或”“XRL”常用来对某些位取反欲取反的位用“”去“异或”欲保留的位用“”去“异或”同时“XRL”还可以用来判断两数是否相等。(A)=HXRLA#H结果(A)=则相等。例(A)=××××××B×表示随机状态为或执行下述一组指令执行后A的值如何XRLA#CH将累加器A的内容D、D取反××××××ORLA#H将累加器A的内容D、D置ANLA#EH将累加器A的内容D、D清××××××××××××解:执行上述指令后(A)=××B。例:将累加器A的低位传送到P口的低位P口的高位不变。MOVRO,AANLA,#FHANLP,#FHORLP,AMOVA,R、累加器A清零指令、累加器A清零指令CLRA(A)←H只影响P标志位、累加器A取反指令、累加器A取反指令CPLA(A)←(A)不影响标志位、移位指令、移位指令)左环移指令RLAACC移入ACC不影响标志位例(A)=CH=BRLA(A)=B=DH)带进位的左环移指令RLCAACC移入CYCY移入ACC不影响标志位例(A)=CH=B(C)=RLCA(A)=B=DH)右环移指令RRAACC移入ACC例(A)=CH=BRRA(A)=B=H)带进位的右环移指令RRCAACC移入CYCY移入ACC例(A)=CH=B(C)=RRCA(A)=B=BH例:MOVA,#H(A)=HRLA(A)=HRLA(A)=HRLA(A)=HRLA(A)=HRLA(A)=H左环移相当于乘以右环移相当于除以四、位操作指令四、位操作指令针对布尔处理器共个可位寻址空间。共条。CY:位累加器程序中简称Cbit:位地址:位取反。、位传送指令、位传送指令位数据传送必须经过位累加器Cy,而不能在可寻址位之间传送。MOVCbit(CY)←(bit)MOVbitC(bit)←(CY)例:MOVCHMOVPC、位变量修改指令、位变量修改指令)清零:CLRC(Cy)←CLRbit(bit)←)置“”SETBC(Cy)←SETBbit(bit)←例:CLRCCLRHSETBP、位逻辑运算指令、位逻辑运算指令位逻辑操作有与、或、取反三种。与、或操作时以位累加器Cy作为第一操作数第二操作数为位地址操作结果在Cy中。取反可以对每个位地址内容直接进行。注:位指令中无“异或”运算。但可变换:D=E⊕B=EBEB)“与”ANLCbit(Cy)←(Cy)∧(bit)ANLCbit(Cy)←(Cy)∧(bit))“或”ORLCbit(Cy)←(Cy)∨(bit)ORLCbit(Cy)←(Cy)∨(bit))“非”CPLC(Cy)←(Cy)CPLbit(bit)←(bit)五、控制转移指令五、控制转移指令使PC不再自动增加强行改变PC的内容使程序转移到指定的入口地址继续执行以实现分枝循环、子程序调用、中断等功能。共条。、无条件转移指令、无条件转移指令长转移指令(长跳转)LJMPaddr(PC)←addr字节转移范围大~即KROM短转移指令(短跳转、绝对跳转)AJMPaddr将当前PC值的高位和add相连PC=PC~aaaaaaaaaaa即将add写入PC的第~位PC的~位不变。Addr代表的范围是~=KK的ROM分为页每页K范围分别是~FFH、H~FFFH、H~FFH…FH~FFFH、FH~FFFFHAJMP转移范围就是PC当前值所在的K字节页面内超出该寻址范围就出错。用于不太长的程序该指令为字节例:FEHAJMPKHEHK:FHK:FFEHAJMPKH(PC)=(PC)=H错误(PC)=(PC)=HK不在H~FFH页内相对转移指令SJMPrelPC←(PC),PC←(PC)rel转移范围是当前PC值-~范围内例:AHSJMPH目的地址:AHHH=HAHSJMPEHEH=-H目的地址:AHH-H=H注:编程时可用标号代替转移目的地址AJMPNEXTSJMPNEXTLJMPNEXT原地踏步指令HERE:SJMPHERE常写成:SJMP$散转指令:JMPADPTR(PC)←(A)+(DPTR)若DPTR值固定改变A的内容即可形成多个分枝。例:(A)=转到PRG(A)=转到PRG(A)=转到PRGMOVDPTR#TABELRLAJMPA

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/156

3指令系统

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利