C24x DSP指令系统所用符号的说明见表3-11。
表3-11 指令系统符号说明
为了便于学习和查阅方便,下面按英文字母顺序介绍汇编指令的语法与功能,并对一些有代表性的指令举例说明。更详细的资料,请参考英文手册。
(1)ABS:累加器求绝对值(Abso lute Va lue o f Accumula tor)
语法及功能:
说明:求累加器的绝对值,进位位C清零。指令受OVM标志位的影响,执行结果影响C和OV。ACC=80000000 h是一种特殊情况:若OVM=1,则80000000 h的绝对值为7FFF FFFFh;若OVM=0,则80000000 h的绝对值为80000000 h。两种情况下,OV位均置1。
(2)ADD:加法指令(Add to Ac cumulator)
语法及功能:
说明:将被寻址的数据存储单元的内容或立即数左移0~16位后加到累加器,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令影响进位位C和溢出位OV。一般情况下,产生进位C=1,不产生进位C=0。当左移16位作加法时,如果加法结果有进位,则C=1。结果无进位,则C不变。指令受SXM和OVM的影响。但短立即数寻址时,仅受OVM影响,不受SXM影响。
(3)ADDC:带进位的累加器加(Add to Accumula tor with Carry)语法及功能:
说明:将被寻址的数据存储单元的内容及进位位C加到累加器,符号不扩展。该指令可实现多精度运算。指令受OVM的影响,影响C和OV。
(4)ADDS:抑制符号扩展的累加器加(Add to Accumula tor With Sig n Extension Sup⁃pressed)
语法及功能:
说明:被寻址的数据存储单元的内容与累加器的内容(高位填0)相加,结果送累加器。当SXM=0,移位次数为0时,ADD指令与ADDS的结果相同。
(5)ADDT:T寄存器指定移位次数的累加器加(Add to Ac cumula tor with Tempora ry reg⁃ister that specifie s left shift time s)
语法及功能:
说明:将被寻址的数据存储单元的内容左移0~15位(由T的低4位确定)后加到累加器,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令影响C和OV,如果加法结果有进位,则C=1。结果无进位,则C不变。指令受SXM和OVM的影响。
(6)ADRK:辅助寄存器加短立即数(Add Short-Immediate Value to Auxiliary Register)
语法及功能:
说明:8位短立即数加到当前辅助寄存器,当前辅助寄存器由ARP确定。对辅助寄存器的任何算术运算都是无符号的。
(7)AND:和累加器进行逻辑与操作(And with Ac cumulator)
语法及功能:
说明:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储单元的内容进行逻辑与操作,结果送累加器低16位,累加器高16位清零。如果使用长立即数寻址,则16位的长立即数左移0~16位(移位时低位、高位均补0)后和32位的累加器相与,结果送累加器。
(8)APAC:乘积寄存器P加到累加器ACC(Add Pro duct Register to Accumula tor)语法及功能:
说明:将累加器的内容与移位后的乘积寄存器P的内容相加,结果送累加器。P的移位方式由状态寄存器ST1的PM位的值确定。
(9)B:无条件跳转(Branch Unconditio nally)
语法及功能:
说明:程序无条件转移到指令指定的程序存储器地址(Program Memory Addre ss,pma),并按指令要求修该当前辅助寄存器和ARP的内容。
(10)BACC:跳转到ACCL确定的地址(Branch to Location Specifie d by Accumula tor)语法及功能:
说明:程序无条件转移到累加器的低16位ACCL指定的地址执行。
(11)BANZ:当前辅助寄存器非0跳转(Branch on Auxilia ry Register Not Zero)语法及功能:
说明:如果当前辅助寄存器的内容不为0,则程序转移到pma指定的程序地址处继续执行。如果当前AR为0,则执行下一条指令。按要求修改当前AR。若不指定当前AR的修改,则当前AR减1。
(12)BCND:条件跳转(Branch Conditionally)语法及功能:
说明:如果指令中指定的条件都满足,则程序转移到指令给出的程序存储器地址(pma),只要有一个条件不满足就顺序执行下面的指令。其中条件cond的说明见表3-12。
表3-12 条件cond的说明
例如:BCND PGM191,LEQ,C;若ACC≤0且进位位C=1,则转到PGM191,否则往下顺序执行。
(13)BIT:位测试(Test Bit)
语法及功能:
说明:把数据存储单元中被指定位(即测试位)的值送到状态寄存器ST1中的TC位,即如果测试该位为1,则TC就置1。指令中bit code的值与数据存储单元被指定的测试位bit number(位号从右向左从0开始编号0~15)的关系是:
(14)BITT:T寄存器指定位测试(Test Bit Specified by Re gister T)语法及功能:测试T指定的直接或间接寻址存储单元中的位。
说明:把数据存储单元中被指定位(即测试位)的值送到状态寄存器ST1中的TC位,即如果测试该位为1,则TC就置1。测试位bit number由T寄存器低4位确定,二者的关系是:
(15)BLDD:数据存储器之间的块移动(Block Move From Data Memory to Data Memory)
语法及功能:
说明:该指令实现数据存储器到数据存储器的块移动,第一个数指定源地址,第二个数指定目的地址。一旦启动了流水线,它就成为单周期指令。
(16)BLPD:程序存储器到数据存储器的块移动(Block Move from Program Memory to Data Memory)
语法及功能:
说明:该指令实现程序存储器到数据存储器的块移动,第一个数指定源地址,第二个数指定目的地址。一旦启动了流水线,它就成为单周期指令。
(17)CALA:调用累加器ACC低字指定的子程序(Call Subro utine a t Location Specifie d by ACCL)
语法及功能:
说明:无条件调用由累加器低16位指定的子程序。利用该指令并根据计算结果调用子程序。
(18)CALL:无条件调用子程序(Call Unconditionally)
语法及功能:
说明:无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅助寄存器和ARP的内容。
(19)CC:条件调用(Call Conditionally)语法及功能:
说明:如果指令中指定的条件都满足,则调用pma指定的子程序。只要有一个条件不满足就顺序执行下面的指令。其中的条件cond见BCND指令的说明。
(20)CLRC:控制位清零(Clear Control Bit)语法及功能:
说明:清除状态寄存器ST1和ST0的C、CNF、INTM、OVM、SXM、TC、XF位。
(21)CMPL:ACC取反(Complement Accumula tor)语法及功能:
说明:将累加器逻辑按位逻辑取反。
(22)CMPR:当前辅助寄存器AR与AR0比较(Compare Auxilia ry Register With AR0)语法及功能:
说明:根据CM值指定的比较条件,比较当前辅助寄存器AR与AR0的大小,比较结果存入状态寄存器ST1的TC位。如果比较条件成立,TC=1,否则TC=0。注意,比较时,辅助寄存器中的数以无符号数的形式参与运算。表3-13给出了CM值所对应的比较条件。
表3-13 CMPR指令的比较条件
(23)DMOV:数据存储器的数据复制到下一个单元(Data Move in Data Memory)语法及功能:
说明:将指定的数据存储器单元复制到下一个较高地址的数据存储器单元中。该指令仅对片内的DARAM有效,对片外的数据存储器单元无效。该指令常用于数字滤波中的单位延迟。受标志位影响。
(24)IDLE:空闲等待中断(Idle Until Inte rrupt)语法及功能:
说明:程序停止执行,进入低功耗模式,直到发生硬件复位、非屏蔽硬件中断等。
(25)IN:从I/O端口读入数据到数据存储单元(Input Da ta from Port)语法及功能:
说明:指令用于从I/O端口将数据读入数据存储单元。指令中的PA是16位的端口或I/O映射寄存器的地址。
(26)INTR:软件中断(Software Inte rrupt)语法及功能:
说明:执行软件中断指令,使程序转移到k对应的中断矢量单元。
(27)LACC:带移位的累加器ACC装载(Load Accumula tor with left shift time s)语法及功能:
说明:将被寻址的数据存储单元的内容或立即数左移0~16位后送到累加器,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令受SXM的影响。
(28)LACL:装载累加器低字ACCL,高字ACCH清零(Load Accumula tor low word and Accumula tor hig h word to be c leared)
语法及功能:
说明:指定的数据存储单元的内容或一个短立即数装入到累加器的低16位,累加器的高16位清零。操作数看作无符号数,指令不受SXM的影响,即不进行符号扩展。操作数为8位短立即数时,其他高位为0。
(29)LACT:由T指定移位次数的累加器ACC装载(Load Accumula tor with Tempora ry Register That Specifie s Left Shift Time s)语法及功能:
说明:将被寻址的数据存储单元的内容左移0~15位(由T的低4位确定)后送到累加器,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令受SXM的影响。
(30)LAR:装载辅助寄存器(Load Auxilia ry Register)语法及功能:
说明:指定的数据存储单元的内容或一个8/16位立即数装入到辅助寄存器AR0~AR7中。操作数被看作无符号数,指令不受SXM的影响。
(31)LDP:装载数据页指针DP(Load Data Page Pointe r)语法及功能:
说明:指定的数据存储单元的内容的低9位或一个9位立即数装入到数据页指针DP(在状态寄存器ST0)中。DP也可以LST由指令装载。DP用于直接寻址,9位的DP和7位的dma值组成一个16位字,确定数据存储器单元地址。
(32)LPH:装载乘积寄存器高字PH(Load Product Register High Word)语法及功能:
说明:指定的数据存储单元的内容装入到装载乘积寄存器P的高16位,其低16位不变。
(33)LST:装载状态寄存器ST0、ST1(Lo ad Sta tus Re gister)语法及功能:
说明:指定的数据存储单元的内容装入到状态寄存器ST0或ST1。m=0时,装入ST0,m=1时,装入ST1。指令影响ARB、ARP、OV、OVM、DP、CNF、TC、SXM、C、XF和PM状态位,但不影响INTM位。需要注意如下几点:
●LST#0指令不影响ST1中的ARB位,即使在ST0装入新的ARP值。
●LST#1指令执行时,装入到ARB的值同时装入到ST0中的ARP值。
●在间接寻址中,如果操作数中指定下一个AR,这个AR将被忽略。ARP用指定的数据存储单元的内容的高3位装入。
●状态寄存器中的保留位读出值为1,对这些位进行写操作不起作用。
(34)LT:装载T寄存器(Load T)语法及功能:
说明:指定的数据存储单元的内容装入到暂存寄存器T。
(35)LTA:装载T寄存器并累加乘积P(Load T and Accumula te Previous Product)语法及功能:
说明:指定的数据存储单元的内容装入到暂存寄存器T,乘积寄存器P的内容根据PM状态位移位后加到累加器ACC。指令受PM和OVM的影响,结果影响C和OV位。如果累加结果产生进位,则C=1,否则C=0。
(36)LTD:装载T寄存器、累加前次乘积并移动数据(Load T,Accumulate Previous Product,and Move Data)
语法及功能:
说明:指定的数据存储单元的内容装载到暂存寄存器T,乘积寄存器P的内容根据PM状态位移位后加到累加器ACC。指定的数据存储单元的内容复制到下一个存储单元。指令受PM和OVM的影响,结果影响C和OV位。如果累加结果产生进位,则C=1,否则C=0。指令中的移动数据功能仅对片内的RAM有效,对片外的数据存储器单元和存储器映射寄存器无效。如果该指令用于片外的数据存储器单元的操作,则该指令等同于LTA指令,移动数据无效。
(37)LTP:装载T寄存器并将乘积P送到ACC(Load T and Store P in Accumula tor)语法及功能:
说明:指定的数据存储单元的内容装入到暂存寄存器T,乘积寄存器P的内容根据PM状态位移位后送到累加器ACC。指令受PM标志位的影响。
(38)LTS:装载T寄存器并减去P寄存器(Load T and Subtra ct Previous Product)语法及功能:
说明:指定的数据存储单元的内容装入到暂存寄存器T,累加器ACC减去乘积寄存器P的内容根据PM状态位移位后的值。指令受PM和OVM的影响,结果影响C和OV位。如果运算结果产生借位,则C=0,否则C=1。
(39)MAC:乘且累加(Multip ly and Accumula te)语法及功能:
说明:累加器加上一次根据PM移位的乘积P,然后直接或间接寻址数据存储单元中的数装载到T寄存器,T寄存器乘以直接或间接寻址数据存储单元中的数,乘积送P寄存器。指令中的pma表示程序存储器地址(Program Memory Addre ss),dma表示数据存储器地址(Data Memory Addre ss)。指令受PM和OVM影响,影响C和OV。
每重复MAC指令一次,在PC中的程序存储器地址加1。因此可以访问程序存储器中的一串操作数。如果使用间接寻址指定数据存储器地址,则每次重复时就可能访问新的数据存储器地址。如果使用直接寻址,指定的数据存储器地址是常数,重复时不对其进行修改。重复执行MAC指令可对两组数据(或一组数据与一个常数)进行乘累加运算。重复时,RPT流水线一旦启动,它就变成了单周期指令。
(40)MACD:乘累加并移动数据(Multiply a nd Accumula te with Data Move)语法及功能:
说明:该指令除了MAC指令的功能外,增加了片内数据移动功能,即将指定的数据单元复制到下一个高地址单元。注意指令中的移动数据功能仅对片内RAM有效,对片外的数据存储器单元和存储器映射寄存器无效。如果该指令用于片外的数据存储器单元的操作,则该指令等同于MAC指令,移动数据无效。MACD指令可用于卷积、滤波器计算等。指令受PM和OVM影响,结果影响C和OV。RPT流水线一旦启动,它就变成了单周期指令。
(41)MAR:修改辅助寄存器(Modify Auxilia ry Register)语法及功能:
说明:对于直接寻址,该指令等同于NOP指令。对于间接寻址,指令可以修改辅助寄存器和ARP的值。MAR修改ARP后,原来的ARP复制到寄存器ST1的ARB中。
(42)MPY:乘(Multiply)语法及功能:
说明:T寄存器乘以直接、间接寻址数据存储单元中的数或13位短立即常数,乘积送P寄存器。无论SXM为何值,都进行符号扩展。(www.xing528.com)
(43)MPYA:乘且累加前次积(Multiply a nd Accumula te Previous Product)语法及功能:
说明:将前次乘积(P寄存器)按PM指定的方式移位后,与累加器相加,结果送累加器。然后将T寄存器内容乘以指定的数据存储单元的内容,结果送乘积寄存器P。指令受PM和OVM的影响,结果影响C和OV。
(44)MPYS:乘且减去前次积(Multip ly and Subtract Previous Product)语法及功能:
说明:将累加器减去前次乘积寄存器P按PM指定的方式移位后的值,结果送累加器。然后将T寄存器内容乘以指定的数据存储单元的内容,结果送乘积寄存器P。指令受PM和OVM的影响,结果影响C和OV。
(45)MPYU:无符号乘(Multiply Unsig ned)语法及功能:
说明:T寄存器中的无符号数乘以直接、间接寻址数据存储单元中的无符号数,乘积送P寄存器。指令不受SXM的影响。
(46)NEG:累加器ACC取补码(Negative Accumula tor)语法及功能:
说明:将累加器的内容取2的补码。如果累加器的值不为0,则将进位C清零。如果累加器的值为0,则将进位C置1。如果ACC=80000000h,同时该指令计算其补码时超过了累加器允许的最大值。若OVM=1,则结果为7FFF FFFFh。若OVM=0,则为8000 0000h。两种情况下,OV位均置1,指示结果溢出。指令受OVM的影响,结果影响C和OV。
(47)NMI:非屏蔽中断(Nonmaskable Inte rrupt)语法及功能:
说明:将非屏蔽中断向量地址24h送程序计数器PC,执行非屏蔽中断服务程序。与硬件非屏蔽中断NMI效果相同。
(48)NOP:空操作(No Opera tion)
语法及功能:
说明:NOP指令仅影响PC,不进行其他操作,可用于建立流水线和延时。
(49)NORM:累加器规格化(Normalize Contents of Accumulator)语法及功能:
说明:将累加器中的有符号数规格化。把定点数规格化,就是把其分成尾数和指数两部分。方法如下:
1)将累计器的最高两位D31和D30作逻辑异或,如果两位相同,说明这是两个符号位(符号扩展),则累加器左移去掉多余的符号位。
2)按指定的方式修改当前辅助寄存器(AR)以确定指数的大小。对当前辅助寄存器(AR)默认的修改方式为加1。
3)为了将累加器中的32位数规格化,可能需要多次执行NORM指令。NORM指令可与RPT指令一起使用以实现多次执行NORM指令。NORM指令对用2的补码表示的正数或负数均适用。
指令影响TC位。注意NORM指令在流水线的执行阶段完成对辅助寄存器的操作,而其他指令在流水线的译码阶段完成对辅助寄存器的操作。因此紧跟在NORM指令后的两条指令不能修改NORM指令所用的辅助寄存器的值和辅助寄存器指针(ARP)的值。
(50)OR:与累加器逻辑或运算(OR with Accumulator)语法及功能:
说明:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储单元的内容进行逻辑或操作,结果送累加器低16位,累加器高16位清零。如果使用长立即数寻址,则16位的长立即数左移0~16位(移位时低位、高位均补0)后和32位累加器相或,结果送累加器。
(51)OUT:输出数据到外部I/O端口(Output Da ta to Port)语法及功能:
说明:指令用于将指定数据存储单元的数据输出到I/O端口。指令中的PA是16位的端口或I/O映射寄存器的地址。
(52)PAC:用寄存器P装载累加器ACC(Load Accumula tor with Product Register)
语法及功能:
说明:寄存器P的内容根据PM位移位后装载到累加器ACC中。指令受PM位的影响。
(53)POP:栈顶内容弹出到累加器低字ACCL(Pop Top of Sta ck to Low Accumula tor)语法及功能:
说明:C24x DS P具有独立的8级硬件堆栈。硬件堆栈是后进先出的8个存储单元。执行该指令时,将栈顶(Top of stack,TOS)的内容弹出并送到累加器的低16位ACCL,堆栈上弹一级。累加器高16位ACCH为0。当出栈发生时,堆栈中的每个值都被复制到上一个高栈单元,栈项内容移出,栈底的两个字具有相同的值。如果连续弹出的次数多于7次(POP、POPD、RET、RETC指令均弹出堆栈),那么堆栈中的所有值都将相同。没有检查堆栈是否下溢的措施。
(54)POPD:栈顶内容弹出到数据存储器单元(Pop Top of Sta ck to Data memory)
语法及功能:
说明:栈顶的内容复制到数据存储器单元中。详细说明见POP指令。
(55)PSHD:数据存储器单元压入堆栈(Push Da ta⁃Memory Value Onto Stack)语法及功能:
说明:压入硬件堆栈时,堆栈依次向下移动一级,指定存储器单元的内容复制到栈顶。堆栈底部的值丢失。
(56)PUSH:累加器低字ACCL压入堆栈(Push Lo w Accumula tor Onto Sta ck)语法及功能:
说明:压入硬件堆栈时,堆栈依次向下移动一级,累加器低字内容复制到栈顶。堆栈底部的值丢失。注意CALL、CC、PSHD、PUSH、TRAP、INTR、NMI指令均进行压栈操作。
(57)RET:子程序返回(Return fro m Subroutine)语法及功能:
说明:将栈顶的内容复制到程序计数器(PC)中,堆栈上弹一级。子程序和中断服务程序均以RET指令结束,并返回到原来调用子程序或中断的断点处。
(58)RETC:条件返回(Return Co nditionally)语法及功能:
说明:操作数中的cond为需要满足的条件,其对应关系见BCND指令。如果指定的条件都满足,则执行RETC指令的操作。若不满足,执行RETC下面的指令。
(59)ROL:累加器循环左移(Rotate Accumulator Left)语法及功能:
说明:将累加器的内容连同进位位C循环左移一位,进位位C移入累加器的最低有效位(LSB),最高有效位(MSB)移入进位位C。
(60)ROR:累加器循环右移(Rotate Accumula tor Right)语法及功能:
说明:将累加器的内容连同进位位C循环右移一位,进位位移入累加器的最高有效位(MSB),最低有效位(LSB)移入进位位。
(61)RPT:重复执行下一条指令(Repeat Next Instructio n)语法及功能:
说明:将被寻址的数据存储单元的内容或8位立即数(假设均用N表示)装载到重复计数器(Repeat Counter,RPTC)中,RPT后面的那条指令将重复执行N+1次,且重复时是不可中断的。重复指令本身不重复。复位时RPTC清零。该指令特别适用于数据块的移动、乘且累加和规格化。
(62)SACH:带移位存储累加器高字(Store ACCH with Shift)语法及功能:
说明:将累加器的内容送到输出移位器后左移0~7位,移位时低位填0,高位丢失。shift2省略时,不移位。然后将移位后数值的高16位复制到指定的数据存储单元。注意指令执行后,累加器ACC保持不变。指令不受SXM的影响。
(63)SACL:带移位存储累加器低字(Store ACCL with Shift)语法及功能:
说明:将累加器的内容送到输出移位器后左移0~7位,移位时低位填0,高位丢失。shift2省略时,不移位。然后将移位后数值的低16位复制到指定的数据存储单元。注意指令执行后,累加器ACC保持不变。指令不受SXM的影响。
(64)SAR:存储辅助寄存器(Store Auxilia ry Register)语法及功能:
说明:将指定的辅助寄存器ARx(x=0~7)的内容复制到被寻址的数据存储单元,然后再按指令指定的方式修改当前辅助寄存器的内容和ARP的内容(间接寻址时)。
(65)SBRK:当前辅助寄存器减去短立即数(Subtra ct Short⁃Imme diate Value fro m Auxilia⁃ry Register)
语法及功能:
说明:将当前辅助寄存器的内容减去1个8位正整数k,结果存在当前辅助寄存器中。
(66)SETC:控制位置位(Set Control Bit)语法及功能:
说明:清除状态寄存器ST1和ST0的C、CNF、INTM、OVM、SXM、TC、XF位。
(67)SFL:累加器左移(Shift Ac cumula tor Left)语法及功能:
说明:将累加器的32位数值左移1位,累加器的最低位填0,最高位移入进位位C。
(68)SFR:累加器右移(Shift Accumula tor Right)语法及功能:
说明:将累加器的32位数右移1位,最低位移入进位位C。若SXM=0,指令进行逻辑右移,最高位填0。若SXM=1,指令进行算术右移,最高位(符号位)不变。
(69)SPAC:累加器减去乘积寄存器P(Subtra ct P from Accumula tor)语法及功能:
说明:将累加器的内容减去按移位方式PM移位后的乘积寄存器(P)的内容存入累加器。该指令受PM和OVM影响,影响C和OV。
(70)SPH:存储乘积寄存器高字(Store PH)语法及功能:
说明:将乘积寄存器P的内容按PM状态位指定的方式移位,把移位后的高16位数值存到被寻址的数据存储单元中。寄存器P和ACC中的内容保持不变。
(71)SPL:存储乘积寄存器低字(Store PL)语法及功能:
说明:将乘积寄存器P的内容按PM状态位指定的方式移位,把移位后的低16位数值存在被寻址的数据存储单元中。寄存器P和ACC中的内容保持不变。
(72)SPLK:长立即数送到数据存储器单元(Store Long-Immediate Value to Data Memory)语法及功能:
说明:将16位的长立即数送到直接寻址或间接寻址指定的数据存储器单元中。
(73)SPM:设置移位模式PM(Set P Output Shift Mo de)语法及功能:
说明:将常数0~3送到状态寄存器ST1的乘积移位模式PM位(ST1的D1和D0位),以控制乘积寄存器P输出时的移位模式。乘积移位模式位PM=0:没有移位,复位值、1:左移1位、2:左移4位、3:右移6位。
(74)SQRA:乘方并累加前一次乘积(Square Value a nd Accumulate Previous Product)
语法及功能:
说明:累加器加按PM方式移位后的上一次乘积P,结果存入累加器中。将直接或间接寻址数据存储单元中的数装入T寄存器,T乘以T即求平方,乘积送寄存器P。指令受OVM和PM影响,影响OV和C。
(75)SQRS:乘方并减去前一次乘积(Square Va lue a nd Subtract Previous Product)语法及功能:
说明:累加器减去按PM方式移位后的上一次乘积P,结果存入累加器中。将直接或间接寻址数据存储单元中的数装入T寄存器,T乘以T即求平方,乘积送寄存器P。指令受OVM和PM影响,影响OV和C。
(76)SST:存储状态寄存器(Sto re Sta tus Register)语法及功能:
说明:将状态寄存器ST0或ST1的值保存到指定的数据存储单元。m=0时,保存ST0;m=1时,保存ST1。直接寻址时,不论ST0中的数据页面指针DP为何值,指定的状态寄存器的内容总是被保存在0页,并由dma给出低7位地址。间接寻址时,由当前AR指定数据存储器的地址,此时状态寄存器的值可以保存到数据存储器的任何页面内。
(77)SUB:累加器减(Subtra ct from Accumula tor)语法及功能:
说明:将累加器减去被寻址的数据存储单元的内容或立即数左移0~16位后,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令影响C和OV。一般情况下,产生借位C=0,不产生借位C=1。当左移16位作减法时,如果减法结果没有借位,则C=1。结果无借位,则C不变。指令受SXM和OVM的影响。但短立即数寻址时,仅受OVM影响,不受SXM影响。
(78)SUBB:带借位的累加器减(Subtra ct from Accumula tor with Borrow)语法及功能:
说明:将累加器减去被寻址的数据存储单元的内容及进位位C的相反值,符号不扩展。该指令可实现多精度运算。指令受OVM的影响,影响C和OV。
(79)SUBC:条件减(Conditional Subtra ct)语法及功能:
说明:如果累加器的内容和被寻址的数据存储单元的内容均为正数时,SUBC用做减法运算,将累加器的内容减去数据单元的内容。若减法结果大于或等于0,则结果乘2并加1送累加器。若减法结果小于0,则将原累加器的内容乘以2送累加器。
重复执行16次SUBC条件减指令(移位相减)可实现16位正数的除法运算。方法如下:将正的16位被除数放在累加器的低16位,累加器的高16位清零。正的16位除数放在被寻址的数据存储单元中,执行SUBC指令16次,指令完成后,所得的商放在累加器的低16位,余数放在累加器的高16位。即移位相减的方法实现除法运算。
本指令影响C和OV。若累加器和数据单元的内容为负数,则不能用SUBC指令实现除法。SUBC指令不受OVM的影响,执行该指令时累加器不会因正溢或负溢而饱和。进位位C按正常方式变化,若相减结果产生借位,则C=0;若没有借位,则C=1。
(80)SUBS:抑制符号扩展的累加器减(Subtra ct from ACC with Sig n Extension Sup⁃pressed)
语法及功能:
说明:累加器的内容(高位填0)减去被寻址的数据存储单元的内容,结果送累加器。当SXM=0,移位次数为0时,SUB指令与SUBS的结果相同。
(81)SUBT:T确定移位位数的累加器减(Subtra ct from ACC with Shift Specifie d by T)
语法及功能:
说明:将累加器减去被寻址的数据存储单元的内容左移0~15位(由T的低4位确定)后,移位时低位填0,高位填0(SXM=0)或符号扩展(SXM=1)。指令影响C和OV,如果减法结果有借位,则C=0。否则C=1。指令受SXM和OVM的影响。
(82)TBLR:程序存储器表读(Table Read)
语法及功能:
说明:将累加器低字为地址的程序存储器单元中的内容复制到指定的直接或间接寻址数据存储器单元中,属于查表指令。当用RPT指令重复时,TBLR指令成为单周期指令,可传送一组数据。
(83)TBLW:程序存储器表写(Table Write)
说明:将指定的直接或间接寻址数据存储器单元的内容复制到累加器低字为地址的程序存储器单元中。当用RRT指令重复时,TBLW指令成为单周期指令,可传送一组数据。
(84)TRAP:陷阱软件中断(Trap Softwa re Inte rrupt)
语法及功能:
说明:执行陷阱软件中断,使程序转移到存储单元22 h,TRAP指令是不可屏蔽的。
(85)XOR:与累加器进行异或操作(Exclusiv e OR With Accumulator)
语法及功能:
说明:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储单元的内存进行逻辑异或操作,结果送累加器低16位,累加器高16位清零。如果使用长立即数寻址,则16位的长立即数左移0~16位后(移位时低位、高位均补0)和32位的累加器相异或,结果送累加器。
(86)ZALR:累加器低位字清零,高位字带舍入装载(Zero Low Accumulator and Load High Accumula tor With Rounding)
语法及功能:
说明:将数据存储单元的内容送到累加器的高16位,8000H送到累加器的低16位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。