数据传送类和算逻运算类-公开课件.pptVIP

  • 1
  • 0
  • 约1.33万字
  • 约 47页
  • 2019-06-23 发布于广西
  • 举报
* 内积就是点乘(乘加)。 * * 应用举例: R1=0x2F     // R1=R1 IM6 R3=[BP+0x08]   // R3=R3 [BP+IM6] R4=[0x30]    // R4=R4 [A6] BP=R2[0x2480]  // BP=R2 [A16] SR=R2      // SR=SR R2 PC=D:[BP++]   //写入PC * 应用举例: R1 |= 0x2F      // R1=R1 | IM6 R3 |= [BP+0x08]   // R3=R3 | [BP+IM6 R4 |= [0x30]    // R4=R4 | [A6] BP=R2 | [0x2480]  // BP=R2 | [A16] SR |= R2      // SR=SR | R2 PC |= D:[BP++]  //写入PC 不同,异或为1;相同,异或为0 * * 测试指令执行指定两个数的逻辑与操作,但不写入寄存器,结果影响N,Z标志。 应用举例: TEST R1, 0x27; TEST R3, [BP+0x08]; TEST R4, [0x30]; TEST BP, [0x2480]; TEST SR, R2; R1=0xF00F //R1的初值为0xF00F R1=R1 LSL 3 //R1左移3位后的值变为0x8078(0xF00F*8=0x78078) R1=0xF111 //R1的初值为0xF111 R1=R1 ASR 3 // R1移位后的值为0xFE22 另外,SPCE061A在进行移位的同时,还可进行其它运算,现以算术右移为例说明如下: 【格式】Rd += Rs ASR n {,Carry} //将Rs移位后的结果与Rd(带进位)相加,结果送Rd寄存器。  Rd - = Rs ASR n {,Carry} //将Rs移位后的结果与Rd(带进位)相减,结果送Rd寄存器。 * 比较运算 这组指令会执行X-Y的算术运算,但只影响NZSC标志,而不将结果存储。 * 应用举例 CMP R1,0x27     // 比较 R1,IM6 CMP R3,[BP+0x08]  // 比较 R3,[BP+IM6] CMP R4,[0x30]     // 比较 R4,[A6] CMP BP,[0x2480]   // 比较 BP,[A16] CMP SR,R2      // 比较SR,R * 乘法运算指令 Rd中字数据与Rs中字数据相乘,积存入MR。ss表示为两个有符号数相乘,而us则表示无符号数与有符号数相乘;缺省表示为两个有符号数相乘。Rd、Rs可为寄存器R1~R4、BP(说明:为了避免使用者误用,以及提供弹性给新版指令集作扩充之用,所以Xasm16会限制本指令的Rd、Rs不可以为SP、SR、PC)。不影响标志位。 * 应用举例: MR=R2*R1; //两个有符号数相乘 MR=R1*R2, us; // R1中是无符号数,R2中为有符号数,二者相乘 注:MR由R4、R3构成,R4是高位,R3是低位。Rd、Rs可为寄存器R1~R4、BP * n项内积运算指令 指针Rd与Rs所指存储器地址内有符号字数据之间或无符号与有符号字数据之间进行n项内积运算,结果存入MR。 不影响标志位。 * 应用举例 MR=[R2]*[R1], 8;  //两个有符号数之内积运算 MR=[R1]*[R2], us, 2; //R1中是无符号数,R2中为有符号数,二者之内积 例: FIR_MOV ON //数据自动移动的允许信号 MR=[R1]*[R2],ss,4 //4项内积运算 * 逻辑与 这组指令会执行Rd = X Y的逻辑与操作,结果存入Rd寄存器。影响N、Z标志。 应用举例: R1=0x2F     // R1=R1 IM6 R3=[BP+0x08]   // R3=R3 [BP+IM6] R4=[0x30]    // R4=R4 [A6] BP=R2[0x2480]  // BP=R2 [A16] SR=R2      // SR=SR R2 PC=D:[BP++]   //写入PC 按位与操作主要用于使操作数的某些位保留(和“1”相与),或使某些位清除(和“0”相与)。 例:假设开始时标志位N=0,Z=1,S=0,C=1 R1=0x00FF //R1初值0x00FF,Z=0,N=0 R2=0xFFFF //R2初值0xFFFF,Z=0,N=1 [0x0001]=R2 R2=0x0

文档评论(0)

1亿VIP精品文档

相关文档