资源描述:
《2.2数据传送类和算逻运算类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SunplusSPCE061A微控制器数据传送类和算逻运算类1SPCE061A的指令总共只有41种,可分为四类:数据传送类算逻运算类程序转移控制类其它控制类2指令分类3数据传送类指令立即数寻址、寄存器寻址、直接地址寻址变址寻址、寄存器间接寻址压栈出栈4立即数寻址、寄存器寻址、直接地址寻址这组指令会执行Rd=X的数据传送操作,即将源操作数X或源操作单元X中的字数据存入目标寄存器Rd。依据寻址方式的不同,X将有不同的意义。5应用举例R1=0x28 //IM6R2=0x2400 //IM16R3=[BP+0x08] //[BP+IM6
2、]R4=[0x30] //A6R5=[0x2480] //A16SR=R2 //R立即数寻址【影响标志】N,Z【格式】Rd=IM16//16位的立即数送入目标寄存器RdRd=IM6//6位的立即数扩展成16位后送入目标寄存器Rd【举例】设传送前N=0,Z=1,S=0,C=1R1=0xF001//R1的值变为0xF001,N=1,Z=0,S=0,C=1寄存器寻址【影响标志】N,Z【格式】Rd=Rs//将源寄存器Rs的数据送给目标寄存器Rd【举例】设传送前N=0,Z=1,S=0,C=1R2=0xF001//R2的值为
3、0xF001,N=1,Z=0,S=0,C=1R1=R2//R1的值变为0xF001,N=1,Z=0,S=0,C=1直接地址寻址【影响标志】N,Z【格式】[A6]=Rs//将源寄存器Rs中的数据送给以A6为地址的存储单元[A16]=Rs//把Rs数据存储到A16指出的存储单元Rd=[A6]//把A6指定的存储单元数据读到Rd寄存器Rd=[A16]//把A16指定的存储单元数据读到Rd寄存器【举例】设传送前N=1,Z=1,S=0,C=1R1=0x0011//R1的值为0x0011,N=0,Z=0,S=0,C=1[0x0010]=R1//[
4、0x0010]单元的值变为0x00118变址寻址、寄存器间接寻址这组指令会执行X=Rd的数据传送操作,即将寄存器Rd的内容存入目标操作单元X。依据寻址方式的不同,X将有不同的意义;9[BP+0x08]=R3//写入[BP+IM6][0x30]=R4//写入[A6][0x2480]=R5//写入[A16][R2++]=R1//R1的值存储于R2,且存储单元R2=R2+1应用举例10压栈PUSHRx,Ryto[Rs]PUSHRxto[Rs]将n(n=1~7,SIZE)个序列寄存器Rx~Ry(Rx~Ry≠SP)中的字数据压入Rs指出地址偏移量初值
5、的存储器中,且总是将序号高的寄存器内容先压入11应用举例12出栈POPRx,Ryfrom[Rs]POPRxfrom[Rs]将一组由Rs指出地址偏移量初值的存储器中的字数据拷贝到n(n=1~7,SIZE)个序列寄存器Rx~Ry(Rx~Ry≠SP)中,且总是先拷贝数据到序号低的寄存器内。弹出指令亦可用于从子程序返回或从中断服务子程序返回时用,即它等效于指令RETF或RETI。(当Rx~Ry=SR~PC时,POP指令的操等效于指令RETF或RETI)13应用举例14算逻运算类指令顾名思义这类指令就使用来完成一些算术逻辑运算的,基本是执行Rd=X#Y的
6、算术逻辑运算。依据寻址方式的不同,X、Y将有不同的意义。15加法运算这组指令会执行Rd=X+Y的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行不带进位的加法运算,结果存入Rd寄存器。16应用举例R1+=0x28 //IM6R2=R1+0x2400 //IM16R3+=[BP+0x08] //[BP+IM6]R4+=[0x30] //[A6]BP=R4+[0x2480] //[A16]SR+=R2 //R17带进位的加法运算这组指令会执行Rd=X+Y+C的算术运算,即将源操作数X、Y或源操作单元X、Y中的
7、字数据进行带进位的加法运算,结果存入Rd寄存器。18应用举例R1+=0x28,Carry //R1=R1+IM6+进位CR2=R1+0x2400,Carry //R2=R1+IM16+进位CR3+=[BP+0x08],Carry //R3=R3+[BP+IM6]+进位CR4+=[0x30]//R4=R4+[A6]+进位CBP=R4+[0x2480],Carry//BP=R4+[A16]+进位CSR+=R2,Carry //SR=SR+R2+进位CPC+=D:[BP++],Carry //写入PC19减法运算这组指令会执行Rd
8、=X-Y的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行不带借位的减法运算,结果存入Rd寄存器。20应用举例R1-=0x28 /