资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四讲指令系统(zh ln x tn)主要内容:1.寻址方式2.指令系统(zh ln x tn)3.程序设计第一页,共八十九页。指令(zhlng)地址寻址相对(xingdu)寻址:将一条指令的8 位立即数与下一条指令的起始地址相加,结果赋给程序计数器(PC),然后转向相加结果指向的地址立即数是带符号位的补码(128 to +127),相对转移值是从下一条指令的起始地址开始,范围在128 与+127之间执行“BR $addr16”指令或条件转移指令第二页,共八十九页。立即寻址:将指令中的立即数赋给程序(chngx)计数器(PC),然后转向该地址如“CALL !addr16”、“BR !addr16”或“CALLF !addr11” 指令CALL !addr16 和BR !addr16指令的转移地址范围是所有内存空间。CALLF !addr11指令的转移地址范围在0800H与0FFFH之间CALL !addr16, BR !addr16 指令(zhlng)指令(zhlng)地址寻址第三页,共八十九页。CALLF !addr11 指令(zhlng)指令(zhlng)地址寻址第四页,共八十九页。表间接寻址:通过指令码低5位的立即数(从第1位到第5位),访问特定存储单元的表的内容(转移目的地址),并将表的内容赋给程序计数器(PC),然后转向该地址在执行CALLT addr5指令时,进行表间接寻址。执行该指令时,根据存储在内存(ni cn)表中40H至7FH之间的地址,能够跳转到整个内存空间的任意位置指令(zhlng)地址寻址第五页,共八十九页。寄存器寻址:将一条指令的寄存器对(AX)的内容赋值给程序计数器(PC),然后转向(zhunxing)该地址“BR AX”指令指令(zhlng)地址寻址第六页,共八十九页。指令(zhlng)执行期间寄存器寻址和存储器寻址所进行的操作隐含寻址:规定某些寄存器地址(dzh)是作为通用寄存器中的累加器(A 和AX)使用操作数地址(dzh)寻址第七页,共八十九页。寄存器寻址:将通用寄存器作为操作数进行访问,并由寄存器组选择标志(RBS0 和RBS1)和指令中的寄存器标识码(Rn 和RPn)确定要访问的通用寄存器,如果使用(shyng)8位寄存器,则指令码中有3位用来表示一个8位寄存器r 和rp可用绝对名称(R0 到R7 以及RP0 到RP3)和功能(gngnng)名称(X, A, C, B, E, D, L, H, AX, BC, DE以及HL)来描述操作数格式(g shi)MOV A, C; 选择C寄存器作为r操作数地址寻址第八页,共八十九页。直接寻址:根据指令(zhlng)中的立即数直接寻址操作数格式(g shi)MOV A, !FE00H; 将!addr16设置(shzh)为FE00H操作数地址寻址第九页,共八十九页。短直接寻址:指令中的8位立即(lj)数对固定区域中的内存进行直接寻址,寻址范围是FE20H到FF1FH总共256字节的内存区域内部高速RAM和特殊功能寄存器(SFR) FF00H到FF1FH的区域主要存放程序中经常访问的端口、计数器的比较寄存器、计数器的接收寄存器如果8位立即数是在20H 和FFH之间,则将一个有效地址的第8位设置为0;如果8位立即数是在00H与1FH之间,则一个有效地址的第8位设置为1操作数格式(g shi)MOV FE30H, #50H; saddr的值为FE30H,立即(lj)数为50H操作数地址寻址第十页,共八十九页。特殊(tsh)功能寄存器(SFR)寻址:指令中的8位立即数对内存中的特殊功能寄存器(SFR)区域进行寻址,寻址区间为FF00H到FFCFH以及FFE0H到FFFFH区间共240字节操作数格式(g shi)MOV PM0, A; 选择(xunz)PM0作为sfr操作数地址寻址第十一页,共八十九页。寄存器间接寻址:对操作数寄存器对的内容进行寻址。由寄存器组选择标志(RBS0和RBS1)和指令码中的寄存器对说明,定义(dngy)需要访问的寄存器对【操作数格式(g shi)】MOV A, DE; 选择(xunz)DE寄存器对作为操作数操作数地址寻址第十二页,共八十九页。基址寻址:将8位立即数加到HL寄存器对中, HL寄存器对作为基地址寄存器,根据(gnj)相加结果寻址。需要访问的HL寄存器对属于由寄存器组选择标志(RBS0和RBS1)确定的寄存器组。通过将偏移量扩展为16位正数,来完成加法操作,进位忽略。该寻址方式可对整个内存空间进行【操作数格式(g shi)】MOV A, HL+10H; byte的值为10H操作数地址(dzh)寻址第十三页,共八十九页。基址变址寻址:将B或C寄存器的内容加到HL寄存器中,HL寄存器作为基地址寄存器,并根据相加结果寻址。需要(xyo)访问的HL、B和C寄存器属于由寄存器组选择标志(RBS0和RBS1)确定的寄存器。通过将B或C寄存器扩展为一个16位的正数来完成加法运算,进位忽略。该寻址方式可对整个内存空间进行操作数格式(g shi)MOV A, HL+B操作数地址(dzh)寻址第十四页,共八十九页。堆栈寻址:根据堆栈指针(zhzhn)(SP)的内容对堆栈区域进行间接寻址。当执行PUSH, POP, 子程序调用和RETURN指令时,或者根据中断请求产生对寄存器进行设置或复位时,将自动采用这种寻址方式。该方式仅对内部高速RAM区域进行寻址操作数地址(dzh)寻址第十五页,共八十九页。 指令系统按照功能分 数据传送类指令(zhlng) 算术运算类指令 逻辑运算类指令 循环操作类指令 无条件转移类指令 条件转移类指令 位操作类指令 调用及返回类指令 CPU 控制类指令指令系统(zh ln x tn)第十六页,共八十九页。 在每种指令的“操作数”栏列出操作数。如果有两种或两种以上的标识方法,可选其中之一 大写字母和符号#、!、$ 、 是关键字,必须按其原样书写 #: 立即数标识 !: 绝对地址标识 $: 相对地址标识 :间接地址标识 立即数用来描述一个数值型数据或标志。当使用标志时,注意必须加上符号#, !, $, 和 。 操作数寄存器标识符r 和rp、功能(gngnng)名称(X, A, C, etc.)或绝对名称(R0, R1,R2 等)都可用于标识操作数标识(biozh)符和标识(biozh)方法第十七页,共八十九页。操作数标识(biozh)符和标识(biozh)方法第十八页,共八十九页。数据传送类指令MOV,MOVW,XCH,XCHW,PUSH,POPMOV:8位数据操作(cozu)指令; MOVW:16位数据操作指令指令操作不影响标志位数据交换指令(zhlng)XCH:8位数据操作指令, XCHW:16位数据操作指令指令操作不影响标志位堆栈操作指令(zhlng)PUSH,POP:16位数据操作指令指令系统第十九页,共八十九页。算术运算(yn sun)指令ADD,ADDC,ADDW,SUB,SUBC,SUBW,CMP,CMPW,MULU,DIVUW,INC,INCW,DEC,DECW,ADJBA,ADJBS 乘法指令(zhlng):MULU:将A 寄存器的内容与源操作数进行无符号乘法运算,结果存于AX 寄存器中 除法指令:DIVUW:目标操作数的内容除以AX寄存器的内容,商和余数分别存放在AX寄存器和目标操作数中。除法运算是将AX寄存器内容和目标操作数内容看成无符号数。但当目标操作数为0时,则将X寄存器的内容存于C寄存器中,并将AX的内容设置为0FFFFH指令系统(zh ln x tn)第二十页,共八十九页。比较(bjio)指令 CMP:8位操作,修改Z、AC和CY标志位 CMPW:16位操作,修改Z和CY标志增1/减1指令(zhlng) INC、 DEC :8位操作。目标操作数增加1/减1 INCW、 DECW :目标操作数加1 /减1指令系统(zh ln x tn)第二十一页,共八十九页。BCD码 调整指令 ADJBA:将A寄存器、CY标志以及AC标志的内容按十进制进行调整。仅在进行BCD数据相加,且相加结果(ji gu)在A寄存器中时,该指令有效,影响Z标志指令系统(zh ln x tn)第二十二页,共八十九页。 ADJBS:将A 寄存器、CY 标志以及AC 标志的内容按十进制进行(jnxng)调整。仅在进行(jnxng)BCD数据相减,且相减结果存在A 寄存器中时,有意义。如果调整结果的A 寄存器内容为0,则将Z 标志设置为1,否则将Z 标志清零逻辑运算指令(zhlng)指令为8 位操作指令,AND,OR,XOR指令系统(zh ln x tn)第二十三页,共八十九页。移位操作(cozu)指令指令是8 位操作指令,ROR,ROL,RORC,ROLC,ROR4和ROL4ROR ROLRORC ROLC指令系统(zh ln x tn)第二十四页,共八十九页。ROL4ROR4:A寄存器的低4位和目标(mbio)操作数的两个数位(4位数据)向右循环移位。A寄存器的高4位保持不变ROR4ROR4HL第二十五页,共八十九页。无条件转移指令BR:无条件转移指令。将目标(mbio)地址操作数传送到PC 中,并转向该地址BR AX ;将AX寄存器的内容作为转移地址条件转移(zhuny)指令条件转移指令包括:BC,BNC,BZ,BNZ,BT,BF,BTCLR,DBNZBC:当CY = 1时,程序转移(zhuny)到操作数所规定的地址处; BNC:当CY = 0时,程序转移到操作数所规定的地址处BZ:当Z = 1时,程序转移到操作数所规定的地址处;BNZ:当Z = 0时,程序转移到操作数所规定的地址处指令系统第二十六页,共八十九页。 BT:如果第一操作数(位)的内容(nirng)为1,则程序转移到第二操作数($addr16)所规定的地址处 BF:如果第一操作数(位)的内容为零,则程序转移到第二操作数($addr16)所规定的地址处 BTCLR:如果第一操作数(位)的内容为1,则将它们清零,并转移到第二操作数($addr16)所规定的地址处。如果第一操作数(位)是PSW.bit,则将相应标志位清零 DBNZ:第一操作数所规定的目标操作数减1,相减结果存于目标操作数中。如果相减结果不等于0,则程序转移到第二操作数($addr16)所指的地址处。如果相减结果等于0,直接执行后续指令指令系统(zh ln x tn)第二十七页,共八十九页。位操作指令(zhlng)位操作指令包括:MOV1,AND1,OR1,XOR1,SET1,CLR1,NOT1MOV1:将源操作数的位数据传送给目标操作数AND1:CY标志和源操作数进行位逻辑与运算,结果存于CY标志中OR1: CY标志和源操作数进行位逻辑或运算,结果存于CY标志中XOR1:CY标志和源操作数进行位逻辑异或运算,结果存于CY标志中SET1:将目标操作数设置为1CLR1:将目标操作数清零NOT1:CY标志的内容取反指令系统(zh ln x tn)第二十八页,共八十九页。示例MOV1 P3.4, CY ;将CY的内容传送到端口3的第4位AND1 CY, FE7FH.3 ;FE7FH的第3位与CY进行逻辑与OR1 CY, P2.5 ;端口2的第5位与CY进行逻辑或XOR1 CY, A.7 ;A寄存器的第7位与CY进行异或SET1 FE55H.1 ;将FE55H的第1位设置(shzh)为1CLR1 P3.7 ;将端口3的第7位清零NOT1 CY ;CY标志的内容取反指令系统(zh ln x tn)第二十九页,共八十九页。调用和返回指令包括(boku):CALL,CALLF,CALLT,BRK,RET,RETI,TETBCALL:子程序调用指令,采用16位绝对寻址或寄存器间接寻址 CALLF:程序调用指令,调用的地址范围为0800H 至0FFFHCALLT:查找调用表,转到调用表字数据所指示的地址(地址的高8位固定为00000000B,随后5位由addr5规定)BRK:软件中断指令。将PSW和下一
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号