33
1 Sunplus SPCE061A 微微微微 数数 数数数数数数数数

Sunplus SPCE061A 微控制器

  • Upload
    hieu

  • View
    86

  • Download
    2

Embed Size (px)

DESCRIPTION

Sunplus SPCE061A 微控制器. 数据传送类和算逻运算类. 指令分类. SPCE061A 的指令总共只有41种,可分为四类: 数据传送类 算逻运算类 程序转移控制类 其它控制类. 数据传送类指令. 立即数寻址 、寄存器寻址 、直接地址寻址 变址寻址、寄存器间接寻址 压栈 出栈. 立即数寻址 、寄存器寻址 、 直接地址寻址. 这组指令会执行 Rd = X 的数据传送操作,即将源操作数 X 或源操作单元 X 中的字数据存入目标寄存器 Rd。 依据寻址方式的不同, X 将有不同的意义 。. 应用举例. - PowerPoint PPT Presentation

Citation preview

Page 1: Sunplus SPCE061A  微控制器

1

Sunplus SPCE061A 微控制器

数据传送类和算逻运算类

Page 2: Sunplus SPCE061A  微控制器

2

指令分类 SPCE061A 的指令总共只有 41 种,

可分为四类: 数据传送类 算逻运算类 程序转移控制类 其它控制类

Page 3: Sunplus SPCE061A  微控制器

3

数据传送类指令数据传送类指令立即数寻址 、寄存器寻址 、直接地址寻址变址寻址、寄存器间接寻址压栈出栈

Page 4: Sunplus SPCE061A  微控制器

4

立即数寻址 、寄存器寻址 、立即数寻址 、寄存器寻址 、直接地址寻址直接地址寻址

这组指令会执行 Rd = X 的数据传送操作,即将源操作数 X 或源操作单元 X 中的字数据存入目标寄存器 Rd 。依据寻址方式的不同, X 将有不同的意义。

Page 5: Sunplus SPCE061A  微控制器

5

应用举例应用举例 R1=0x28 //IM6

R2=0x2400 //IM16R3=[BP + 0x08] //[BP+IM6]R4=[0x30] //A6R5=[0x2480] //A16SR=R2 //R

Page 6: Sunplus SPCE061A  微控制器

6

变址寻址、寄存器间接寻址变址寻址、寄存器间接寻址

这组指令会执行 X = Rd 的数据传送操作,即将寄存器 Rd 的内容存入目标操作单元X 。依据寻址方式的不同 , X 将有不同的意义;

Page 7: Sunplus SPCE061A  微控制器

7

[BP+0x08]=R3 // 写入 [BP+IM6][0x30]=R4 // 写入 [A6][0x2480]=R5 // 写入 [A16][R2++] = R1 //R1 的值存储于 0x25存储单元 R2=R2 +1

应用举例应用举例

Page 8: Sunplus SPCE061A  微控制器

8

压栈压栈 PUSH Rx, Ry to [Rs] PUSH Rx to [Rs] 将 n ( n=1 ~ 7 , SIZE )个序列寄存器

Rx ~ Ry ( Rx ~ Ry≠SP )中的字数据压入 Rs 指出地址偏移量初值的存储器中 , 且总是将序号高的寄存器内容先压入

Page 9: Sunplus SPCE061A  微控制器

9

应用举例应用举例

Page 10: Sunplus SPCE061A  微控制器

10

出栈出栈 POP Rx, Ry from [Rs] POP Rx from [Rs] 将一组由 Rs 指出地址偏移量初值的存储器中的

字数据拷贝到 n ( n = 1 ~ 7 , SIZE )个序列寄存器 Rx ~ Ry ( Rx ~ Ry≠SP )中,且总是先拷贝数据到序号低的寄存器内。弹出指令亦可用于从子程序返回或从中断服务子程序返回时用,即它等效于指令 RETF 或 RETI 。(当 Rx ~ Ry = SR ~ PC 时, POP 指令的操等效于指令 RETF 或RETI )

Page 11: Sunplus SPCE061A  微控制器

11

应用举例应用举例

Page 12: Sunplus SPCE061A  微控制器

12

算逻运算类指令算逻运算类指令

顾名思义这类指令就使用来完成一些算术逻辑运算的,基本是执行 Rd = X # Y的算术逻辑运算。依据寻址方式的不同, X 、 Y 将有不同的意义。

Page 13: Sunplus SPCE061A  微控制器

13

加法运算加法运算

这组指令会执行 Rd = X+Y 的算术运算,即将源操作数 X 、 Y 或源操作单元X 、 Y 中的字数据进行不带进位的加法运算,结果存入 Rd 寄存器。

Page 14: Sunplus SPCE061A  微控制器

14

应用举例应用举例 R1+=0x28 //IM6

R2=R1+0x2400 //IM16R3+=[BP + 0x08] //[BP+IM6]R4+=[0x30] //[A6]BP=R4+[0x2480] //[A16]SR+=R2 //R

Page 15: Sunplus SPCE061A  微控制器

15

带进位的加法运算带进位的加法运算

这组指令会执行 Rd = X+Y+C 的算术运算,即将源操作数 X 、 Y 或源操作单元X 、 Y 中的字数据进行带进位的加法运算,结果存入 Rd 寄存器。

Page 16: Sunplus SPCE061A  微控制器

16

应用举例应用举例

R1=0x28 , Carry // R1 = R1 +IM6 + 进位 CR2=R1+0x2400 , Carry // R2 = R1 +IM16 + 进位 CR3+=[BP + 0x08] , Carry // R3 = R3 +[BP+IM6] + 进位 CR4+=[0x30],Carry // R4 = R4 +[A6] + 进位 CBP=R4+[0x2480] , Carry // BP = R4 +[A16] + 进位 CSR+=R2 , Carry // SR=SR+R2+ 进位 CPC+=D:[BP++] , Carry // 写入 PC ,

Page 17: Sunplus SPCE061A  微控制器

17

减法运算减法运算 这组指令会执行 Rd = X - Y 的算术运算,

即将源操作数 X 、 Y 或源操作单元 X 、 Y中的字数据进行不带借位的减法运算,结果存入 Rd 寄存器。

Page 18: Sunplus SPCE061A  微控制器

18

应用举例应用举例

R1-=0x28 // R1 = R1 - IM6R2=R1-0x2400 // R2 = R1 - IM16R3-=[BP + 0x08] // R3 = R1 - [BP+IM6]R4-=[0x30] // R4 = R4 - [A6]BP=R4-[0x2480] // BP = R4 - [A16]SR-=R2 // SR = SR - R2PC-=D:[R5++] // 写入 PC ,

Page 19: Sunplus SPCE061A  微控制器

19

不带借位的减法运算不带借位的减法运算

这组指令会执行 Rd = X - Y - C = X + ( ~ Y) + C 的算术运算,即将源操作数X 、 Y 或源操作单元 X 、 Y 中的字数据进行带借位的减法运算,结果存入 Rd 寄存器。

Page 20: Sunplus SPCE061A  微控制器

20

应用举例应用举例

R1-=0x20 , Carry // R1 = R1 -IM6 - 进位 CR2-=R1+0x2400, Carry // R2 = R1 -IM16 - 进位 CR3-=[BP + 0x08] , Carry // R3 = R3 -[BP+IM6] - 进位 CR4-=[0x30],Carry // R4 = R4 -[A6] - 进位 CBP=R4-[0x2480], Carry // BP = R4 -[A16] - 进位 CSR-=R2 , Carry // SR = SR - R2 - 进位 CPC-=D:[BP++] , Carry // 写入 PC ,

Page 21: Sunplus SPCE061A  微控制器

21

取补运算取补运算

这组指令会执行 Rd = -X = ( ~ X) + 1 的算术运算,结果存入 Rd 寄存器。

Page 22: Sunplus SPCE061A  微控制器

22

应用举例应用举例 R1=-0x27 // R1 = R1 -IM6

R3=-[BP+0x08] // R3 = R3 -[BP+IM6]R4=-[0x30] // R4 = R4 -[A6]BP=-[0x2480] // BP = BP - [A16]SR=-R2 // SR = SR - R2PC=-D:[R5++] // 写入 PC

Page 23: Sunplus SPCE061A  微控制器

23

比较运算比较运算

这组指令会执行 X-Y 的算术运算,但只影响 NZSC 标志,而不将结果存储。

Page 24: Sunplus SPCE061A  微控制器

24

应用举例应用举例

CMP R1 , 0x27 // 比较 R1 , IM6CMP R3 , [BP+0x08] // 比较 R3 ,[BP+IM6]CMP R4 , [0x30] // 比较 R4 , [A6]CMP BP , [0x2480] // 比较 BP , [A16]CMP SR , R2 // 比较 SR , R

Page 25: Sunplus SPCE061A  微控制器

25

乘法运算指令乘法运算指令 Rd 中字数据与 Rs 中字数据相乘,积存入

MR 。 ss 表示为两个有符号数相乘,而 us则表示无符号数与有符号数相乘;缺省表示为两个有符号数相乘。 Rd 、 Rs 可为寄存器 R1 ~ R4 、 BP (说明:为了避免使用者误用,以及提供弹性给新版指令集作扩充之用,所以 Xasm16 会限制本指令的Rd 、 Rs 不可以为 SP 、 SR 、 PC )。

Page 26: Sunplus SPCE061A  微控制器

26

应用举例应用举例 ::

MR=R2*R1; // 两个有符号数相乘

MR=R1*R2, us; // R1 中是无符号数, R2中为有符号数,二者相乘

Page 27: Sunplus SPCE061A  微控制器

27

nn 项内积运算指令项内积运算指令

指针 Rd 与 Rs 所指存储器地址内有符号字数据之间或无符号与有符号字数据之间进行n 项内积运算,结果存入 MR 。

Page 28: Sunplus SPCE061A  微控制器

28

应用举例应用举例

MR=[R2]*[R1], 8; // 两个有符号数之内积运算

MR=[R1]*[R2], us, 2; //R1 中是无符号数,R2 中为有符号数,二者之内积

Page 29: Sunplus SPCE061A  微控制器

29

逻辑与逻辑与

这组指令会执行 Rd = X & Y 的逻辑与操作,结果存入 Rd 寄存器。

Page 30: Sunplus SPCE061A  微控制器

30

逻辑或逻辑或

这组指令会执行 Rd = X | Y 的逻辑或操作,结果存入 Rd 寄存器。

Page 31: Sunplus SPCE061A  微控制器

31

逻辑异或逻辑异或

这组指令会执行 Rd = X ^ Y 的逻辑异或操作,结果存入 Rd 寄存器。

Page 32: Sunplus SPCE061A  微控制器

32

测试指令测试指令

这组指令会执行 X&Y 的逻辑操作,但只影响 NZ 标志,而不将结果存储。

Page 33: Sunplus SPCE061A  微控制器

33

移位操作移位操作 SPCE061A 的移位运算包括逻辑左移、逻

辑右移、循环左移、循环右移、算术右移等操作,移位的同时还可进行其他运算,如加、减、比较、取负、与、或、异或、测试等。指令长度 1 ,指令周期 3/8, 影响 N,Z 标志。由于硬件原因对于移位操作,每条指令可以移 1 ~ 4 位。 ( 移位操作将在 2.3 中具体说明 )