[合同协议]补充 指令系统dsp课件_第1页
[合同协议]补充 指令系统dsp课件_第2页
[合同协议]补充 指令系统dsp课件_第3页
[合同协议]补充 指令系统dsp课件_第4页
[合同协议]补充 指令系统dsp课件_第5页
已阅读5页,还剩262页未读 继续免费阅读

下载本文档

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

文档简介

第6章 寻址方式与指令系统,6.1 寻址方式 6.2 指令系统,6.1 寻址方式 6.1.1 立即寻址方式 在立即寻址方式中,指令字中包含该指令要操作的常数。 短立即寻址:使用短立即寻址的指令可指定8、9或13位的常数作操作数。采用这种寻址方式的指令只需一个指令字,操作数就包含在这个指令字中。 长立即寻址:使用长立即寻址的指令可指定16位的常数作操作数。这时需2个指令字,该常数即为第2个指令字。这个16位的数值可以作为一个绝对值,也可以作为2的补码值。,【例6.1】 RPT #98 ;将紧接着RPT后的指令重复99次, 立即操作数用数值前加“#”表示。 【例6.2】 ADD #12864,4 ; 将12864(3240h)左移4位后与累加器 ;值相加,结果保存在累加器中,6.1.2 直接寻址方式 直接寻址方式由指令直接给出操作数所在的地址。存储器地址被分成两部分,指令字包括数据存储器地址的低7位,即页内偏移量;而页面的指示则由存储器页指针DP给出,DP包含数据存储器地址的高9位,这样合成地址就是16位。,【例6.3】 使用直接寻址的ADD(移位位数015) LDP #6 ;将数据页面设置为6 ADD 8H,4 ;数据存储器地址308h中的值左移4位与累加 器的值相加 直接寻址方式可用在除调用、转移、立即数操作、无操作数指令外的任何指令中。,6.1.3 间接寻址方式 数据存储器地址由辅助寄存器ARn间接给出。因为辅助寄存器ARn为16位,因此这种方式中数据存储器的16位地址是由ARn全部给出的。 这种寻址方式中,使用的辅助寄存器是当前辅助寄存器,由辅助寄存器指针 ARP指定,ARn=AR(ARP)。如ARP=2,则使用的地址寄存器就是AR2。 辅助寄存器指针ARP指定当前辅助寄存器AR(ARP),而ARP的值则可直接通过修改状态寄存器ST0的相应位来加载,但更方便的是使用MAR指令在修改当前辅助寄存器的值时对ARP赋值。,当前辅助寄存器AR(ARP)在程序中表示为“*”,因此间接寻址方式中的指令是以符号“*”为标志的。 常用的修改辅助寄存器内容的指令有LAR、MAR、ADRK和SBRK等。,6.2 指令系统 6.2.1 累加器、算术和逻辑指令 累加器、算术和逻辑指令集包含ABS、ADD、ADDC、ADDS、ADDT、AND、CMPL、LACC、LACL、LACT、NEG、NORM、OR、ROL、ROR、SACH、SACL、SFL、SFR、SUB、SUBB、SUBC、SUBS、SUBT、XOR、ZALR等26条指令。 ABS指令 句法:ABS 功能:对ACC的值取绝对值后送回ACC,并将进位位C清0。,状态位:受OVM影响,不受SXM位影响,结果影响C和OV状态位。 注意:ACC中的值为16位的带符号数,若其大于或等于零,则执行ABS指令后值 不变;若其小于0,则执行ABS指令后,为其对2的补码。,【例6.5】 ABS ;ACC中的数大于零时指令执行前后变化如图所示,【例6.6】 ABS ;ACC中的数小于零时指令执行前后变化如图所示, ADD指令 句法:ADD dma ,shift ;直接寻址 ADD dma,16 ;直接寻址,左移16位 ADD ind,shift ,ARn ;间接寻址 ADD ind,16,ARn ;间接寻址,左移16位 ADD # k ;短立即寻址 ADD # lk ,shift ;长立即寻址 功能:将被寻址的数据存储单元的值或立即数左移016位后加到ACC中,移位时低位填0,高位补0(SXM = 0)或符号扩展(SXM = 1)。,状态位: 指令影响C和OV位,当左移16位做加法运算时,如果加法结果有进位,则C = 1;反之,C不变。 指令受SXM和OVM位的影响,但在短立即寻址时,仅受OVM位影响,不受SXM位影响。 【例6.8】 ADD 2,1 ;(DP = 6:地址0300h037Fh),,【例6.9】 ADD *+,1,AR0 ;,【例6.10】 ADD #1h ;加短立即数的情况如图 ;4.11所示,【例6.11】 ADD #1234h,1 ;加长立即数,左移1位的情况如图4.12所示, ADDC指令 句法:ADDC dma ;直接寻址 ADDC ind ARn ;间接寻址 功能:被寻址的数据存储单元的值与ACC的值(高位填0)及进位位C的值相加,结果保存至ACC。该指令可实现多精度运算。 状态位:受OVM状态位影响,不受SXM位影响,结果影响C和OV状态位,若相加结果产生进位,则C = 1;反之,C = 0。,【例4.13】ADDC *, AR3 ;(OVM = 0)指令执行过程, ADDS指令 句法:ADDS dma ;直接寻址 ADDS ind,ARn ;间接寻址 功能:被寻址的数据存储单元的值与ACC的值(抑制符号位扩展)相加,结果保存在ACC中。当SXM = 0,移位次数为0时,ADD等效于ADDS指令。 状态位:受OVM状态位影响,不受SXM位影响,结果影响C和OV状态位。若相加结果产生进位,则C=1;反之,C=0。,【例6.14】ADDS 6 ;(DP=5;地址280H2FFH)没,【例6.15】ADDS * ;间接寻址产生进位的情况如图, ADDT指令 句法:ADDT dma ;直接寻址 ADDT ind ,ARn ;间接寻址 功能:被寻址的数据存储单元的值左移015(由TREG的低4位确定)位后与ACC值相加,结果保存至ACC。移位时低位填0,高位填0 ( SXM = 0)或符号扩展(SXM = 1)。 状态位:受SXM和OVM状态位影响,结果影响C和OV状态位。若相加产生进位,则C = 1;反之,C = 0。,【例6.16】ADDT 6Dh ;(DP=4:地址0200H027FH, ;(SXM=0)直接寻址执行过,【例6.17】ADDT *,AR5 ;(SXM=0)(执行后当前 ;寄存器为AR5)间接寻 ;址, AND指令 句法:AND dma ;直接寻址 AND ind ,ARn ;间接寻址 AND # 1k ,shift ;长立即寻址, 左移015位 AND # 1k ,16 ;长立即寻址,左移16位 功能:若使用直接或间接寻址,则ACC的低16位和被寻址的数据存储单元的值进行逻辑与操作,结果送ACC低16位,ACC高16位清0。 若使用长立即寻址,则16位的长立即数左移016位(移位时低位、高位均补0)后和32位的ACC值相与,结果保存在ACC中。,状态位:不受任何状态位和SXM影响,也不影响任何状态位。 【例6.18】AND 64 ;(DP=4: 地址0200H027FH)直接,【例6.19】AND *,【例6.20】 AND # 00FFH,8 ;长立即数寻址过程, CMPL指令 句法:CMPL 功能:将ACC中的值逻辑取反。 【例6.21】 CMPL, LACC指令 句法:LACC dma,shift ;直接寻址,左移015位 LACC dma,16 ;直接寻址,左移16位 LACC ind,shift,ARn ;间接寻址,左移 ;015位 LACC ind,16 ,ARn;间接寻址,左移16位 LACC #lk,shift ;长立即数寻址,左移 ;015位 功能:将被寻址的数据存储单元的值或16位常数左移后送ACC。移位时,低位填0,高位由SXM决定。SXM=1,用符号扩展;SXM=0,则填0。,状态位:指令受SXM位影响。 【例6.22】LACC 10, 5 ;(DP=8:地址0400h ;047Fh;SXM=0),【例6.23】LACC *,12 ;(SXM = 0)指令执行过程,【例6.24】 LACC #0F000h,2 ; (SXM = 1)指令执行, LACL指令 句法:LACL dma ;直接寻址 LACL ind,ARn ;间接寻址 LACL #k ;短立即数寻址 功能:将被寻址的数据存储单元的值或用0扩展的8位常数送到ACC的低16位,ACC的高16位填0。 操作:直接或间接寻址 (数据存储器地址)ACC(150)、 0ACC(3116); 或短立即数寻址 kACC(70)、0ACC(318)。 状态位:不受SXM位影响。,【例6.25】 LACL 1 ;(DP = 6:地址0300h037Fh),【例6.26】 LACL *-,AR4,【例6.27】 LACL #FFh, LACT指令 句法:LACT dma ;直接寻址 LACT ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值左移后送到ACC。左移次数由TREG的低4位确定(可移动015位)。移位时,低位填0,高位由SXM决定:SXM = 0,则填0;SXM = 1,则用符号扩展。,【例6.28】 LACT 1 ;(DP=6;地址0300h037Fh; ;SXM=0),【例6.29】 LACT *-,AR3;(SXM=1);, NEG指令 句法:NEG 功能:将ACC的值取2的补数,即转换成它的相反数。 状态位:受OVM位影响,结果影响C和OV位。 注意: 当对80000000h做NEG操作时,OV位置1。 若OVM = 1,则ACC的值(80000000h)被NEG操作转换成7FFFFFFFh;若OVM = 0,则ACC经过NEG操作后仍为80000000h。 只要ACC的值不为0,进位位(C)即清0;反之,C=1。,【例6.30】NEG ;(OVM = X)将-1234转换为+1234, OR指令 句法: OR dma ;直接寻址 OR ind,AR n ;间接寻址 OR #lk ,shift ;立即寻址,左移015位 OR #lk,16 ;长立即寻址,左移16位 功能:将ACC的值和被寻址的数据存储单元的值(或左移后的长立即数)做逻辑或操作,结果送ACC。操作数不足32位的,高位补0;左移时,低位填0。,(ACC(150) OR(数据存储器的地 址)ACC(150), (ACC(3116)ACC (3116)(直接或间接寻 址); 或(ACC)OR lk2shiftACC(长立即数左移0 15位); 或(ACC )OR lk216ACC (长立即数左移16位)。 状态位:指令不受SXM位影响。 【例4.36】 OR 0Ah ;(DP=6)指令执行过程如图4.35 ;所示,【例4.37】 OR *+,AR0,【例4.38】 OR #01234h,9 ;指令执行过程如图 ;4.37所示,图4.37 指令执行过程示意, ROL指令 句法:ROL 功能:将ACC的值连同进位位C循环左移一位,进位位移入ACC的最低有效位(LSB),最高有效位(MSB)移入进位位。 操作: (PC)+1PC; ,状态位:不受SXM位影响,结果影响C。,【例4.39】 ROL ;指令执行过程如图4.38所示,图4.38 指令执行过程示意, ROR指令 句法:ROR 功能:将ACC的值连同进位位C循环右移一位,进位位移入ACC的MSB,ACC的LSB移入进位位。 操作: (PC)+1PC; ,状态位:不受SXM位影响,结果影响C。 【例4.40】 ROR ;指令执行过程如图4.39所示,图4.39 指令执行过程示意, SACH指令 句法:SACH dma,shift2 ;直接寻址 SACH ind,shift2,ARn ;间接寻址 功能:将ACC的值送到输出移位寄存器后左移07位,移位时低位补0,高位丢失(ACC保持原值不变),然后将移位后的高16位数值送到数据存储单元。 操作: (PC)+1PC。 (ACC)2shift2)的高16位数据存储单元。 状态位:状态位不受SXM位影响。 【例4.41】SACH 3Dh,3 ;(DP=6:0地址0300h ;037Fh,左移3位)直接 ;寻址过程如图4.40所示,图4.40 指令执行过程示意,【例4.42】 SACH *-,0,AR3 ;(不移位)间接寻址 ;过程如图4.41所示,图4.41 指令执行过程示意, SACL指令 句法:SACL dma,shift2 ;直接寻址 SACL ind,shift2,ARn ;间接寻址 功能:将ACC的值送到输出移位寄存器后左移07位,移位时低位补0,高位丢失(ACC保持原值不变),然后将移位后的低16位数值送到数据存储单元。 操作: (PC)+1PC。 (ACC)2shift2)的低16位数据存储单元。 状态位:不受SXM位影响。 【例4.43】 SACL 12,3 ;(DP=4:0地址0200h ;027Fh,左移3位)直接寻址过程如图4.42所示,图4.42 指令执行过程示意,【例4.44】 SACL *+ ,0,AR7 ;(不移位)间接寻址 ;过程如图4.43所示,图4.43 指令执行过程示意, SFL指令 句法:SFL 功能:将ACC的32位数值左移1位,ACC的最低位填0,最高位移入进位位C。 操作: (PC)+1PC。 (ACC(31)C;(ACC(300)ACC(311); 0ACC(0)。 状态:影响C,不受SXM位的影响。 【例4.45】 SFL ;指令执行过程如图4.44所示,图4.44 指令执行过程示意, SFR指令 句法:SFR 功能:将ACC的32位数右移1位,最低位移入进位位C。 若SXM = 0,则指令进行逻辑右移,最高位填0。 若SXM = 1,则指令进行算术右移,最高位(符号位)不变。 操作: (PC)+1PC。 若SXM = 0,逻辑右移1位。,若SXM=1,算术右移1位。,状态位:受SXM位影响,结果影响C。 【例4.46】 SFR ;(SXM = 0;无符号扩展) ACC ;逻辑右移一位执行过程 ;如图4.45所示,图4.45 指令执行过程示意,【例4.47】 SFR ;(SXM = 1;符号扩展)ACC算术右移一位,执行过程如图4.46所示,图4.46 指令执行过程示意, SUB指令 句法:SUB dma ,shift ;直接寻址,左移015位,默认0位 SUB dma,16 ;直接寻址,左移16位 SUB ind , shift, ARn ;间接寻址, 左移015位 SUB ind,16,ARn ;间接寻址,左移16位 SUB # k ;短立即数寻址 SUB #lk ,shift ;长立即数寻址,左移015位 功能:当使用短立即数寻址时,ACC的值减去8位正常数,减法不受SXM的影响,并且该指令不能重复执行。,当使用直接、间接和长立即数寻址时,被寻址的数据存储单元的值或16位常数进行左移,移位时低位填0,高位用符号扩展(SXM = 1)或填0(SXM = 0),然后将ACC的值减去移位后的值,结果存入ACC。 如果减法结果产生借位,则C = 0。如果减法结果没有借位,当移位次数为015位时,C = 1;当移位次数为16位时,C保持不变。 操作: (PC)+1PC。 直接或间接寻址,左移015位 (ACC)-(数据存储器地址)2shift)ACC; 直接或间接寻址,左移16位,(ACC)(数据存储器地址)216)ACC; 短立即寻址 (ACC)kACC; 长立即寻址,左移015位 (ACC)lk2shiftACC。 状态位:指令影响C和OV状态位。在直接、间接、长立即寻址方式下,指令受SXM和OVM的影响,在短立即寻址方式下,指令受OVM的影响。 【例4.48】 SUB 50h ;(DP=6; 地址300h37Fh; ;SXM=0, 不移位)直接寻址过 ;程如图4.47所示,图4.47 指令执行过程示意,【例4.49】 SUB *+,2,AR0 ;(左移2位,SXM=0) ;间接寻址过程如图 ;4.48所示,图4.48 指令执行过程示意,【例4.50】 SUB #9 ;(SXM = 1;符号扩展模式)短 ;立即数寻址过程如图4.49所示,图4.49 指令执行过程示意,【例4.51】 SUB #0DFFh,4 ;(左移4位,SXM=0) ;长立即数寻址过程如 ;图4.50所示,图4.50 指令执行过程示意, SUBB指令 句法:SUBB dma ;直接寻址 SUBB ind ,ARn ;间接寻址 功能:将ACC的值减去被寻址的数据存储单元的值及进位位C的逻辑反值。减法有借位时,C = 0;没有借位时,C = 1。 该指令可实现多精度减法运算。 操作: (PC)+1PC。 (ACC)-(数据存储器地址)-(C的逻辑反)ACC。 状态位:受OVM位影响,不受SXM位影响;结果影响C和OV位。,【例4.52】SUBB 05h ;(DP=6:0地址0300h037Fh) ;指令执行过程如图4.51所示,图4.51 指令执行过程示意,【例4.53】 SUBB * ;指令执行过程如图4.52所示 在例4.52中,初始时C为0,可以认为它是前面减法产生的借位。本指令进行的运算是661=1,又一次产生借位。在例4.53中,前边没有借位(C=1),本指令执行的结果也不产生借位,所以C仍为1。,图4.52 指令执行过程示意, SUBC指令 句法: SUBC dma ;直接寻址 SUBC ind ,ARn ;间接寻址 功能: 当ACC的值和被寻址的数据存储单元的值均为正数时,SUBC做减法运算,将ACC的值减去该数据单元的值。若相减结果大于或等于0,则结果乘2并加1送ACC;若减法结果小于0,则将原ACC的值乘以2送ACC。, 重复执行16次SUBC指令,可实现16位正数的除法运算,方法如下:将正的16位被除数放在ACC的低16位,ACC的高16位清0;正的16位除数放在被寻址的数据存储单元中,执行 SUBC指令16次,最后一次SUBC指令完成后,所得的商放在ACC的低16位中,余数放在ACC的高16位中。 操作:若(ACC)0,且(数据存储地址)0,则 (PC)+1PC。 (ACC)(数据存储器地址)215ALU输出; 若ALU输出0,则(ALU输出)2+1ACC; 否则(ACC)2ACC。 状态位:影响C和OV位。,注意: 若ACC和/或数据单元的值为负数,则不能用SUBC指令实现除法。 SUBC指令影响OV位,但不受OVM位的影响,执行该指令时ACC不会因正溢或负溢而饱和。 进位位C按正常方式变化,若相减结果产生借位,则C = 0;反之,C = 1。 【例 4.54】 SUBC 8 ;(DP = 6)指令执行过程如图 ;4.53所示,图4.53 指令执行过程示意,【例 4.55】 RPT #15 SUBC * ;指令执行过程如 ;图4.54所示,图4.54 指令执行过程示意, SUBS指令 句法:SUBS dma ;直接寻址 SUBS ind ,ARn ;间接寻址 功能:ACC的值减去被寻址的数据存储单元的值,无论SXM为何值,均不进行符号扩展,数据存储单元的值都作为无符号数处理。ACC的值仍为有符号数。 当SXM=0,且移位次数为0时,SUBS等效于SUB指令。 若相减结果产生借位,则C=0;反之,C=1。 操作: (PC)+1PC。 (ACC)(数据存储器地址)ACC。 状态位:受OVM位影响,不受SXM位影响,结果影响OV和C位。,【例4.56】SUBS 5 ;(DP=6,SXM=1)指令执行过 ;程如图4.55所示,图4.55 指令执行过程示意,【例4.57】SUBS * ;(SXM=1)指令执行过程如图 ;4.56所示,图4.56 指令执行过程示意, SUBT指令 句法:SUBT dma ;直接寻址 SUBT ind ,ARn ;间接寻址 功能:ACC减去左移后的数据存储单元的值,结果送ACC。左移位数由暂存寄存器TREG的低4位指定,即可左移015位。移位时低位填0,高位补0(SXM=0)或做符号扩展(SXM=1)。若减法结果产生借位,则C=0;反之,C=1。 操作: (PC)+1PC。 (ACC)(数据存储器地址)2TREG(30)ACC。,若SXM=0,则(数据存储器地址)不做符号扩展; 若SXM=1,则(数据存储器地址)进行符号扩展。 状态位:受SXM和OVM位影响,结果影响OV和C位。 【例4.58】 SUBT 8h ;(DP=6:300h37Fh) ;指令执行过程如图4.57所示,图4.57 指令执行过程示意,【例4.59】 SUBT * ;指令执行过程如图4.58所示,图4.58 指令执行过程示意, XOR指令 句法:XOR dma ;直接寻址 XOR ind ,ARn ;间接寻址 XOR # lk,Shift ;长立即寻址,左移015位 XOR #lk,16 ;长立即寻址,左移16位 功能:直接或间接寻址时,将ACC的低16位和被寻址的数据存储单元的值做“逻辑异或”操作,结果存入ACC的低16位,ACC的高16位保持不变; 立即寻址时,长立即数左移,高位和低位均填0,然后和ACC中的32位数做“逻辑异或”操作。,操作: (PC)+1PC。 直接或间接寻址 (ACC(150)XOR(数据存储器地址) ACC(150) (ACC(3116)ACC(3116); 或长立即寻址,左移015位 (ACC(310)XOR(lk2shift)ACC(310); 或长立即寻址,左移16位 (ACC(310)XOR(lk216)ACC(310)。 【例4.60】 XOR 5h ;(DP=6:地址300h37Fh)指 ;令执行过程如图4.59所示,图4.59 指令执行过程示意,【例4.61】 XOR *+,AR7 ;指令执行过程如图4.60 ;所示,图4.60 指令执行过程示意,【例4.62】 XOR #5A5Ah,4 ;(数据先左移4位,再 ;与ACC异或) 指令执 ;行过程如图4.61所示,图4.61 指令执行过程示意, ZALR指令 句法:ZALR dma ;直接寻址 ZALR ind,ARn ;间接寻址 功能:将数据存储单元的值送到ACC的高16位,ACC的低15位(D14D0)清0,D15位置1。 操作: (PC)+1PC。 (数据存储器地址)ACC(3116); 8000hACC(150)。 【例4.63】 ZALR 08h ;(DP=6;地址:300h37Fh) ;指令执行过程如图4.62所示,图4.62 指令执行过程示意,【例4.64】 ZALR *,AR6 ;指令执行过程如图 ;4.63所示,图4.63 指令执行过程示意,4.3.2 辅助寄存器和数据页面指针指令 辅助寄存器和数据页面指针指令集包括ADRK、BANZ、CMPR、LAR、MAR、SAR、SBRK等7条指令。 ADRK指令 句法:ADRK # k ;短立即寻址 功能:将8位立即数按右对齐方式与当前辅助寄存器AR的值相加,结果保存至当前AR。立即数按正整数处理。 操作: PC+1PC。 (当前AR)+8位立即数当前AR。 【例4.65】 ADRK # 3FH ;指令执行过程如图4.64 ;所示,图4.64 指令执行过程示意, BANZ指令 句法:BANZ pma,ind,Arn 功能:如果当前AR的值不为0,则程序转移到由pma指定的程序存储器地址处继续执行;如果当前AR的值为0,则顺序执行下一条指令;按指令要求修改当前AR的值。 操作: 若(当前AR)0,则pmaPC;反之,则(PC)+2PC。 按指令要求的方式修改当前AR和ARP的值,若不指定修改当前AR的方式,则当前AR默认减1(若将当前AR作为循环计数器,则可执行(当前AR)+1次循环)。, CMPR指令 句法:CMPR CM 功能:将当前AR的值按CM指定方式与AR0的值进行比较:若CM = 0,则比较是否(当前AR) = (ARO);若CM = 1,则比较是否(当前AR) (AR0);若CM = 3,则比较是否(当前AR)(AR0)。 若条件为真,则ST1中的TC位置1;反之,则TC位清0。 操作: (PC)+1PC。 完成由CM值(03)指定的当前AR和AR0的比 较,若为真,则1TC;反之,则0TC。,【例4.66】CMPR 1 ;(当前AR)(AR0)? 指令执行 ;过程如图4.65所示,图4.65 指令执行过程示意, LAR指令 句法:LAR ARx,dma ;直接寻址 LAR ARx,ind ,ARn ;间接寻址 LAR ARx,#k ;短立即寻址 LAR ARx,#lk ;长立即寻址 功能:将被寻址的数据存储单元中的值或8位、16位常数送到指令指定的辅助寄存器ARx中。不论SXM为何值,所指定的常数均为无符号整数。 操作: (PC)+1PC。 直接或间接寻址:(数据存储器地址)ARx; 或短立即寻址:kARx(ARx的高位填0);,或长立即寻址:lkARx。 注意:若指令使用间接寻址,且指令指定的AR与ARP所指定的AR相同,那么LAR指令仅对该AR进行装载操作,而不对其进行增或减量修改。 【例 4.67】 LAR AR6,#03FFFh ;指令执行过程如 ;图4.66所示,图4.66 指令执行过程示意,【例4.68】 LAR AR5, * ;指令执行过程如 ;图4.67所示,图4.67 指令执行过程示意,【例4.69】 LAR AR5,#7Fh ;指令执行过程如 ;图4.68所示,图4.68 指令执行过程示意,【例4.70】LAR AR5,8h ;(DP=6; 地址0300h037Fh) ;指令执行过程如图4.69,图4.69 指令执行过程示意, MAR指令 句法:MAR dma ;直接寻址 MAR ind ,ARn ;间接寻址 功能:在直接寻址方式下,MAR指令的作用同NOP指令一样,不执行任何操作。在间接寻址方式下,按指令指定的方式修改辅助寄存器的值和 ARP 的值,并将原来的ARP的值复制到状态寄存器ST1的ARB字段中。 操作: (PC) +1PC。 按指令指定的方式修改当前AR和ARP的值(只有在间接寻 址方式下才执行此操作)。 状态位:直接寻址方式不影响状态位,间接寻址方式影响ARP和ARB。 【例4.71】 MAR *,AR5 ;把5加载到ARP,指令执行过程如 ;图4.70所示,图4.70 指令执行过程示意,【例4.72】MAR * +,AR5 ;当前辅助寄存器(AR1) ;加1,把5加载到ARP。 ;指令执行过程如图4.71 ;所示,图4.71 指令执行过程示意, SAR指令 句法:SAR ARx,dma ;直接寻址 SAR ARx,ind,ARn ;间接寻址 功能:将指定的辅助寄存器ARx的值装载到被寻址的数据存储单元,然后再按指令指定的方式修改当前AR的值和ARP的值(间接寻址时)。 操作: (PC)+1PC。 (ARx)数据存储器地址。 若为间接寻址,则按指定方式修改当前AR和 ARP的值。 【例4.73】 SAR AR0,8h ;(DP=6:0300h037Fh) ;指令执行过程如图4.72,图4.72 指令执行过程示意,【例4.74】SAR AR0,*+ ;指令执行过程如图4.73 ;所示,图4.73 指令执行过程示意, SBRK指令 句法:SBRK # k ;短立即寻址 功能:将当前AR的值减去8位正整数k,结果保存在当前AR中。 操作: (PC)+1PC。 (当前AR)k当前AR。 【例4.75】 SBRK #07Fh ;指令执行过程如图4.74 ;所示,图4.74 指令执行过程示意,4.3.3 TREG、PREG和乘法指令 TREG、PREG和乘法指令集包括 LT、LTA、LTD、LTP、LTS、SPM、LPH、SPH、SPL、PAC、APAC、SPAC、MAC、MACD、MPY、MPYA、MPYS、MPYU、SQRA、SQRS等20条指令。 LT指令 句法:LT dma ;直接寻址 LT ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到TREG。 操作: (PC)+1PC。 (数据存储器地址)TREG。,【例4.76】 LT 4 ;(DP=6:地址 0300h037Fh) ;指令执行过程如图4.75所示,图4.75 指令执行过程示意,【例4.77】 LT *,AR3 ;指令执行过程如图 ;4.76所示,图4.76 指令执行过程示意, LTA指令 句法:LTA dma ;直接寻址 LTA ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到TREG;按PM状态位指定的方式对PREG的值进行移位,并把移位后的值加到ACC,结果保存在ACC中。若累加结果有进位,则 C = 1;否则,C = 0。 操作: (PC)+1PC。 (数据存储器地址)TREG。 (ACC)+移位后的(PREG)ACC。 状态位:受PM和OVM位影响,结果影响C和OV位。,【例4.78】LTA 8 ;(DP=6:地址300h37Fh; ;PM=0,乘积不移位)指令执行 ;过程如图4.77所示,图4.77 指令执行过程示意,【例4.79】 LTA *,AR2 ;(PM=0,乘积不移位)指令 ;执行过程如图4.78所示,图4.78 指令执行过程示意, LTD指令 句法:LTD dma ;直接寻址 LTD ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到TREG和该地址加1的单元中;按PM状态位指定的方式对PREG的值进行移位,并把移位后的值加到ACC,结果保存在ACC中。若累加结果有进位,则C = 1;否则,C = 0。 操作: (PC)+1PC。 (数据存储器地址)TREG。 (数据存储器地址)数据存储器地址+1。 (ACC)+移位后的(PREG)ACC。,状态位:受PM和OVM位影响,结果影响C和OV位。 注意: 该指令仅适用于所有配置为数据存储器的片内RAM,且可以跨越相邻块的边界连续进行数据移动。 如果将LTD指令用于外部数据存储器,则其等效于LTA指令,操作的数据移动无效。 【例4.80】LTD 8 ;(DP=6:地址0300h037Fh; ;PM=0,乘积不移位) ;指令执行过程如图4.79所示,图4.79 指令执行过程示意,【例4.81】 LTD *,AR6 ;(PM=0,乘积不移位) ;指令执行过程如图4.80所示 LTP指令 句法:LTP dma ;直接寻址 LTP ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到TREG,并将PREG的值按PM状态位指定的方式移位后存放至ACC。 操作: (PC)+1PC。 (数据存储器地址)TREG。 移位后的(PREG)ACC。 状态位:受PM位影响。,图4.80 指令执行过程示意,【例4.82】 LTP 8 ;(DP=6;地址0300h037Fh; ;PM=0,乘积不移位)指令 ;执行过程如图4.81所示,图4.81 指令执行过程示意,【例4.83】 LTP *,AR4 ;(PM=0,乘积不移位) ;指令执行过程如图4.82,图4.82 指令执行过程示意, LTS指令 句法:LTS dma ;直接寻址 LTS ind ,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到TREG,再用ACC的值减去移位后(按PM状态位指定的方式)的PREG的值,结果保存在ACC中。若相减的结果产生借位,则C=0;否则,C=1。 操作: (PC)+1PC。 (数据存储器地址)TREG。 (ACC)移位后的(PREG)ACC。 状态位:受PM和OVM位影响,影响C和OV位。,【例4.84】LTS 12 ;(DP=16:地址0800h087Fh; ;PM=0,乘积不移位) ;指令执行过程如图4.83所示,图4.83 指令执行过程示意,【例4.85】 LTS *,AR5 ;(PM=0,乘积不移位) ;指令执行过程如图4.84所示,图4.84 指令执行过程示意, SPM指令 句法:SPM constant 功能:将数值constant加载到乘积移位模式PM位(状态寄存器STI的D1和D0位),用以控制PREG输出时的移位模式。PM值与其控制的移位模式如表4.2所示。 操作: (PC)+1PC。 常数(03)乘积移位模式PM位。 状态位:影响PM位。 注意:左移使小数运算时乘积对齐,右移6位允许做128次乘累加而不会发生溢出。,【例4.86】 SPM 2 ;将乘积移位模式设置为 ;2(PM=10),此后PREG的输 ;出将左移4位 LPH指令 句法:LPH dma ;直接寻址 LPH ind,ARn ;间接寻址 功能:将被寻址的数据存储单元的值加载到PREG的高16位,PREG的低16位保持不变。在中断和子程序调用时,可用LPH指令恢复PREG的高位字。 操作: (PC)+1PC。 (数据存储器地址)PREG(3116)。,【例4.87】 LPH 0 ;(DP=6)指令执行过程如图4.85 ;所示,图4.85 指令执行过程示意,【例4.88】 LPH *,AR2 ;指令执行过程如图4.86 ;所示,图4.86 指令执行过程示意, SPH指令 句法:SPH dma ;直接寻址 SPH ind,ARn ;间接寻址 功能:将PREG的值按PM状态位指定的方式移位,再把移位后的高16位值加载到指定的数据存储单元。PREG和ACC中的值保持不变。 操作: (PC)+1PC。 移位后的(PREG高16 位)(数据存储器地址)。 状态位:受PM位的影响。 【例4.89】 SPH 5 ;(DP=6:地址0300h037Fh; ; PM=0, 乘积不移位) 指令执行过程如图4.87所示,图4.87 指令执行过程示意,【例4.90】SPH *,AR7 ;(PM=0,乘积不移位)指令 ;执行过程如图4.88所示,图4.88 指令执行过程示意, SPL指令 句法:SPL dma ;直接寻址 SPL ind,ARn ;间接寻址 功能:将PREG的值按PM状态位指定的方式移位,再把移位后的低16位值加载到指定的数据存储单元。PREG和ACC中的值保持不变。 操作: (PC)+1PC。 移位后的 (PREG低16 位)(数据存储器地址)。 状态位:受PM位影响。 【例4.91】 SPL 8 ;(DP=6: 地址0300h037Fh; ;PM=1,乘积左移1位) 指令执行过程如图4.89所示,图4.89 指令执行过程示意,【例4.92】 SPL *,AR0 ;(PM=0,乘积不移位) ;指令执行过程如图4.90所示,图4.90 指令执行过程示意, PAC指令 句法:PAC 功能:按PM状态位指定的方式将PREG的值移位,并把移位后的结果保存至ACC。 操作: (PC)+1PC。 移位后的(PREG)ACC。 状态位:受PM位影响。 【例4.93】 PAC ;(PM=0,乘积不移位)指令执 ;行过程如图4.91所示,图4.91 指令执行过程示意, APAC指令 句法:APAC 功能:将ACC的值与移位后的PREG的值相加,结果保存在ACC中。 操作: (PC)+1PC。 (ACC)+移位后的(PREG)ACC。 状态位:受PM和OVM状态位影响,不受SXM位影响,结果影响C和OV状态位。 【例4.94】 APAC ;(PM=01,乘积左移1位)指令 ;执行过程如图4.92所示,图4.92 指令执行过程示意, SPAC指令 句法:SPAC 功能:将ACC的值减去按PM方式移位后的PREG的值,结果保存在ACC中。 操作: (PC)+1PC。 (ACC)-移位后的(PREG)ACC。 状态位:受PM和OVM位影响,结果影响C和OV位。 【例4.95】 SPAC ;(PM=0,乘积不移位)指令执 ;行过程如图4.93所示,图4.93 指令执行过程示意, MAC指令 句法:MAC pma,dma ;直接寻址 MAC pma,ind ,ARn ;间接寻址 功能: 按PM状态位指定的方式把先前的乘积(PREG的值)移位,再与ACC的值相加,结果保存在ACC中。若相加结果产生进位,则C = 1;反之,C = 0。 将指定的数据存储单元的值加载到TREG。 将TREG中数据存储单元的值乘以指定的程序存储器地址中的值。, 当重复执行MAC指令时,每重复一次,包含在PC中的程序存储器地址自动加1,因此可以访问程序存储器中的一串操作数。若使用间接寻址指定数据存储器地址,则每次重复时就可以访问新的数据存储器地址。若使用直接寻址,指定的数据存储器地址是常数,重复时不对其进行修改。 重复执行MAC指令可对两组数据(或一组数据与一个常数)进行乘-累加运算。重复时,RPT流水线一旦启动,它就变成了单周期指令。 操作: (PC)+1PC。 (PC)MSTACK。 程序存储器地址PC。, (ACC)+移位后的(PREG)ACC。 (数据存储器地址)TREG。 (TREG) (PC)PREG。 (MSTACK)PC。 状态位:受PM和OVM位影响,结果影响C和OV位。 注意:MAC指令所寻址的数据和程序存储单元可以是任意非保留的片内或片外存储单元。 【例4.96】MAC 0FF40h,08h ;(DP=6,PM=0, ;CNF=1)指令执行 ;过程如图4.94所示,图4.94 指令执行过程示意,【例4.97】 MAC 0FF40h,*,AR2 ;(PM=0,CNF=1) ;指令执行过程如 ;图4.95所示,图4.95 指令执行过程示意, MACD指令 句法:MACD pma,dma ;直接寻址 MACD pma,ind,ARn ;间接寻址 功能:若被寻址的数据存储器是片内RAM,则MACD指令在MAC指令功能的基础上多一项数据移动功能;若MACD指令寻址的是存储器映射寄存器或外部数据存储器,则MACD等效于MAC指令。 操作: (PC)+1PC。 (PC)MSTACK。 程序存储器地址PC。 (ACC)+移位后的(PREG) ACC。, (数据存储器地址)TREG。 (数据存储器地址)数据存储器地址+1。 (TREG) (PC)PREG。 (MSTACK)P

温馨提示

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

评论

0/150

提交评论