资源描述:
《16位单片机及语音嵌入式系统 赵定远 第03章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章指令系统3.1指令系统的概述及符号约定µ’nSP™单片机指令按其功能可划分为:1)数据传送指令:包括立即数到寄存器、寄存器到寄存器、寄存器到存储器存储器到寄存器的数据传送操作;2)算术运算:包括加、减、乘运算;3)逻辑运算:包括与、或、异或、测试、移位等操作;4)转移指令:包括条件转移、无条件转移、中断返回、子程序调用等操作;5)控制指令:如开中断、关中断、FIR滤波器的数据的自由移动等操作。寻址方式:1、立即数寻址:这种寻址方式是操作数以立即数的形式出现,例如:R1=0x1234,是把16进制数0x1234赋给寄存器R1。2、存储器绝对寻址:这种寻址
2、方式是通过存储器地址来访问存储器中的数据,例如:R1=[0x2222],访问0x2222单元的数据。3、寄存器寻址:这种寻址方式是操作数在寄存器中,例如:R1=R2,是把寄存器R2中的数据赋给寄存器R1。4、寄存器间接寻址:这种寻址方式是操作数的地址由寄存器给出,例如:R1=[BP],是把由BP指向的内存单元的数据送寄存器R1。5、变址寻址:这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如:R1=[BP+0x34]。表3-1符号约定3.2数据传送指令一、立即数寻址:【影响标志】N,Z【格式】Rd=IM16//16位的立即数送入目标寄存器RdRd=
3、IM6//6位的立即数扩展成16位后送入目标寄存器Rd二、寄存器寻址:【影响标志】N,Z【格式】Rd=Rs//将源寄存器Rs的数据送给目标寄存器Rd三、直接地址寻址:【影响标志】N,Z【格式】[A6]=Rs//将源寄存器Rs中的数据送给以A6为地址的存储单元[A16]=Rs//把Rs数据存储到A16指出的存储单元Rd=[A6]//把A6指定的存储单元数据读到Rd寄存器Rd=[A16]//把A16指定的存储单元数据读到Rd寄存器四、变址寻址:【影响标志】N,Z【格式】[BP+IM6]=Rs//把Rs的值存储到基址指针BP与6位的立即/数之和指出的存储单元。Rd=
4、[BP+IM6]//把基址指针BP与6位的立即数的和指定的存储单元数据读到Rd寄存器。五、寄存器间接寻址:【影响标志】N,Z【格式】[Rd]=Rs//把Rs的数据存储到Rd的值所指的存储单元Rd中存放的是操作数的地址。[例3.1]:将R3的值保存于0x25单元R3=0x5678//把16位立即数0x5678赋给R3方法1:[0x25]=R3//将R3的值存储于0x25存储单元,直接地址寻址方法2://0x25单元的内容为0x5678R2=0x25//立即数0x25送入R2中[R2]=R3//将R3的值存储于0x25存储单元,寄存器间接寻址方法3://0x25单
5、元的内容为0x5678BP=0x20//立即数0x20送入BP中;[BP+5]=R3//将R3的值存储于0x25存储单元,变址寻址0x25、//单元的内容为0x5678表3.2数据传送指令一览表堆栈操作【格式】PUSHRx,RyTO[SP]POPRx,RyFROM[SP]【说明】Rx,Ry可以是R1~R4,BP,SP,PC中的任意两个或一个,执行后将Rx~Ry的序列寄存器压栈,或将堆栈中的数据弹入Rx~Ry序列寄存器中,压栈操作不影响标志位,出栈操作影响N,Z标志,当Rx,Ry中含有SR时,所有标志位都会改变。压栈、出栈操作的执行周期为2n+4,若出栈操作的目
6、的寄存器中含有PC时,执行周期为3n+6。其中n是压栈数据的个数。压栈和出栈的指令长度均为1字长【举例】PUSHR1,R5to[SP]//将R5,R4,R3,R2,R1压PUSHR2,R2to[SP]//将R2压栈PUSHR3to[SP]//将R3压栈POPR3from[SP]//R3出栈POPR2,R2from[SP]//R2出栈POPR1,R5from[SP]//R1,R2,R3,R4,R5出栈3.3算术运算3.3.1加法运算加法运算影响标志位:N,Z,S,C。立即数寻址(不带进位):【格式1】Rd+=IM6或Rd=Rd+IM6【操作】Rd+IM6→Rd【
7、说明】Rd的数据与6位(高位扩展成16位)立即数相加,结果送Rd;【格式2】Rd=Rs+IM16【操作】Rs+IM16→Rd【说明】Rd的数据与16位的立即数相加,结果送Rd;直接地址寻址:【格式1】Rd+=[A6]或Rd=Rd+[A6]【操作】Rd+[A6]→Rd【说明】Rd的数据与6位地址指定的存储单元中的数据相加,结果送Rd。【格式2】Rd=Rs+[A16]【操作】Rs+[A16]→Rd【说明】Rs的数据与16位地址指定的存储单元中数据相加,结果送Rd。变址寻址:【格式】Rd+=[Bp+IM6]或Rd=Rd+[BP+IM6]【操作】Rd+[Bp+IM6]
8、→Rd【说明】取基址指针BP与6位的立