单片机原理及实用技术 第3章SPCE061A指令系统ppt课件_第1页
单片机原理及实用技术 第3章SPCE061A指令系统ppt课件_第2页
单片机原理及实用技术 第3章SPCE061A指令系统ppt课件_第3页
单片机原理及实用技术 第3章SPCE061A指令系统ppt课件_第4页
单片机原理及实用技术 第3章SPCE061A指令系统ppt课件_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 SPCE061A指令系统 第3章 SPCE061A指令系统 3.1 概述概述 3.2 数据传送指令数据传送指令 3.3 算术运算指令算术运算指令 3.4 逻辑运算指令逻辑运算指令3.5 控制转移类指令控制转移类指令 3.6 常用伪指令常用伪指令 思索题思索题 第3章 SPCE061A指令系统 3.1 概概 述述 3.1.1 指令分类指令分类 以以nSP为内核的单片机系列指令集按功能可划分为:为内核的单片机系列指令集按功能可划分为: (1) 数据传送指令:立刻数到存放器、存放器到存放器、存数据传送指令:立刻数到存放器、存放器到存放器、存放器到存储器、存储器到存放器的数据传送操作。放器到存

2、储器、存储器到存放器的数据传送操作。 (2) 算术运算指令:加、减、乘等运算。算术运算指令:加、减、乘等运算。 (3) 逻辑运算指令:与、或、异或、测试、移位等操作。逻辑运算指令:与、或、异或、测试、移位等操作。 (4) 转移指令:条件转移、无条件转移、中断前往、子程序转移指令:条件转移、无条件转移、中断前往、子程序调用等操作。调用等操作。 (5) 控制指令:如开中断、关中断、有限冲击呼应控制指令:如开中断、关中断、有限冲击呼应FIR(Finite Impluse Response)滤波器的数据自在挪动等操作。滤波器的数据自在挪动等操作。 第3章 SPCE061A指令系统 3.1.2 寻址方式

3、寻址方式 寻址方式主要有以下几种:寻址方式主要有以下几种: (1) 立刻寻址:操作数以立刻数的方式出现。立刻寻址:操作数以立刻数的方式出现。 例如,例如,R1 = 0 x1234是把十六进制数是把十六进制数0 x1234赋给存放器赋给存放器R1。 (2) 直接寻址:经过存储器地址来访问存储器中的数据。直接寻址:经过存储器地址来访问存储器中的数据。 例如,例如,R1 =0 x2222 将将0 x2222单元的数据传送到存放器单元的数据传送到存放器R1。 (3) 存放器寻址:操作数在存放器中。存放器寻址:操作数在存放器中。 例如,例如,R1 = R2 是把存放器是把存放器R2中的数据赋给存放器中的

4、数据赋给存放器R1。 第3章 SPCE061A指令系统 (4) 存放器间接寻址:存放器中存储的是操作数的地址。 例如,R1 = BP 是把由BP指向的内存单元的数据传送到存放器R1。 (5) 变址寻址:操作数的地址由基址和偏移量共同提供。 例如,R1 = BP+0 x34,BP为基址,0 x34为偏移量,两者共同确定操作数存放的地址。 第3章 SPCE061A指令系统 表表3.1 符符 号号 约约 定定 符号 功能说明 R1,R2,R3,R4,R5(BP) 通用寄存器 PC 程序计数器 CS,DS 段寄存器中的代码段选择字段和数据段选择字段 NZSC 寄存器中的四个标志位 SR 段寄存器 IM

5、6 6 位立即数 IM16 16 位立即数 A6 6 位地址码 A16 16 位地址码 Rd 目的(destination)寄存器或存储器指针 Rs 源寄存器或存储器指针 数据传送符号 第3章 SPCE061A指令系统 MR 由 R4 和 R3 组成的 32 位结果寄存器,R4 为高 16 位,R3 为低 16 位 &, |, 逻辑与、逻辑或、逻辑异或符号 可选项 寄存器间接寻址标志 +, - - 指针单位字增量,字减量 ss,us 两个有符号数之间的操作,无符号数与有符号数之间的操作 Label 程序标号 FIR Finite Impulse Response(有限冲击响应),数字信

6、号处理中的一种具有线性相位及任意幅度特性的数字滤波器算法 N 负标志,N=0 表示运算结果最高有效位为 0;N=1 表示最高有效位 为 1 Z 零标志,Z=0 表示运算结果不为 0;Z=1 表示运算结果为 0 S 符号标志,S=0 表示结果不为负;S=1 表示结果为负数(2 的补数) C 进位标志,C=0 表示运算过程中无进位或有借位产生;C=1 表示运算过程中有进位或无借位产生 / 注释符 第3章 SPCE061A指令系统 3.2 数据传送指令数据传送指令 数据传送指令是把源操作数传送到指令所指定的目的地址。数据传送操作属复制性质,不是搬家性质,指令执行后源操作数坚持不变,只是用源操作数替代

7、目的操作数。 数据传送指令的通用格式如下: = 源操作数可以是立刻数、存放器寻址、存放器间接寻址、直接寻址、变址寻址等。目的操作数可以是存放器和直接地址。 第3章 SPCE061A指令系统 表表3.2 数据传送指令一览表数据传送指令一览表(ISA1.1指令集指令集) 语法 指令长度(Word) 影响标志 周期数 Rd = IM16 2 4 Rd =IM6 2 Rd = BP +IM6 6 Rd = A6 1 5 Rd = A16 2 7 Rd = Rs 4 Rd = Rs Rd = Rs+ Rd = +Rs Rd = Rs- 4 BP + IM6 = Rs 6 A6 = Rs 1 5 A16

8、= Rs 2 7 Rd = Rs +Rd = Rs Rd- = Rs Rd+ = Rs 1 N,Z 6 第3章 SPCE061A指令系统 1. 立刻寻址立刻寻址格式格式1:Rd = IM16阐明:阐明:16位立刻数送入目的存放器位立刻数送入目的存放器Rd。格式格式2:Rd = IM6阐明:阐明:6位立刻数扩展为位立刻数扩展为16位送入目的存放器位送入目的存放器Rd。例如:。例如:R1=0 xF001 /R1的值变为的值变为0 xF001第3章 SPCE061A指令系统 2. 存放器寻址格式1:Rd = Rs 阐明:将源存放器Rs 的数据送给目的存放器Rd。例如:R2=0 xF001/R2的值为

9、0 xF001R1=R2 /R1的值变为0 xF001 第3章 SPCE061A指令系统 3. 直接寻址直接寻址格式格式1:Rd = A6 阐明:把阐明:把A6指定的存储单元数据读到指定的存储单元数据读到Rd存放器。存放器。格式格式2:Rd = A16阐明:把阐明:把A16指定的存储单元数据读到指定的存储单元数据读到Rd存放器。存放器。格式格式3:A6 = Rs 阐明:将源存放器阐明:将源存放器Rs中的数据送给以中的数据送给以A6为地址的存储单元。为地址的存储单元。格式格式4:A16 = Rs 阐明:把阐明:把Rs数据存储到数据存储到A16 指出的存储单元。例如:指出的存储单元。例如:R1=0

10、 x0011 /R1的值为的值为0 x0011 0 x0010=R1 /0 x0010单元的值变为单元的值变为0 x0011 第3章 SPCE061A指令系统 4. 变址寻址 格式1:Rd = BP +IM6 阐明:把基址指针BP与6位的立刻数的和作为地址,将该存储单元的数据读到Rd存放器。 格式2:BP + IM6 = Rs 阐明:把Rs的值存储到基址指针BP与6位的立刻数之和为地址的存储单元。例如: R1=0 x0010 BP+0 x0002=R1 第3章 SPCE061A指令系统 5. 存放器间接寻址 格式1:Rd = Rs 阐明:把Rs的数据存储到Rd的值所指的存储单元(Rd中存放的是

11、操作数的地址)。 格式2:+Rd = Rs 阐明:首先把Rd 的值加1,再将Rs的数据存储到Rd的值所指的存储单元。 格式3:Rd = Rs+ 阐明:读取Rs所指的存储单元的值存入Rd,而后Rs的值加1。 第3章 SPCE061A指令系统 例例1 将将R3的值保管于的值保管于0 x25单元。单元。 R3 =0 x5678 /把把16位立刻数位立刻数0 x5678赋给赋给R3方法方法1: 0 x25=R3 /将将R3的值存储于的值存储于0 x25存储单元存储单元(直接寻直接寻址址), / 0 x25单元的内容为单元的内容为0 x5678 方法方法2: R2 =0 x25 /立刻数立刻数0 x25

12、送入送入R2 R2=R3 /将将R3的值存储于的值存储于0 x25存储单元存储单元(存放器存放器间间/接寻址接寻址),0 x25单元的内容为单元的内容为0 x5678第3章 SPCE061A指令系统 方法方法3:BP= 0 x20 /立刻数立刻数0 x20送入送入BP BP+5= R3 /将将R3的值存储于的值存储于0 x25存储单元存储单元(变址寻变址寻 /址址),0 x25单元的内容单元的内容/为为0 x5678 第3章 SPCE061A指令系统 例例2 将将0 x25,0 x26和和0 x27单元清零。单元清零。方法方法1:R1 = 0 R2 = 0 x25 /立刻数立刻数0 x25送入

13、送入R2中中R2+ = R1 /R1的值存储于的值存储于0 x25,存储单元,存储单元R2=R2+1R2+ = R1 /R1的值存储于的值存储于0 x26,存储单元,存储单元R2=R2+1R2 = R1 /R1的值存储于的值存储于0 x27 第3章 SPCE061A指令系统 方法方法2:R1 = 0 R2 = 0 x27R2- =R1 /R1的值存储于的值存储于0 x27,存储单元,存储单元R2=R2-1R2- =R1 /R1的值存储于的值存储于0 x26,存储单元,存储单元R2=R2-1R2 = R1 /R1的值存储于的值存储于0 x25 第3章 SPCE061A指令系统 方法方法3:R1

14、= 0 /影响标志位影响标志位Z=1,N=0R2 = 0 x24/立刻数立刻数0 x24 送入送入R2中中+R2= R1 /R2=R2 +1,R2=0 x25,而后,而后R1的值存储于的值存储于0 x25单元单元+R2=R1 /R2=R2 +1,R2=0 x26,而后,而后R1的值存储于的值存储于0 x26 单元单元+R2=R1 /R2=R2 +1,R2=0 x27,而后,而后R1的值存储于的值存储于0 x27单元单元 第3章 SPCE061A指令系统 例3 用不同方式读取存储器的值。BP = 0 x20 /将立刻数0 x20 赋给BPR1 = BP + 5 /BP+5=0 x25,那么读0

15、x25单元数据到R1中R1 = 0 x2345 /读0 x2345单元数据到R1中R1 = BP /读0 x20单元的数据到R1中R1 = BP+ /读0 x20 单元的数据到R1中,并使BP=0 x20+1R1 = BP- /读取0 x21单元的数据到R1中,并使BP=0 x21-1R1 = +BP /修正BP=0 x201,读0 x21单元的数据到R1第3章 SPCE061A指令系统 6. 堆栈操作堆栈操作 除以上引见的指令外,堆栈除以上引见的指令外,堆栈(stack)操作属于一种特殊的数操作属于一种特殊的数据传送指令,在此也一并作以引见。堆栈操作如图据传送指令,在此也一并作以引见。堆栈操

16、作如图3.1所示。所示。 0 x07FF0 x0000堆栈生成方向0 x07FD0 x07FC0 x07FB0 x07FA0 x07F9R5栈顶栈底栈顶R4R3R2R1堆栈生成方向0 x0000图3.1 堆栈操作 第3章 SPCE061A指令系统 堆栈指针SP总是指向栈顶的第一个空项,压入一个字后SP减1,将多个存放器同时压栈,总是序号最高的存放器先入栈,然后依次压入序号较低的存放器。所以,执行指令 PUSH R1,R4 TO SP 与 PUSH R4,R1 TO SP是等效的,即将R4,R3,R2,R1压栈,在数据出栈前SP加1,总是先弹出入栈指令中序号最低的存放器,而后依次弹出序号较高的存

17、放器,即先进后出,后进先出。 第3章 SPCE061A指令系统 堆栈操作的指令格式: PUSH Rx,Ry TO SP POP Rx,Ry FROM SP 阐明:Rx,Ry 可以是R1R4、BP、SP或PC中的恣意两个或一个,执行后将Rx、Ry的序列存放器压栈,或将堆栈中的数据弹入Rx、Ry序列存放器中。压栈操作不影响标志位,出栈操作影响N和Z标志。当Rx、Ry中含有SR时,一切标志位都会改动。压栈、出栈操作的执行周期为3n + 4,假设出栈操作的目的存放器中含有PC时,执行周期为3n+6,其中n是压栈数据的个数。压栈和出栈的指令长度均为1字长。例如: 第3章 SPCE061A指令系统 PUS

18、H R1,R5 to SP /将R5,R4,R3,R2,R1压栈 PUSH R2,R2 to SP /将R2压栈PUSH R3 to SP /将R3压栈POP R3 from SP /R3出栈POP R2,R2 from SP/R2出栈POP R1,R5 from SP /R1,R2,R3,R4,R5出栈 第3章 SPCE061A指令系统 3.3 算术运算指令算术运算指令 3.3.1 加法运算指令加法运算指令 加法运算影响标志位加法运算影响标志位N,Z,S和和C,寻址方式有以下几种。,寻址方式有以下几种。 1. 立刻寻址立刻寻址(不带进位不带进位) 格式格式1:Rd += IM6 或或 Rd

19、= Rd + IM6 操作:操作:Rd + IM6 Rd 阐明:阐明:Rd的数据与的数据与6位位(高位扩展成高位扩展成16位位)立刻数相加,结果送立刻数相加,结果送Rd。 格式格式2:Rd = Rs + IM16 操作:操作:Rs + IM16 Rd 阐明:阐明:Rd的数据与的数据与16位的立刻数相加,结果送位的立刻数相加,结果送Rd。例如:。例如: R1=0 x0099 /R1的值为的值为0 x0099 R1+=0 x0001/R1的值变为的值变为0 x009A R1+=0 x0012 /R1的值变为的值变为0 x00AC 第3章 SPCE061A指令系统 2. 直接寻址格式1:Rd +=

20、A6 或 Rd = Rd + A6操作:Rd + A6 Rd阐明:Rd的数据与6位地址指定的存储单元中的数据相加,结 果送Rd。格式2:Rd = Rs + A16操作:Rs + A16 Rd阐明:Rs的数据与16位地址指定的存储单元中的数据相加,结果送Rd。例如:R2=0 x0010 /R2的值为0 x00100 x0088=R2 /把0 x0010送到内存单元0 x0088 R1=0 xF099 /R1的值为0 xF099R1+=0 x0088 /R1的值变为0 xF0A9 第3章 SPCE061A指令系统 3. 变址寻址 格式:Rd += Bp + IM6 或Rd = Rd + BP +

21、IM6 操作:Rd + Bp + IM6 Rd 阐明:取基址指针BP 与6 位立刻数的和作为存储单元的地址,存储单元中的数据与Rd相加,结果送Rd存放器。例如: R1=0 x0010 /R1的值变为0 x0010 R2=0 x0090 /R2的值变为0 x0090 0 x0015=R2 /R2的值送到0 x0015 内存单元 R1+=BP+0 x0015 /R1的值变为0 x00A0(设BP=0 x0000) 第3章 SPCE061A指令系统 4. 存放器寻址格式: Rd += Rs操作: Rd + Rs Rd阐明:Rd与Rs的数据相加,结果送Rd。例如: R1=0 x0010 /R1的值为0

22、 x0010 R2=0 x0032 /R2的值为0 x0032R1+=R2 /R1的值变为0 x0042 第3章 SPCE061A指令系统 5. 存放器间接寻址 格式1:Rd += Rs 操作:Rd + Rs Rd 阐明:Rd的数据与Rs所指定的存储单元中的数据相加,结果送Rd。 格式2:Rd += Rs+ 操作:Rd + Rs Rd, Rs + 1 Rs 阐明:Rd的数据与Rs所指定的存储单元中的数据相加,结果送Rd,并且Rs=Rs+1。 格式3:Rd += Rs 第3章 SPCE061A指令系统 操作:Rd + Rs Rd, Rs 1 Rs 阐明:Rd的数据与Rs所指定的存储单元中数据相加

23、,结果送Rd,且Rs=Rs1。 格式4:Rd += +Rs 操作:Rs + 1 Rs, Rd + Rs Rd 阐明:首先修正Rs=Rs+1,Rd 的数据与Rs 所指定的存储单元中的数据相加,结果送Rd。例如:R1=0 x0010/R1的值为0 x0010R2=0 x0020 /R2的值为0 x00200 x0010= R2 /R2的值送到内存单元0 x0010中R2=0 x0010 /R2的值为0 x0010 R1+=R2+ /R1的值变为0 x0030,同时R2 的值变为0 x0011 第3章 SPCE061A指令系统 3.3.2 减法运算指令减法运算指令1. 立刻寻址立刻寻址格式格式1:R

24、d = IM6 或或 Rd = Rd IM6操作:操作:Rd IM6 Rd阐明:阐明:Rd的数据减去的数据减去6位立刻数,结果送位立刻数,结果送Rd。格式格式2:Rd = Rs IM16操作:操作:Rs IM16 Rd阐明:阐明:Rs的数据减去的数据减去16位立刻数,结果送位立刻数,结果送Rd。例如:。例如:R1=0 x0010 /R1的值为的值为0 x0010 R2=0 x0001 /R2的值为的值为0 x0001 R1 =R2 /R1的值为的值为0 x000F 第3章 SPCE061A指令系统 2. 直接寻址格式1:Rd = A6 或 Rd = Rd A16操作:Rd A6 Rd阐明:Rd

25、的数据减去A6存储单元中的数据,结果送Rd。格式2:Rd = Rs A16操作:Rs A16 Rd 阐明:Rs的数据减去A16存储单元中的数据,结果送Rd。 第3章 SPCE061A指令系统 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0002 /R1的值为0 x0002,N=0,Z=0,S=0,C=1 0 x0020=R1 /把R1的值送到内存单元0 x0020中,标志位不变 R2=0 x0001 /R2的值为0 x0001,N=0,Z=0,S=0,C=1 R2 =0 x0020 /R2的值变为0 xFFFF,C为0阐明运算过程产生了借位, /N=1,Z=0,S=

26、1 第3章 SPCE061A指令系统 3. 变址寻址 格式:Rd = BP + IM6 或 Rd = Rd BP + IM6 操作:Rd BP + IM6 Rd 阐明:Rd的值减去基址加变址指定的存储单元的值,结果送Rd。例如: R1=0 x8031 /R1的值为0 x8031 R2=0 x0020 /R2的值为0 x0020 0 x0010=R2 /把0 x0020 送到地址单元0 x0010 R1 =BP+0 x0010 /R1的值变为0 x8011(设BP=0 x0000) 第3章 SPCE061A指令系统 4. 存放器寻址格式:Rd=Rs操作:RdRsRd阐明:存放器Rd的数据减去Rs

27、的数据结果送Rd存放器。例如: R1 =0 x31E0 /R1的初值为0 x31E0R2 =0 x31DF /R2的初值为0 x31DFR1 =R2 /R1的值变为0 x0001第3章 SPCE061A指令系统 5. 存放器间接寻址 格式1:Rd= Rs 操作:RdRsRd 阐明:Rd的数据与Rs所指定的存储单元中的数据相减,结果送Rd。 格式2:Rd = Rs+ 操作:Rd Rs Rd, Rs+1 Rs 阐明:Rd的数据与Rs所指定的存储单元中的数据相减,结果送Rd,且RsRs+1。 格式3:Rd = Rs 第3章 SPCE061A指令系统 操作:Rd Rs Rd, Rs1 Rs 阐明:Rd

28、的数据与Rs所指定的存储单元中的数据相减,结果送Rd, 且RsRs1。 格式4:Rd= +Rs 操作:Rs + 1Rs, Rd Rs Rd 阐明:Rs的值加1,Rd的数据与Rs所指定单元的数据相减,结果送Rd。 第3章 SPCE061A指令系统 3.3.3 带进位的加减法运算指令带进位的加减法运算指令 由于带进位的加减运算与不带进位的加减运算在寻址方式、由于带进位的加减运算与不带进位的加减运算在寻址方式、周期数、指令长度、影响标志位等均一样,格式类似,故这里周期数、指令长度、影响标志位等均一样,格式类似,故这里只给出指令格式供读者参考。只给出指令格式供读者参考。 带进位的加法指令格式:带进位的

29、加法指令格式: Rd += IM6,Carry Rd = Rd + IM6,Carry Rd = Rs + IM16,Carry Rd += BP + IM6 ,Carry Rd = Rd + BP + IM6 ,Carry Rd += A6 ,Carry Rd = Rd + A6 ,Carry 第3章 SPCE061A指令系统 Rd = Rs + A16 ,CarryRd += Rs,CarryRd += Rs ,CarryRd += +Rs ,CarryRd += Rs ,CarryRd += Rs+,Carry带进位的减法指令格式:Rd = IM6,CarryRd = Rd IM6,Ca

30、rryRd = Rs IM16,Carry 第3章 SPCE061A指令系统 Rd = BP + IM6 ,CarryRd = Rd BP + IM6 ,CarryRd = A6 ,CarryRd = Rd A6 ,CarryRd = Rs A16 ,CarryRd = Rs,CarryRd = Rs ,CarryRd = +Rs ,CarryRd = Rs ,CarryRd = Rs+,Carry第3章 SPCE061A指令系统 3.3.4 乘法运算指令乘法运算指令 Rd和和Rs可用可用R1R2和和BP;MR由由R4、R3构成,构成,R4为为高位字,高位字,R3为低位字。不影响标志位。为低位

31、字。不影响标志位。 格式格式1:MR = Rd * Rs或或MR = Rd * Rs,ss 功能:功能:Rd * Rs MR 阐明:表示两个有符号数相乘,结果送阐明:表示两个有符号数相乘,结果送MR存放器。存放器。 格式格式2:MR = Rd * Rs,us 第3章 SPCE061A指令系统 功能:Rd * Rs MR 阐明:表示无符号数与有符号数相乘,结果送MR存放器。 例如,计算一年365 天共有多少小时,结果存放R4(高位)、R3(低位)。 R1 = 365 /R1的值为0 x016D R2 = 24 /R2的值为0 x0018 MR = R1 * R2,us/计算乘积,结果R3的值为0

32、 x2238,R4的值为0 x0000 第3章 SPCE061A指令系统 3.3.5 内积运算指令内积运算指令 内积运算指令不影响标志位。内积运算指令不影响标志位。 格式:格式:MR = Rd * Rs ,ss ,n 功能:功能:Rd与与Rs存放器内容作为地址的存储器内有符号数存放器内容作为地址的存储器内有符号数与有符号数之间或无符号数与有符号字数之间进展与有符号数之间或无符号数与有符号字数之间进展n项内积项内积运算,结果存入运算,结果存入MR。符号的缺省选择为。符号的缺省选择为ss,即有符号数据,即有符号数据之间的运算。之间的运算。n的取值为的取值为116,缺省值为,缺省值为1。内积运算操作

33、。内积运算操作如图如图3.2所示,其中所示,其中Rd与与Rs可为存放器可为存放器R1R2或或BP。 执行周期:执行周期:10n+6个周期个周期 第3章 SPCE061A指令系统 阐明:当FIR_MOV ON 时,允许FIR运算过程中数据自在挪动。为新样本取代旧样本进展数据挪动预备:Xn4=Xn3,Xn3=Xn2,Xn2=Xn1。如图3.2所示,当完成一次内积运算后X1、X2、X3自动右移,X4移出,在数字信号处置中非常有用。比如他要计算延续4次采样值的平均值,可将采样值放到X1X4 中,加权系数放到C中,然后完成Rd * Rs ,ss ,4运算,再求平均值。当FIR_MOV ON时,运算完后X

34、1、X2、X3自动右移,X4 移出。这样我们就可以把下一次的采样值X0放到原X1的位置,下一次直接完成Rd * Rs ,ss ,4运算,即X0X3的运算,不用另外挪动Xn。 第3章 SPCE061A指令系统 X1Rd运算前n1指针指向存储器C1Rs存储器内MRC1*X1X1X2RdX3X4运算前n4指针指向存储器C1C2RsC3C4存储器内MRC1*X1C2*X2C3*X3C4*X4X1RdC1RsX1X2RdX3X4C1C2RsC3C4运算后运算后图3.2 内积运算操作表示图 第3章 SPCE061A指令系统 3.3.6 比较指令比较指令 比较指令执行两数的减法操作,不存储运算结果,只影比较

35、指令执行两数的减法操作,不存储运算结果,只影响标志位响标志位N、Z、S和和C。下面按寻址方式分别引见比较指令。下面按寻址方式分别引见比较指令。 1. 立刻寻址立刻寻址 格式格式1:CMP Rd,IM6 阐明:将阐明:将Rd的值与的值与6位立刻数相比较。位立刻数相比较。 格式格式2:CMP Rd,IM16 阐明:将阐明:将Rd的值与的值与16位立刻数相比较。位立刻数相比较。 第3章 SPCE061A指令系统 2. 直接寻址 格式1:CMP Rd, A6 阐明:将Rd的值与A6指定地址单元的数据相比较。 格式2:CMP Rd, A16 阐明:将Rd的值与A16指定地址单元的数据相比较。 3. 存放

36、器寻址 格式:CMP Rd,Rs 阐明:将Rd与Rs的值相减,只影响标志位,不存储结果。 第3章 SPCE061A指令系统 4. 变址寻址 格式:CMP Rd,BP + IM6 阐明:将Rd与BP + IM6指定地址单元的数据相比较。 第3章 SPCE061A指令系统 5. 存放器间接寻址 格式1:CMP Rd,Rs 阐明:将Rd的值与存放器Rs指定存储单元的数据相比较。 格式2:CMP Rd,Rs+ + 阐明:将Rd的值与存放器Rs指定存储单元的数据相比较,且RsRs+1。 格式3:CMP Rd,Rs- - 阐明:将Rd的值与存放器Rs指定存储单元的数据相比较,且RsRs-1。 格式4:CM

37、P Rd,+Rs 阐明:Rs加1,再将Rd的值与存放器Rs指定存储单元的数据相比较,结果只影响标志位。 第3章 SPCE061A指令系统 3.4 逻辑运算指令逻辑运算指令 3.4.1 逻辑与指令逻辑与指令 1. 立刻寻址格式1:Rd &= IM6 或Rd = Rd & IM6功能:Rd & IM6Rd阐明:将Rd的数据与6位立刻数进展逻辑与操作,结果送Rd 存放器。格式2:Rd = Rs & IM16功能:Rs & IM16Rd阐明:将Rs的数据与16 位立刻数进展逻辑与操作,结果送Rd存放器。例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。R

38、1=0 x0010 /R1的初值为0 x0010,Z=0R1&=0 x000F /结果为0,标志位Z由0变为1第3章 SPCE061A指令系统 2. 直接寻址直接寻址 格式格式1:Rd &=A6 或或 Rd=Rd&A6 功能:功能:Rd & A6 Rd 阐明:将阐明:将Rd和和A6指定存储单元的数据进展逻辑与操作,指定存储单元的数据进展逻辑与操作,结果送结果送Rd存放器。存放器。 格式格式2:Rd = Rs & A16 功能:功能:Rs & A16 Rd第3章 SPCE061A指令系统 3. 存放器寻址格式:Rd &= Rs或Rd=Rd&

39、amp;Rs功能:Rd & RsRd阐明:将Rd和Rs的数据进展逻辑与操作,结果送Rd存放器。例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。R1=0 x00FF /R1的初值为0 x00FF,Z=0,N=0R2=0XFFFF /R1的初值为0XFFFF,Z=0,N=1R1&=R2 /结果为0 x00FF标志位N变为0,Z=0 第3章 SPCE061A指令系统 4. 存放器间接寻址 格式1:Rd &= Rs 功能:Rd & Rs Rd 阐明: 将Rd的数据与Rs指定的存储单元数据进展逻辑与操作,结果送Rd存放器。 格式2:Rd &= Rs+ 功

40、能:Rd & RsRd,Rs+1Rs 阐明:将Rd的数据与Rs指定的单元的数据进展逻辑与操作,结果送Rd存放器,并使Rs加1。 第3章 SPCE061A指令系统 格式3:Rd &= Rs- 功能:Rd & RsRd,Rs1Rs 阐明:将Rd 的数据与Rs 指定的单元的数据进展逻辑与操作,结果送Rd存放器,并使Rs减1。 格式4:Rd &= +Rs 功能:Rs+1Rs,Rd&RsRd 阐明:Rs加1,将Rd的数据与Rs指定的单元的数据进展逻辑与操作,结果送Rd存放器。 第3章 SPCE061A指令系统 例如,假设开场时的标志位为N=0,Z=1,S=0,C=

41、1。 R1=0 x00FF /R1的初值为0 x00FF,Z=0,N=0 R2=0XFFFF /R2的初值为0XFFFF,Z=0,N=1 0 x0001=R2 R2=0 x0001 R1&=R2 /结果为0 x00FF,标志位N变为0,Z=0 第3章 SPCE061A指令系统 3.4.2 逻辑或指令 1. 立刻寻址 格式1:Rd|=IM6或Rd=Rd|IM6 功能:Rd|IM6Rd 阐明:将Rd的数据与6位立刻数进展逻辑或操作,结果送Rd存放器。 格式2:Rd=Rs|IM16 功能:Rs|IM16Rd第3章 SPCE061A指令系统 阐明:将Rs的数据与16位立刻数进展逻辑或操作,结果

42、送Rd存放器。 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x00FF /R1的初值为0 x00FF,Z=0,N=0 R1|=0 xF000 /R1的值变为0 xF0FF, Z=0,N=1 第3章 SPCE061A指令系统 2. 直接寻址 格式1:Rd|=A6或Rd=Rd|A6 功能:Rd|A6Rd 阐明:将Rd和A6指定单元的数据进展逻辑或操作,结果送Rd存放器。 格式2:Rd =Rs|A16 功能:Rs|A16Rd第3章 SPCE061A指令系统 阐明:将Rs的数据和A16指定单元的数据进展逻辑或操作,结果送Rd存放器。 例如,假设开场时的标志位为N=0,Z=1,

43、S=0,C=1。 R1=0 x00FF /R1的初值为0 x00FF,Z=0,N=0 R1|=0 x0009 /R1值变为0 x00FF, Z=0,N=0,假设 0 x0009的值为0第3章 SPCE061A指令系统 3. 存放器寻址 格式:Rd|=Rs 功能:Rd|Rs Rd 阐明:将Rd 和Rs 的数据进展逻辑或操作,结果送Rd 存放器。 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0000 /R1的初值为0 x0000,Z=1,N=0 R2=0 xFFF0 R1|=R2 /R1的值变为0 xFFF0,Z=0,N=1 第3章 SPCE061A指令系统 4. 存放

44、器间接寻址 格式1:Rd|= Rs 功能:Rd|Rs Rd 阐明:将Rd的数据与Rs指定单元的数据进展逻辑或操作,结果送Rd存放器。 格式2:Rd |= Rs+ 功能:Rd | Rs Rd,Rs + 1Rs 阐明:将Rd的数据与Rs 指定单元的数据进展逻辑或操作,结果送Rd 存放器,并使Rs加1。 第3章 SPCE061A指令系统 格式3:Rd|= Rs- 功能:Rd|RsRd,Rs1Rs 阐明:将Rd的数据与Rs 指定单元的数据进展逻辑或操作,结果送Rd存放器,并使Rs减1。 格式4:Rd|= +Rs 功能:Rs+1Rs,Rd|RsRd 阐明:首先将Rs的值加1,然后将Rd与Rs指定单元的数

45、据进展逻辑或操作,结果送Rd存放器。 第3章 SPCE061A指令系统 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0000; /R1的初值为0 x0000,Z=1,N=0 R2=0 xFFFF; /把0 xFFFF送到地址单元0 x0002中 0 x0002=R2; R2=0 x0002; /R2的值为0 x0002,Z=0,N=0 R1|=R2; /R1的值变为0 xFFFF,Z=0,N=1 第3章 SPCE061A指令系统 3.4.3 逻辑异或指令逻辑异或指令 逻辑异或影响标志位逻辑异或影响标志位N和和Z,寻址方式有以下几种。,寻址方式有以下几种。 1. 立刻

46、寻址立刻寻址 格式格式1:Rd=IM6或或Rd= RdIM6 功能:功能:RdIM6Rd 阐明:将阐明:将Rd的数据与的数据与6位立刻数进展逻辑异或操作,结果位立刻数进展逻辑异或操作,结果送送Rd存放器。存放器。 格式格式2:Rd=RsIM16第3章 SPCE061A指令系统 功能:RsIM16Rd 阐明:将Rs的数据与16位立刻数进展逻辑异或操作,结果送Rd存放器。 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0F00 /R1的初值为0 x0F00,Z=0,N=0 R1=0 x0FFF /R1的值变为0 x00FF,Z=0,N=0 第3章 SPCE061A指令系统

47、 2. 直接寻址 格式1:Rd=A6或RdRdA6 功能:Rd A6 Rd 阐明:将Rd 和A6 指定存储单元的数据进展逻辑异或操作,结果送Rd 存放器。 格式2:Rd=RsA16 功能:RsA16 Rd 第3章 SPCE061A指令系统 阐明:将Rs的数据和A16指定存储单元的数据进展逻辑异或操作,结果送Rd存放器。 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0F00 /R1的初值为0 x0F00,Z=0,N=0 R2=0 x0FF0 0 x0010=R2 R1=0 x0010 /R1的值变为0 x00F0,Z=0,N=0 第3章 SPCE061A指令系统 3.

48、 存放器寻址 格式:Rd = Rs 功能:Rd RsRd 阐明:将Rd 和Rs 的数据进展逻辑异或操作,结果送Rd 存放器。 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0E01 /R1的初值为0 x0E01,Z=0,N=0 R2=0 x0FF1 /R2的初值为0 x0FF1,Z=0,N=0 R1=R2 /R1的值变为0 x01F0,Z=0,N=0 第3章 SPCE061A指令系统 4. 存放器间接寻址 格式1:Rd= Rs 功能:RdRsRd 阐明:将Rd的数据与Rs指定的存储单元的数据进展逻辑异或操作,结果送Rd存放器。 格式2:Rd= Rs+ 功能:RdRs

49、Rd,Rs + 1Rs 阐明:将Rd的数据与Rs指定的存储单元的数据进展逻辑异或操作,结果送Rd存放器,并使Rs加1。 格式3:Rd=Rs- 第3章 SPCE061A指令系统 功能:RdRsRd,Rs1Rs 阐明:将Rd的数据与Rs 指定的存储单元中的数据进展逻辑异或操作,结果送Rd存放器,并使Rs 减1。 格式4:Rd=+Rs 功能:Rs+1Rs ,RdRsRd 阐明:首先使Rs 加1,然后Rd 的数据与Rs 指定的存储单元中的数据进展逻辑异或操作,结果送Rd 存放器。 第3章 SPCE061A指令系统 例如,假设开场时的标志位为N=0,Z=1,S=0,C=1。 R1=0 x0000 /R1

50、的初值为0 x0000,Z=1,N=0 R2=0 xFFFF /R2的初值为0 xFFFF,N=1,Z=0 0 x0002=R2 R2=0 x0002 R1=R2 /R1的值变为0 xFFFF, Z=0,N=1 第3章 SPCE061A指令系统 3.4.4 测试指令 测试指令是将两个数进展逻辑与操作,不存储结果,只影响N和Z标志位。 1. 立刻寻址 格式1:TEST Rd,IM6 阐明:将Rd与IM6进展逻辑与操作,不存储结果,只影响N和Z标志位。 格式2:TEST Rd,IM16 第3章 SPCE061A指令系统 阐明:将Rd与IM16进展逻辑与操作,不存储结果,只影响N和Z标志位。 例如,

51、假设初始时标志位分别为N=0,Z=1,S=0,C=1。 R1=0 x0E01 /R1的初值为0 x0E01,N=0,Z=0,S=0,C=1 TEST R1,0 x0000 /测试R1和0 x0000 相与的结 果,N=0,Z=1,S=0,C=1 JZ loop1 /测试结果为0,跳转到loop1 R2=0 x0020loop1: R1=0 x0001 /标号第3章 SPCE061A指令系统 2. 直接寻址 格式1:TEST Rd, A6 阐明:将Rd与A6指定存储单元的数据进展逻辑与操作,不存储结果,只影响N和Z标志位。 格式2:TEST Rd, A16 阐明:将Rd与A16指定存储单元的数据

52、进展逻辑与操作,不存储结果,只影响N和Z标志。 第3章 SPCE061A指令系统 例如,假设初始时标志位分别为N=0,Z=1,S=0,C=1。R1=0 x0E01 /R1的初值为 0 x0E01,N=0,Z=0,S=0,C=1R2=0 x0011 /将0 x0011 送到内存单元0 x0000中0 x0000=R2TEST R1,0 x0000 /R1和0 x0000单元的值相与,此时 N=0,Z=0,S=0,C=1JNZ loop1 /Z为0时跳转到loop1,(此时测试结果 不为0)NOPNOPloop1: R1=0 x0000 .第3章 SPCE061A指令系统 3. 变址寻址 格式:T

53、EST Rd,BP+IM6 阐明:将Rd与BP+IM6指定存储单元的数据进展逻辑与操作,不存储结果,只影响N和Z标志位。 例如,假设初始形状标志位分别为N=0,Z=1,S=0,C=1。 R1=0 x0E01 /R1的初值为0 x0E01,N =0,Z=0,S=0,C=1 R2=0 x0011 /将0 x0011送到内存单元0 x0000中 0 x0000=R2第3章 SPCE061A指令系统 TEST R1,BP+0 x0000 /知BP的值为0,R1和BP+0 x0000单元的值相与, /N=0,Z=0,S=0,C=1 JNZ loop1 /测试结果不为0时跳转到loop1 NOP NOPl

54、oop1: R1+=1 第3章 SPCE061A指令系统 4. 存放器寻址 格式:TEST Rd,Rs 阐明:将Rd 与Rs 的数据进展逻辑与操作,不存储结果,只影响N和Z标志位。 例如,假设初始时标志位分别为N=0,Z=1,S=0,C=1。 R1=0 x0000 /R1的初值为0 x0000,N=0,Z=1,S=0,C=1 R2=0 x1111 /R2的初值为0 x1111,N=0,Z=0,S=0,C=1 TEST R1,R2 /测试R1和R2的相与的结果,N=0,Z=1,S=0,C=1 JZ loop1 /测试结果为0时跳转到loop1 NOPloop1: R1-=1 /标号 第3章 SP

55、CE061A指令系统 5. 存放器间接寻址 格式1:TEST Rd,Rs 阐明:将Rd 与Rs 指定存储单元中的数据进展逻辑与操作,不存储结果,只影响N和Z标志位。 格式2:TEST Rd,Rs+ 阐明:将Rd与Rs指定存储单元中的数据进展逻辑与操作,不存储结果,只影响N和Z标志位,并且使Rs加1。 第3章 SPCE061A指令系统 格式3:TEST Rd,Rs- 阐明:将Rd 与Rs 指定存储单元中的数据进展逻辑与操作,不存储结果,只影响N和Z标志位,并且使Rs减1。 格式4:TEST Rd,+Rs 阐明:首先Rs加1,然后Rd 与Rs 指定存储单元中的数据进展逻辑与操作,不存储结果,只影响

56、N和Z标志位。 第3章 SPCE061A指令系统 例如,假设初始时标志位分别为N=0,Z=1,S=0,C=1。 R1=0 x0000 /R1的初值为0 x0000,N=0,Z=1,S=0,C=1 R2=0 x1111 /0 x0001的初值为0 x1111,N=0,Z=0,S=0,C=1 0 x0001=R2 R2=0 x0001 TEST R1,R2 /测试R1和R2相与的结果,N=0,Z=1,S=0,C=1 JZ loop1 /测试结果为0时跳转到loop1 Noploop1: R1=0 x0000/标号 第3章 SPCE061A指令系统 3.4.5 移位操作指令移位操作指令 1. 逻辑左

57、移(LSL) 格式:RdRs LSL n 阐明:对Rs 进展n(可设为14)位逻辑左移,将Rs高n 位移入SB存放器,同时Rs 的低n(14)位用0补足,结果送Rd存放器。 第3章 SPCE061A指令系统 例如,逻辑左移3位,存放器移位前的形状如下: SB RS S3 S2 S1 S0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 寄存器移位后的状态如下: SB RD S0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 程序: R1=0 xF00F /R1

58、初值为 0 xF00F R1=R1 LSL 3 /R1 左移 3 位后的值变为 0 x8078 第3章 SPCE061A指令系统 2. 逻辑右移(LSR) 格式:Rd=Rs LSR n 阐明: 对Rs进展n(可设为14)位逻辑右移,将Rs低n位移入SB存放器,同时Rs的高n(14)位用0补足,结果送Rd存放器。 例如,逻辑右移3位,存放器移位前的形状如下: SB RS S3 S2 S1 S0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 寄存器移位后的状态如下: SB RD 0 0 0 S3 S2 S1 S0 B15 B14 B13

59、 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 程序: R1=0 xF00F /R1 的初值为 0 xF00F R1=R1 LSR 3 /R1 右移 3 位后的值变为 0 x1E01 第3章 SPCE061A指令系统 3. 循环左移(ROL) 格式:RdRs ROL n 阐明:对Rs进展n(可设为14)位循环左移,将Rs的高n位移入SB存放器,同时将SB存放器的高n位移入Rs的低n位,结果送Rd 存放器。 例如,循环左移1位,存放器移位前的形状如下: 第3章 SPCE061A指令系统 SB RS S3 S2 S1 S0 B15 B14 B13 B12 B11 B10 B9

60、B8 B7 B6 B5 B4 B3 B2 B1 B0 寄存器移位后的状态如下: SB RD S2 S1 S0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 S3 程序: R1=0 x0010 /R1 的初值为 0 x0010 R1=R1 ROL 1 /R1 循环左移 1 位后的值变为 0 x0020 第3章 SPCE061A指令系统 4. 循环右移(ROR) 格式:Rd Rs ROR n 阐明:对Rs进展n(可设为14)位循环右移,将Rs的低n位移入SB 存放器,同时将SB存放器的低n位移入Rs的高n位,结果送Rd存放器。 例如,循环右移1位,存放器移位前的形状如下: 第3章 SPCE061A指令系统 SB RS S3 S2 S1 S0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论