DSP考试复习题.doc
如有侵权,请联系网站删除,仅供学习与交流DSP考试复习题【精品文档】第 32 页DSP考试复习题DSP考试复习题1、概念及简述题(简述不是详述)(共40分)(1)分别简述TMS320系列DSP的特点、TMS320C2000系列DSP的特点。TMS320系列DSP的特点:采用哈佛结构、采用多总线结构、采用流水线技术、配有专用的硬件乘法-累加器、具有特殊DSP指令、快速的指令周期、硬件配置强、支持多处理结构、省电管理和低功耗;TMS320C2000系列DSP的特点:处理能力强、片内具有较大的闪速存储器、功耗低、资源配置灵活。(2)简述实时处理的概念。实时处理是指在信息或数据产生的同时进行处理处理的结果可以立即用来影响或控制进行中的现象或过程. 处理过程能够用与硬件转换相同的速度去接收和处理样本数据,这意味着处理过程不中断,能够处理。(3)简述处理器的基本组成,并指出冯·诺依曼结构和哈佛结构的区别。处理器的基本组成:中央处理器(CPU)、内部总线结构、功能寄存器、数据存储器、程序存储器、I/O口、串行口、中断系统、定时器;冯.诺依曼结构:采用单存储空间,即程序指令和数据公用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行的;哈佛结构:采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大提高了数据处理能力和指令的执行速度,非常适合与实时的数字信号处理。(4)简述DSP的发展趋势。DSP的内核结构将进一步改善、DSP和微处理器的融合、DSP和高档的CPU的融合、DSP和SOC的融合、DSP和FPGA的融合、实时操作系统RTOS与DSP的结合、DSP的并行处理结构、功耗越来越低。(5)简述TMS320F2812的性能特点、列出TMS320F2812的在片外设。TMS320F2812的性能特点:静态的CMOS技术、32位CPU、片内存储器、外部存储器接口、时钟与系统控制、密匙、在片外设、通用I/O;TMS320F2812的在片外设:3个32位定时器、1个UART、1个SPI、2个SCIs、1个eCAN、1个McBSP、2个事件管理器(EVA、EVB)、1个12位的ADC(可实现16通道异步A/D转换)。(6)简述TMS320F2812处理器CPU的组成及特点。TMS320F2812处理器CPU的组成:保护流水线机制、独立的寄存器空间、算术逻辑单元ALU、地址寄存器算术单元ARAU、桶形移位器、乘法器;TMS320F2812处理器CPU的特点:16X16位和32X32位乘法累加操作、哈佛总线结构、快速中断响应和处理、统一的存储器规划、4M的线性程序地址、4M的线性数据地址、高效的代码(C/C+和汇编语言)、TMS320F24X/LF240X处理器源代码兼容。(7)简述OVC/OVCU的工作过程以及OVM对ACC操作的影响。OVC/OVCU的工作工程:对有符号数的操作,OVC是一个有符号的6位循环溢出计数器:当溢出模式关闭,ACC正常溢出时,OVC反映溢出信息:ACC正向溢出,OVC加1;ACC负向溢出,OVC减1。 当溢出模式开启,ACC产生溢出时,OVC不受影响,但进行以下处理:ACC正向溢出,ACC=7FFF FFFFH;ACC负向溢出,ACC=8000 0000H。对无符号数操作,OVC是一个有符号的6位循环进位计数器:当ADD操作产生一个进位时,计数器加1;当SUB操作产生一个借位时,计数器减1。OVM对ACC操作的影响:当ACC进行加减运算而结果产生溢出时,OVM=0或1决定CPU如何处理溢出:OVM=0(溢出模式关闭),ACC中产生的溢出反映到OVC;OVM=1(溢出模式开启),ACC正向溢出(7FFF FFFFH8000 0000H),则ACC填充7FFF FFFFH,ACC负向溢出(8000 0000H7FFF FFFFH),则ACC填充8000 0000H。(8)简述中断的概念、可屏蔽中断的初始化及其中断处理流程。中断的概念:硬件或者软件使得CPU停止执行当前的程序,转而执行另外的子程序;可屏蔽中断的初始化:状态寄存器ST1中的可屏蔽中断全局使能位INTM清零,中断标志寄存器IFR相应位置1,可屏蔽中断局部使能寄存器IER相应位置1;中断处理流程:向CPU发出中断请求置IFR寄存器相应位为1判断寄存器IER相应位是否为1(假定为1)判断INTM全局使能位是否为0(假定为0开中断)清零IFR寄存器相应位清空流水线保存返回地址取中断向量中断现场保护清零寄存器IER相应位置INTM和DBGM为1,将LOOP、EALLOW和IDLESTAT等位清零将中断向量装载PC执行中断服务子程序返回。(9)简述非连续程序续流的分类及其特点。非连续程序流的分类:中断、分支、调用、返回和重复操作;非连续程序流的特点:指令执行从当前连续的程序流转移到另外的新的程序流。(10)简述ITNM、N、V、VMAP等状态标志位对处理器的影响。INTM:中断全局屏蔽位。INTM可以全局使能和禁止所有的CPU可屏蔽中断,当INTM=0时,可屏蔽中断被全局使能,当INTM=1时,可屏蔽中断被全局禁止;N:负标志位。在某些操作中,若操作结果为负则N被置位;若操作结果为正则N被清0。测试ACC内容的正负,实际是测试ACC的符号位(D31),若D31=1,则ACC是负数,N=1;若D31=0,则ACC是正数,N=0。测试AH、AL和其他的16位寄存器或数据存储器的内容的正负也是测试符号位(D15);V:溢出标志。如果操作引起保存结果的寄存器产生溢出,则V置1;如果没有溢出,V不改变。一旦V被锁定,它就保持置位直到复位或者被测试V的条件分支指令来清除(不管测试条件如何);VMAP:向量映像位。VMAP决定CPU的中断向量映射到程序存储器的低端还是高端,当VMAP=0,CPU的中断向量映射到程序存储器的底部;当VMAP=1,CPU的中断向量映射到程序存储器的高端。(11)简述INTR NMI指令与硬件NMI的特点,如有区别则请指出。TNTR NMI指令与硬件产生的NMI相同,不能被INTM、DBGM全局中断使能位和寄存器IFR、IER、DBGIER相应的局部中断使能位所屏蔽,TNTR NMI指令与硬件NMI一旦产生,CPU马上转向执行相应的中断服务子程序。但是当CPU处于停止模式(仿真模式)时,没有中断被服务。(12)简述TRAP #0指令与硬件RS的特点,如有区别则请指出。TRAR #0指令:不能等同与复位信号(初始化),没有进行全部初始化,它只是强制执行与RESET中断向量相应的中断服务;硬件RS:当硬件RS发生时,进行全部初始化,CPU所有当前的操作被停止,流水线被清空,CPU寄存器被复位,然后执行相应的中断服务。(13)简述TMS320F2812的寄存器分类及各寄存器的特点。累加器ACC:是CPU的主要工作寄存器,是可单独进行16位/8位访问的32位寄存器。乘法运算类寄存器:被乘数寄存器(XT),存放32位乘法的一个被乘数(32位有符号整数),可分为两个独立的16位寄存器;结果寄存器(P),存放乘法运算结果,可分为两个独立的16位寄存器,对这个寄存器的内容进行移位操作时由乘积移位模式(PM)位决定。数据指针类寄存器:数据页指针(DP):16位寄存器,用于直接寻址,存放数据空间的数据页指针;堆栈指针(SP):16位寄存器,实现系统的软件堆栈(堆栈寻址),对低64K字数据空间进行寻址,复位后SP的初值为0400H。辅助寄存器(XAR0XAR7):主要用于地址指针指向寄存器和通用目的寄存器。程序控制类寄存器:程序计数器(PC):当流水线满的时候,22位PC指针总是指向当前操作的指令;返回程序计数器(RPC):存放返回地址;中断控制寄存器(IFR、IER、DBGIER)状态寄存器:ST0、ST1。可以和数据寄存器交换数据,也可以保存机器的状态和为子程序恢复状态。(14)简述TRAP指令和INRTR指令的特点。TRAP:可以初始化任何中断,包括自定义中断,忽略中断控制寄存器IFR、IER相应位是否置1,指令不会对IFR、IER产生影响。INTR:可以初始化INT1INT4、DLOGINT、RTOSINT、NMI等中断,指令不受可屏蔽中断全局使能位TNTM和可屏蔽中断局部使能寄存器IER或DBGIER相应位的影响,一旦指令被译码,CPU强制执行相应的中断服务。(15)简述直接寻找方式,并举例说明。DP(数据页指针):在这种寻址方式中,16位的DP寄存器作为固定的页指针,在指令中提供6位或7位的偏移量,这些偏移量与中的值相连接。这种寻址方式对固定寻址的数据结构,如外围寄存器和CC+中的全局或静态变量来说,都是一种有效的方法。例如:MOVW DP,#VarA;用VarA所在的页值装载DP指针ADD AL,VarA; 将VarA存储单元内容加至ALMOV VarB,AL; 将AL内容存入VarB存储单元,VarB与VarA应在同一个64字的数据页内MOVW DP,#VarC;用VarC所在的页值装载DP指针SUB AL,VarC; 从AL中减去VarC存储单元内容MOV VarD,AL; 将AL内容存入VarD存储单元,VarC与VarD应在同一个64字的数据页内,而VarC、VarD与VarA、VarB在不同的数据页内(AMODE=0时的“loc16/loc32”语法下的实例)(16)简述堆栈寻址方式,并举例说明。SP(堆栈指针):在这种寻址方式中,16位的SP指针用于访问软件堆栈的信息。C28X的软件堆栈从低地址到高地址变化(进栈操作),堆栈指针总是指向下一个空位置。在指令中可提供以SP堆栈指针为基准的6位偏移量,用于访问堆栈数据,或者在数据入栈和出栈操作后用于修改堆栈指针。例如:ADD AL,*-SP5;将(SP-5)个字的堆栈单元的16位内容加至ALMOV *-SP8,AL;将AL中的16位内容存入(SP-8)个字的堆栈单元ADDL ACC,*-SPl2;将(SP-12)个字的堆栈单元的32位内容加至ACCLMOVL *-SP34,ACC;将ACC中的32位内容存入(SP-34)个字的堆栈单元(AMODE=0时的“loc16/loc32”*-SP6bit语法下的实例)(17)简述间接寻址方式,并举例说明。XAR0XAR7(辅助寄存器指针):在这种寻址方式中,用32位的XARn寄存器作为数据指针。可根据一个3位立即数偏移量或其他16位寄存器的内容,对当前寄存器的内容进行操作后修改数据指针。例如:MOVL XAR2,#Arrayl;将Arrayl的起始地址装入XAR2MOVL XAR3,#Array2;将Array2的起始地址装入XAR3MOV AR0,#N-1;用循环次数N装载AR0Loop:MOVL ACC,*XAR2+;将XAR2所指定的存储单元的内容装入ACC,且XAR2增量MOVL *XAR3+,ACC;将ACC内容存入由XAR3所指定的存储单元,且XAR3增量BANZ Loop,AR0-;循环直至AR0=0,AR0减量(C28x间接寻址方式下“loc16/loc32”XAPn+语法下的实例)(18)简述C2xLP反进位寻址方式,并举例说明。例如:MOVZ DP,#RegAPtr;将包含RegAPtr的页地址装入DPMOVZ AR2,RegAPtr;将RegAPtr所包含的内容装入AR2,AR2H=0MOVZ AR3,RegBPtr;将RegBPtr所包含的内容装入AR3,AR3H=0;RegAPtr和RegBPtr处于同一个128字数据页内,两者都处于低64K数据存储器空间NOP *,ARP2;将ARP指针指向XAR2MOV *,#0x0404;将0404H送入XAR2所指定的存储单元NOP *,ARP3;将ARP指针指向XAR3MOV *,#0x8000;将8000H送入XAR3所指定的存储单元(C2xLP间接寻址方式下“loc16/loc32”*语法下的实例)(19)简述循环间接寻址方式(AMODE=0和1),并举例说明。例如: ;计算有限脉冲响应滤波器(XN为数据阵列,CN为系数阵列)MOVW DP,#Xpointer;将Xpointer的页地址装入DPMOVL XAR6,Xpointer;将当前的Xpointer值装入XAR6MOVL XAR7,#C;将C阵列的起始地址装入XAR7MOV AR1,#N;将N阵列的大小装入AR1SPM-4; 设置乘积移位模式为右移4位ZAPA;ACC=0,P=0,OVC=0RPT #N-1;下一条指令重复执行N次QMACL P,*AR6%+,*XAR7+;ACC=ACC+P>>4.;P=(*AR6%+ *XAR7+)>>32ADDL ACC,P<<PM;最后累加MOVL Xpointer,XAR6;将XAR6存入当前XpointerMOVL Sum,ACC;将结果存入sum(循环间接寻址方式下“loc16/loc32”*AR6%+语法下的实例)(20)简述立即寻址方式,并举例说明。在这种寻址方式下,存储器操作的地址就存在于指令中。例如:MOV loc16,*(0:16bit);loc16=0:16bitMOV *(0:16bit),loc16;loc16=0:16bit(立即寻址方式下*(0:16bit)语法下的实例)(21)简述字节寻址方式,并举例说明。例如:MOVB AX.LSB,locl6;若(地址方式=*+XARnAR0/ARl/3bit);若(偏移量=偶数值);AX.LSB=loc16.LSB;AX.MSB=原样;若(偏移量=奇数值);AX.LSB=loc16.MSB;AX.MSB=原样;否则;AX.LSB=loc16.LSB;AX.MSB=原样;MOVB AX.MSB,loc16;若(地址方式=*+XARnAR0/AR1/3bit);若(偏移量=偶数值);AX.LSB=原样;AX.MSB=loc16.LSB;若(偏移量=奇数值);AX.LSB=原样;AX.MSB=loc16.MSB;否则;AX.LSB=原样;AX.MSB=loc16.LSBMOVB locl6,AX.LSB;若(地址方式=*+XARnAR0/AR1/3bit);若(偏移量=偶数值);loc16.LSB=AX.LSB;loc16.MSB=原样;若(偏移量:奇数值);loc16).LSB=untouched;loc16.MSB=AX.LSB;否则;loc16.LSB=AX.LSB;loc16.MSB;原样MOVB locl6,AX.MSB;若(地址方式=*+XARnAR0/AR1/3bit);若(偏移量=偶数值);loc16.LSB:AX.MSB;10c161.MSB=原样;若(偏移量=奇数值);loc16.LSB=原样;loc16.MSB=AX.MSB;否则;loc16.LSB=AX.MSB;loc16.MSB=原样(字节寻址方式下的实例)(22)简述如何跟踪AMODE的改变?由于汇编器假定的寻址方式是AMODE=0,因此只能使用满足AMODE=0条件下的寻址方式。汇编器可以按照命令行操作改变默认状态,这些行操作是:-v28 假设AMODE=0(C28X寻址方式)-v28-m20 假设AMODE=1(全C2XLP兼容寻址方式)汇编器允许在源程序用伪指令使汇编器改写默认方式,并针对新的寻址方式进行语法检查。例如:.c28_amode;告知汇编器后续代码的寻址方式为AMODE=0(C28X寻址方式).lp_amode; 告知汇编器后续代码的寻址方式为AMODE=1(全C2XLP兼容寻址方式)(23)TMS320F2812的FLASH具有几种状态,它们之间如何实现转换?状态:复位和休眠状态(功耗最低)、待机状态、工作状态或读状态(功耗最高)三种;转换:从高功耗到低功耗的转换:改变电源寄存器的PWR模式位,同时把FLASH存储体变为低功耗状态;从低功耗到高功耗的转换:改变电源寄存器的PWR模式位,同时把FLASH存储体变为高功耗状态,为使FLASH存储器在较高电源模式下保持稳定,要求在从较低功耗状态转变到较高功耗状态时有一个延时。(24)对TMS320F2812的FLASH具有几种访问模式,它们之间有何区别?二种访问模式:FLASH的随机访问:对于一个随机访问的等待状态数由FBANKWAIT寄存器的RANDWAIT位来配置,用户需要通过编程来确定适当的等待状态数,以改善基于CPU时钟速率和FLASH访问时间的性能。FLASH的页访问;FLASH阵列被组织成行和列的形式,行包含2048位信息,对一行的访问认为是随机访问,用户需要通过编程来确定适当的等待状态数,以改善基于CPU时钟速率和FLASH访问时间的性能。(25)简述和,、的作用。:外部总线保持请求信号,它为低电平时要求XINTF释放外部总线;:外部总线请求应答信号,当XINTF释放外部总线后,将置低,表示外部设备可以使用外部总线;:XINTF的读使能信号,低电平时有效;:XINTF的写使能信号,低电平时有效;(注:和不能同时有效):低电平表示写周期正在进行;高电平表示读周期正在进行;正常表示高电平。(26)如果的地址范围:2000H7FFFH,现需要产生3个片选信号,地址范围为:2000H3FFFH、4000H5FFFH、6000H7FFFH,请画出译码原理图。用与门实现:2000H3FFFH:XA14=0,XA13=1(输入与门前取反);4000H5FFFH:XA14=1(输入与门前取反),XA13=0;6000H7FFFH:XA14=1(输入与门前取反),XA13=1(输入与门前取反)。(27)简述对XINTF的访问有什么特点?每个存储区域都有一个片选信号每一个区可进行等待状态、片选信号建立和保持时序等编程,读访问和写访问分开编程每个区都可以用XREADY信号去扩展或者不扩展外部等待可编程等待状态、芯片选择和可编程选通时间使得接口与外部存储器及外设相脱离。(28)对XINTF访问时,对XREADY的采样有几种方式,各有什么特点?同步采样:在访问周期结束之前,相对于1个XTIMCLK的沿,XREADY必须满足一定建立和保持时序,在存取所规定的周期(建立周期+访问周期)之前,XREADY必须被采样1个XTIMCLK周期;异步采样:在访问周期结束之前,相对于3个XTIMCLK的沿,XREADY必须满足一定建立和保持时序,在存取所规定的周期(建立周期+访问周期)之前,XREADY必须被采样3个XTIMCLK周期。(29)TMS320C28x执行一条指令需要几个步骤?TMS320C28X执行一条指令需要5个步骤:从程序存储器中取指令;对指令译码;从存储器或寄存器中读数据;执行指令;向存储器或CPU寄存器写操作结果。(30)TMS320C28x的指令流水线几个阶段,各完成什么操作?为了提高效率,CPU采用8级流水线来完成一条指令的执行:取指1(F1):CPU将程序存储器地址送给程序地址总线;取指2(F2):CPU通过程序读数据总线对程序存储器进行读操作,并把指令放入指令队列中;译码1(D1):识别取指队列里指令的边界,测定下一条执行指令的长度,同时确定指令的合法性;译码2(D2):从指令队列取回指令并将其放入指令寄存器,在那里完成译码;读1(R1):如果从存储器读数,R1阶段将会把地址送到相应的地址总线上;读2(R2):如果数据的地址在R1阶段被寻址,则R2阶段就通过相应的数据总线取回数据;执行(E):CPU执行所有的乘法、移位和ALU操作;写(W):如果将结果写回存储器,则该操作在写阶段(W)发生。(31)TMS320C28x的指令流水线保护哪几种冲突?如何保护的?向同一数据空间进行读写发生冲突:CPU增加自动无效周期来确保这些读写按预定的方式进行;在程序中,如果可以采用其它的指令或者在发生冲突的指令之间插入其它指令,就可以减少或取消这种流水线保护周期寄存器冲突:流水线保护机制通过在D2阶段将后一条指令保持所需要的周期(13个)来解决寄存器冲突(32)TMS320C28x有几种低功耗方式,它们分别如何退出?空闲方式:通过能够被处理器识别的任何使能中断或NMI退出该方式;停止方式:只有和XNMI_XINT13中断信号能从停止方式唤醒该器件,在XMNICR中,有一个使能/无效位控制该中断是否输入到CPU;待机方式:通过LPMCR1选择的信号都可把器件从待机方式唤醒。(33)如何进行看门狗操作?举例说明。在WD的计数器溢出之前,向WD的WDKEY寄存器写入正确的数据序列,WDCNTR将被复位:当将0x55写入WDKEY寄存器时,WDCNTR处于复位使能状态;如果下一个写入的数据为0xAA,则WDCNTR被复位。当将其它非0x55或0xAA的数据写入WDKEY,则WD模块将输出一个WD复位信号(引起DSP复位);只有0x55、0xAA的写入顺序能够将WDCNTR复位,其它写入顺序既不会复位WDCNTR,也不会复位DSP。(34)请给出密码匹配流的流程图,并说明使用CSM时应注意些什么?是是否否否是开始复位后或运行时FLASH受到保护密码寄存器全为1哑读PWL 0x3F 7FF80x3F 7FFF器件安全不能调试或再编程向KEY寄存器0x0AE00X0AE7写入密码PWL全为0?器件不安全,用户可访问片上安全存储器PWL全为1?密码正确?使用CSM应注意的:使用CSM要做的:为了使调试和代码开发阶段简单化,应在非安全方式下使用芯片,即PWI处的128位全为1或使用一个容易记的密码。在开发完成以后,指令代码固定了再使用密码;使用FLASH工具对FLASH存储器进行COFF文件编程(烧写)之前,需检查PWL中的密码;当使用代码安全保护时,则0x3F 7F800x3F 7FF5必须编程为0x0000。使用CSM不做的:如果希望使用代码安全性,则不要把密码嵌入到应用程序,而是放在PWL中,否则会危及代码安全;不要使用128位全是0作为密码,否则不管密匙寄存器的内容是什么,器件都不能调试,也不能重新编程;清除FLASH之后,不要进行复位;但擦除FLASH之前需要复位;当使用代码安全保护,则0x3F 7F800x3F 7FF5不能存放程序或数据,而必须编程为0x0000。(35)TMS320C28x是如何实现外设中断扩展的?利用外设中断扩展模块(PIE)把许多外设中断源采用多路复用的方法转换成一个较小的中断输入集(CPU级中断)。PIE将高达96个的中断源每8个组成一个组,共12个中断线输入进CPU(INT1INT12)。这96个中断每个都有一个地址,称为中断向量,放在特定RAM中,地址可由用户修改。CPU在响应中断时,会自动取出相应的中断向量,并执行相应的中断服务程序。各个中断的响应优先级由软件和硬件控制,通过PIE可开放或禁止中断的产生。(36)如何进行GPIO设置?如果设置为输入,则如何确认输入信号的状态?如果设置为输出,如何改变输出状态?GPIO设置:配置GPxMUX寄存器,将引脚配置成数字I/O脚或者是外设的I/O信号脚;通过GPxDIR寄存器配置数字I/O的传输方向;输入时,通过GPxQUAL寄存器设置采样脉冲数,以滤去输入噪声,改善信号;输出时,将GPxSET寄存器的位置1将使相应的输出变高,将GPxCLEAR寄存器的位置1将使相应的输出变低,将GPxTOGGLE寄存器的位置1将使相应的输出变为相反电平;输入信号确认(有两种类型):输入信号首先有SYSCLKOUT同步,然后按GPxQUAL指定的采用周期进行确认。采样的窗长为6个采样周期,只有6次采样值相同,输入才有效;仅在配置为数字I/O时,输入信号才有SYSCLKOUT同步,因为一些外设自身已经进行过信号同步,但都不需要进行确认;输出信号的改变:,将GPxSET寄存器的位置1将使相应的输出变高,将GPxCLEAR寄存器的位置1将使相应的输出变低,将GPxTOGGLE寄存器的位置1将使相应的输出变为相反电平。2、解释下面指令系统及伪指令的功能及执行过程(20分)(1)CMPR0/1/2/3比较辅助寄存器:比较AR0和ARP指定的16位辅助寄存器。比较的方式由指令决定,如下所示:CMPR0:if(AR0=ARARP)TC=1,elseTC=0CMPR1:if(AR0>ARARP)TC=1,elseTC=0CMPR2:if(AR0<ARARP)TC=1,elseTC=0CMPR3:if(AR0 !=ARARP)TC=1,elseTC=0(2)MOV DP,#10bit装载数据页面指针:用10位常数装载数据页寄存器。其它高6位不变:DP(9:0)= #10bit;DP(15:10)= 不变;(3)MOVZ DP,#10bit装载数据页面和清高位:用一个10位常数装载数据页寄存器并将高6位清零:DP(9:0)= #10bit;DP(15:10)= 0;(4)NOT AX求AX寄存器中的值的“非”:用其“非”取代指定AX寄存器(AH或AL)的内容:AX=AX XOR 0xFFFF;(5)NEG AX求AX寄存器中的值的负数:对AX求负:If(AX=0x8000) AX=0x8000; V=1;Else AX=-AX;If(AX=0x0000) C=1;Else C=0;(6)MOVB loc16,AX.LSB保存AX寄存器的最低字节:用指定的AX寄存器(AH.LSB或AL.LSB)的最低有效字节装载“loc16”寻址模式指定位置的8位数。“loc16”操作数的形式决定哪8位用于装载AX,哪8位保持不变。If(loc16=*+XARnoffset) If(offset为偶数) loc16.LSB=AX.LSB; loc16.MSB=不变; If(offset为奇数) loc16.LSB=不变; loc16.MSB=AX.LSB;Else loc16.LSB=AX.LSB; loc16.MSB=不变;(7)MOVB AX.LSB, loc16装载AX寄存器的最低字节,MSB=0x00:来自“loc16”地址单元的位值装载到指定AX寄存器的最低有效字节。AX寄存器的最高有效字节清零。“loc16”操作数的形式指定了哪个8位用于装载AX.LSB。If(loc16=*+XARnoffset) If(偏移量为偶数) AX.LSB=loc16.LSB; If(偏移量为奇数) AX.LSB=loc16.MSB;Else AX.LSB=loc16.LSB; AX.MSB=0x00;(8)SUB ACC,loc16<<0.16从累加器中减去16位地址的内容移位后的值:从ACC累加器中减去左移后的“loc16”地址单元的值。若符号扩展方式有效(SXM=1),移位时进行符号扩展;否则移位时为0扩展(SXM=0),最低位填0:If(SXM=1) 符号扩展方式使能 ACC=ACC S:loc16 << 移位位数;Else 禁止符号扩展方式 ACC=ACC 0:loc16 << 移位位数;(9)SUB ACC,#16bit<<0.15从累加器中减去移位后的值:从ACC累加器减去左移后的16位立即常数。若符号扩展方式使能(SXM=1),移位时进行符号扩展;否则移位时为0扩展(SXM=0),最低位填0:If(SXM=1) 符号扩展方式使能 ACC=ACC S:16bit << 移位位数;Else 禁止符号扩展方式 ACC=ACC 0:16bit << 移位位数;(10)ADD ACC, loc16 << 0.16(loc16)地址单元中的数加到累加器,结果保存到ACC:“loc16”地址单元的16位数左移后加到ACC累加器中。若符号扩展模式使能(SXM=1),则移位时进行符号扩展,否则进行0扩展(SXM=0),最低位填0:If(SXM=1) 符号扩展模式使能 ACC=ACC + S:loc16 << 移位位数;Else 符号扩展模式禁止 ACC=ACC + 0:loc16 << 移位位数;(11)SFR ACC,T右移累加器,移位位数由T(3:0)=015位设置:按T寄存器的最低4位指定的数T(3:0)=015右移ACC累加器的值。忽略T寄存器的高位。移位的类型(算术或逻辑)由符号扩展方式(SXM)位的状态指定:If(SXM=1) 符号扩展方式使能 ACC=S:ACC >> T(3:0); 算术右移Else 禁止符号扩展方式 ACC=0:ACC >> T(3:0); 逻辑右移(12)SFR ACC,1.16右移累加器116位:ACC累加器按移位位数右移。移位的类型(算术或逻辑)由符号扩展方式(SXM)位指定:If(SXM=1) 符号扩展方式使能 ACC=S:ACC >> 移位位数; 算术右移Else 禁止符号扩展方式 ACC=0:ACC >> 移位位数; 逻辑右移(13)MOVP T,loc16装载T寄存器,并保存P寄存器到累加器:用“loc16”寻址地址单元中的16位数装载T寄存器。P寄存器按乘积移位方式(PM)位指定的移位位数移位,P寄存器的内容移位后装载到ACC累加器中。T=loc16;ACC=P << PM;(14)MOVS T,loc16装载T寄存器,并从累加器中减去P:用“loc16”寻址地址单元中的16位数装载T寄存器。P寄存器按乘积移位方式(PM)位指定的移位位数移位,从ACC累加器中减去P寄存器移位后的值。T=loc16;ACC=ACC - P << PM;(15)TBIT loc16,#bit位测试:测试“loc16”地址单元中的指定位:TC=loc16(bit);(16)TCLR loc16,#bit测试并清零指定位:测试“loc16”地址单元指定的位,然后对相同的位清零:TC=loc16(bit);loc16(bit)=0;(17)LB 22bitAddr长跳转(22位程序地址):用22位程序地址装载PC指针:PC=22bit;(18)LB *XAR7间接长跳转:用XAR7寄存器的低22位装载PC指针:PC=XAR7(21:0);(19)NORM ACC,XARn+规格化ACC和修改所选辅助寄存器:规格化ACC累加器的有符号数并改变指定的辅助寄存器(XAR0XAR7):If(ACC != 0x0000 0000) If(ACC(31) XOR ACC(30) =0) ACC=ACC << 1,TC=0; If(XARn+addressing mode)XARn+ =1; If(XARn-ddressing mode)XARn+ =1; Else TC=1;Else TC=1;(20)MOVL XAR3,*XAR3+(21)MOVL XAR4,*XAR4(22)SAT ACC根据OVC的值使ACC的值为饱和值:根据6位溢出计数器(OVC)的值使ACC累加器为饱和值:if(OVC>0) ACC=0x7FFF FFFF; V=1;if(OVC<0) ACC=0x8000 0000; V=1;if(OVC=0) ACC=不变; OVC=0;(23)SQRA loc16对loc16作平方,P与累加器相加结果送累加器:把先前乘积值(保存在P寄存器)按乘积移位方式(PM)指定的值移位后加到ACC累加器。把“loc16”地址单元的值装载到T寄存器并且平方后保存到P寄存器:ACC=ACC+P << PM;T=loc16;P=T×loc16;(24)BAR 16bitOffset, ARn, ARm, EQ/NEQ与辅助寄存器比较后跳转:比较两个辅助寄存器ARn和Arm寄存器的16位数,若条件为真,则跳转;否则不跳转继续执行程序:if(测试条件为真)PC=PC+有符号16位偏移量;if(测试条件为假)PC=PC+2;(25)BANZ 16bitOffset, ARn-若辅助寄存器不等于零,则跳转:若指定的辅助寄存器的16位数不为0,则加有符号16位的偏移量到PC值,强迫控制程序跳到新的地址(PC+16