1、第三章 微控制器 寻址方式与指令系统3.1 寻址方式寻址方式3.2 SPCE061A 指令分类指令分类符号约定符号约定Rd 目的寄存器或存 储 器 任 选项Rs 源 寄存器或存 储 器 NZSC SR的 标 志位IM6、IM16 6位、 16位立即数 D 非零 页 数据段 寻 址A6、 A16 6位、 16位存 储 器地址 ss、 us 有 符号数与无符号数之 间 、无符号数与有符号数之 间 的运算关系RxRy 序列寄存器, x、 y为 17 nn 寄存器移位位数MR R4、 R3组 成的 32位 结 果寄存器 n 内 积 运算 项 数+、 -、 *、 加、减、乘、求 补 FIR 有限冲 击
2、响 应 算法&、 |、 逻辑 与、或、异或 / 注 释 符+、 - 指 针 增量、减量 # 算 术 或 逻辑 操作符 寄存器 间 接 寻 址 () 寄存器或存 储 器 单 元的数据ID号号 符号符号 功能名称功能名称0( 000) SP 堆堆 栈栈 指指 针计针计 数数器器1( 001) R1 通用寄存器通用寄存器2( 010) R2 通用寄存器通用寄存器3( 011) R3 通用寄存器通用寄存器4( 100) R4 通用寄存器通用寄存器5( 101) BP(R5) 基址指基址指 针针 寄存器寄存器6( 110) SR(R6) 程序状程序状 态态 寄存器寄存器7( 111) PC(R7) 程序
3、指程序指 针计针计 数器数器指令的格式指令的格式指令由操作码字段和操作数字段组成。指令由操作码字段和操作数字段组成。操作码字段指示出操作码字段指示出 CPU所要执行的操作,操所要执行的操作,操作作数字段则指出指令执行操作过程中所需要的数字段则指出指令执行操作过程中所需要的操操作数。作数。 如加法指令中的加数和被加数。如加法指令中的加数和被加数。3.1 寻址方式寻址方式为什么要设置不同的为什么要设置不同的 寻址方式寻址方式?例、将例、将 1-100存储单元的内容求和,结果放在存储单元的内容求和,结果放在 102单元中。单元中。R1=0R2=0Sum_Loop:R2+=+ R1 / ( R1) +
4、1 =R1 ,/ ( R2) +( R1) =R2CMP R1, 100JNA Sum_Loop / 不大于转移不大于转移102=R2例、将例、将 1-100存储单元的内容求和,结果放在存储单元的内容求和,结果放在 102单元中。单元中。R1=0R1+=0R1+=1R1+=2R1+=3R1+=4102=R1寻址方式寻址方式一、立即数寻址一、立即数寻址二、寄存器寻址二、寄存器寻址三、直接寻址三、直接寻址1、 6位地址直接寻址位地址直接寻址2、 16位地址直接寻址位地址直接寻址3、 22位地址直接寻址位地址直接寻址四、寄存器间接寻址四、寄存器间接寻址1、寄存器间接寻址、寄存器间接寻址2、寄存器前置
5、增量间接寻址、寄存器前置增量间接寻址3、寄存器后置增量间接寻址、寄存器后置增量间接寻址4、寄存器后置减量间接寻址、寄存器后置减量间接寻址5、寄存器自动增减量间接寻址、寄存器自动增减量间接寻址五、变址寻址五、变址寻址六、六、 PC相对寻址相对寻址R1=0X25 /6位立即数位立即数R1=R1+0X2400 / 16位立即数位立即数R1=0X25R2=R1+0X24001、 R1+=0X30 /零页零页 6位位 直接地址直接地址2、 R2=R1+0X2400 / 16位位 直接地址直接地址3、 22位直接地址主要用于子程序调位直接地址主要用于子程序调用。用。1、 R1+=R5 2、 R2=D:+R
6、3 /(R3)+1=R3,/(R3)=R2。3、 R2=D:R3 + /(R3)=R2,/(R3)+1=R3。4、 R2=D:R3 - - /(R3)=R2,/(R3)-1=R3。5、 主要用于堆栈操作主要用于堆栈操作R1=BP+IM6 /(BP)+IM6)=R1用于转移指令,(用于转移指令,( PC) IM6; IM6=633.2 指令分类指令分类 数据传送类数据传送类 算术运算类算术运算类 逻辑操作类逻辑操作类 控制转移类及设置类控制转移类及设置类1、装载数据、装载数据Rd=源操作源操作2、存储数据、存储数据RAM地址地址 =Rs3、 堆栈操作堆栈操作1、加法运算、加法运算2、减法运算、减
7、法运算Rd=Rx源操作数源操作数, Carry3、 乘法运算乘法运算4、求补、求补Rd= -源操作数源操作数5、比较、比较CMP Rx, 源操作数源操作数1. 逻辑与逻辑与2. 逻辑或逻辑或3. 逻辑异或逻辑异或4. 测试测试5. 移位移位6. 循环循环1. 软中断软中断2. 程序转移程序转移3. 子调用子调用4. 功能设置功能设置一、一、 数据传送类指令数据传送类指令q 数据装载类Rd=源操作 /影响 N、 Z标志。q 存储数据类RAM地址 =Rs /不影响任何标志。q 堆栈操作类1、压栈指令:、压栈指令:PUSH Rx, Ry to SP将将 RxRy中的数据压入以中的数据压入以 Rs的内容为起始地址的一的内容为起始地址的一组存储器中。高序号寄存器内容先压入。组存储器中。高序号寄存器内容先压入。压入单个寄存器压入单个寄存器PUSH Rx, Rx to SP压入某两个或多个寄存器压入某两个或多个寄存器PUSH Rx, Ry to SP先压栈,先压栈, SP内容自动减内容自动减 1。不影响标志位不影响标志位 。例例 1、执行指令、执行指令 PUSH R3, PC to SPXXSPXXPCSRR5R4R3SP高高地地址址低低地地址址