《Sunplus SPCE061A微控制器数据传送类和算逻运算类.ppt》由会员分享,可在线阅读,更多相关《Sunplus SPCE061A微控制器数据传送类和算逻运算类.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Sunplus SPCE061A 微控制器微控制器数据传送类和算逻运算类 1指令分类 SPCE061A 的指令总共只有41种,可分为四类:数据传送类 算逻运算类 程序转移控制类 其它控制类2数据传送类指令数据传送类指令立即数寻址、寄存器寻址、直接地址寻址变址寻址、寄存器间接寻址压栈出栈3立即数寻址立即数寻址 、寄存器寻址、寄存器寻址 、直接地址寻址直接地址寻址 这组指令会执行Rd=X的数据传送操作,即将源操作数X或源操作单元X中的字数据存入目标寄存器Rd。依据寻址方式的不同,X将有不同的意义。4应用举例应用举例 R1=0 x28 /IM6 R2=0 x2400 /IM16R3=BP+0 x08
2、 /BP+IM6R4=0 x30 /A6R5=0 x2480 /A16SR=R2 /R5变址寻址、寄存器间接寻址变址寻址、寄存器间接寻址 这组指令会执行X=Rd的数据传送操作,即将寄存器Rd的内容存入目标操作单元X。依据寻址方式的不同,X将有不同的意义;6 BP+0 x08=R3 /写入BP+IM60 x30=R4 /写入A60 x2480=R5 /写入A16R2+=R1 /R1的值存储于0 x25存储单元 R2=R2+1 应用举例应用举例7压栈压栈 PUSH Rx,Ry to Rs PUSH Rx to Rs 将n(n=17,SIZE)个序列寄存器RxRy(RxRySP)中的字数据压入Rs指
3、出地址偏移量初值的存储器中,且总是将序号高的寄存器内容先压入 8应用举例应用举例9出栈出栈 POP Rx,Ry from Rs POP Rx from Rs 将一组由Rs指出地址偏移量初值的存储器中的字数据拷贝到n(n=17,SIZE)个序列寄存器RxRy(RxRySP)中,且总是先拷贝数据到序号低的寄存器内。弹出指令亦可用于从子程序返回或从中断服务子程序返回时用,即它等效于指令RETF或RETI。(当RxRy=SRPC时,POP指令的操等效于指令RETF或RETI)10应用举例应用举例11算逻运算类指令算逻运算类指令顾名思义这类指令就使用来完成一些算术逻辑运算的,基本是执行Rd=X#Y的算术
4、逻辑运算。依据寻址方式的不同,X、Y将有不同的意义。12加法运算加法运算这组指令会执行Rd=X+Y的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行不带进位的加法运算,结果存入Rd寄存器。13应用举例应用举例 R1+=0 x28/IM6R2=R1+0 x2400 /IM16R3+=BP+0 x08/BP+IM6R4+=0 x30 /A6BP=R4+0 x2480 /A16SR+=R2 /R14带进位的加法运算带进位的加法运算 这组指令会执行Rd=X+Y+C的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行带进位的加法运算,结果存入Rd寄存器。15应用举例应用举例 R1=
5、0 x28,Carry /R1=R1+IM6+进位CR2=R1+0 x2400,Carry /R2=R1+IM16+进位CR3+=BP+0 x08,Carry/R3=R3+BP+IM6+进位CR4+=0 x30,Carry /R4=R4+A6+进位CBP=R4+0 x2480,Carry /BP=R4+A16+进位CSR+=R2,Carry/SR=SR+R2+进位CPC+=D:BP+,Carry /写入PC,16减法运算减法运算 这组指令会执行Rd=X-Y的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行不带借位的减法运算,结果存入Rd寄存器。17应用举例应用举例 R1-=0 x2
6、8 /R1=R1-IM6R2=R1-0 x2400/R2=R1-IM16R3-=BP+0 x08/R3=R1-BP+IM6R4-=0 x30 /R4=R4-A6BP=R4-0 x2480/BP=R4-A16SR-=R2 /SR=SR-R2PC-=D:R5+/写入PC,18不带借位的减法运算不带借位的减法运算 这组指令会执行Rd=X-Y-C=X+(Y)+C的算术运算,即将源操作数X、Y或源操作单元X、Y中的字数据进行带借位的减法运算,结果存入Rd寄存器。19应用举例应用举例 R1-=0 x20,Carry/R1=R1-IM6-进位CR2-=R1+0 x2400,Carry/R2=R1-IM16-
7、进位CR3-=BP+0 x08,Carry /R3=R3-BP+IM6-进位CR4-=0 x30,Carry /R4=R4-A6-进位CBP=R4-0 x2480,Carry /BP=R4-A16-进位CSR-=R2,Carry /SR=SR-R2-进位CPC-=D:BP+,Carry /写入PC,20取补运算取补运算 这组指令会执行Rd=-X=(X)+1的算术运算,结果存入Rd寄存器。21应用举例应用举例 R1=-0 x27/R1=R1-IM6R3=-BP+0 x08 /R3=R3-BP+IM6R4=-0 x30 /R4=R4-A6BP=-0 x2480/BP=BP-A16SR=-R2/SR
8、=SR-R2PC=-D:R5+/写入PC22比较运算比较运算 这组指令会执行X-Y的算术运算,但只影响NZSC标志,而不将结果存储。23应用举例应用举例 CMP R1,0 x27 /比较 R1,IM6CMP R3,BP+0 x08 /比较 R3,BP+IM6CMP R4,0 x30 /比较 R4,A6CMP BP,0 x2480/比较 BP,A16CMP SR,R2 /比较SR,R24乘法运算指令乘法运算指令 Rd中字数据与Rs中字数据相乘,积存入MR。ss表示为两个有符号数相乘,而us则表示无符号数与有符号数相乘;缺省表示为两个有符号数相乘。Rd、Rs可为寄存器R1R4、BP(说明:为了避免
9、使用者误用,以及提供弹性给新版指令集作扩充之用,所以Xasm16会限制本指令的Rd、Rs不可以为SP、SR、PC)。25应用举例应用举例:MR=R2*R1;/两个有符号数相乘 MR=R1*R2,us;/R1中是无符号数,R2中为有符号数,二者相乘26n n项内积运算指令项内积运算指令 指针Rd与Rs所指存储器地址内有符号字数据之间或无符号与有符号字数据之间进行n项内积运算,结果存入MR。27应用举例应用举例 MR=R2*R1,8;/两个有符号数之内积运算 MR=R1*R2,us,2;/R1中是无符号数,R2中为有符号数,二者之内积28逻辑与逻辑与 这组指令会执行Rd=X&Y的逻辑与操作,结果存入Rd寄存器。29逻辑或逻辑或 这组指令会执行Rd=X|Y的逻辑或操作,结果存入Rd寄存器。30逻辑异或逻辑异或 这组指令会执行Rd=X Y的逻辑异或操作,结果存入Rd寄存器。31测试指令测试指令这组指令会执行X&Y的逻辑操作,但只影响NZ标志,而不将结果存储。32移位操作移位操作 SPCE061A的移位运算包括逻辑左移、逻辑右移、循环左移、循环右移、算术右移等操作,移位的同时还可进行其他运算,如加、减、比较、取负、与、或、异或、测试等。指令长度1,指令周期3/8,影响N,Z标志。由于硬件原因对于移位操作,每条指令可以移14位。(移位操作将在2.3中具体说明)33
限制150内