




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第3章 C24x DSP的CPU与指令系统本章内容:本章内容:3.1 中央处理器中央处理器 3.2 寻址方式寻址方式 3.3 C24x DSP汇编指令汇编指令3.4 汇编语言命令与程序举例汇编语言命令与程序举例23.1 中央处理器中央处理器 3.1.1 CPU总体结构总体结构 240 x的的CPU主要由总线、主要由总线、CPU寄存器、程序地址发寄存器、程序地址发生器和控制逻辑、辅助寄存器算术单元生器和控制逻辑、辅助寄存器算术单元(ARAU)、中央算、中央算术逻辑单元术逻辑单元(CALU)、乘法器和移位器等逻辑部件组成。、乘法器和移位器等逻辑部件组成。 1)总线。)总线。2)程序地址发生器和控
2、制逻辑。)程序地址发生器和控制逻辑。3)ARAU。产生指令操作数的地址并将其送往对应的。产生指令操作数的地址并将其送往对应的数据地址总线。数据地址总线。4)CALU。执行二进制补码的算术运算和布尔运算。执行二进制补码的算术运算和布尔运算。5)乘法器。可以执行)乘法器。可以执行1616位的补码乘法运算,并产位的补码乘法运算,并产生生32位结果。乘法器采用位结果。乘法器采用16位乘数寄存器位乘数寄存器(TREG)、32位位乘积寄存器乘积寄存器(PREG)和和32位累加器位累加器(ACC)。6)移位器。)移位器。CPU的移位器实现对操作数的移位操作。的移位器实现对操作数的移位操作。 3240 x D
3、SP CPU内内部结构功能框图部结构功能框图 43.1.2 总线结构总线结构多组总线多组总线并行机制并行机制程序读、数据读、数据写三种情况程序读、数据读、数据写三种情况 内部地址总线:三组内部地址总线:三组 Address Bus:A0Address Bus:A015 (C24x)15 (C24x)程序读地址总线程序读地址总线PAB (Program Address Bus)PAB (Program Address Bus)数据读地址总线数据读地址总线DRAB (Data Read Address Bus)DRAB (Data Read Address Bus)数据写地址总线数据写地址总线DW
4、AB (Data Write Address Bus)DWAB (Data Write Address Bus)内部数据总线:三组内部数据总线:三组 Data Bus: D0Data Bus: D0D15D15(C24x)(C24x)程序读数据总线程序读数据总线PRDBPRDB数据读数据总线数据读数据总线DRDBDRDB数据写数据总线数据写数据总线DWEB DWEB 数据写入数据存储器数据写入数据存储器(DM)(DM)和程序存储器和程序存储器(PM)(PM)外部外部Data/Address Data/Address 总线为单一形式总线为单一形式 5C2000 DSP 总线结构总线结构 (24x
5、) 63.1.3 CPU内核结构内核结构 CPU内核模块包括:输入定标移位器、内核模块包括:输入定标移位器、32位中央算位中央算术逻辑单元(术逻辑单元(CALU)、)、16位位16位乘法器、累加器和位乘法器、累加器和输出定标移位器等。输出定标移位器等。 CPU内核框图内核框图71) 输入定标移位器输入定标移位器(Input Scale, Shifter) 该单元将来自程序该单元将来自程序/数据存储器的数据存储器的16位数据调整为位数据调整为32位位数据送到中央算术逻辑单元(数据送到中央算术逻辑单元(CALU)。因此,输入定标移。因此,输入定标移位器的位器的16位输入与数据总线相连,位输入与数据
6、总线相连, 32位输出与位输出与CALU单元单元相连。相连。 输入定标移位器在算术定标及逻辑操作非常有用。输入定标移位器在算术定标及逻辑操作非常有用。 输入定标移位器对输入数据进行输入定标移位器对输入数据进行0-15位左移。左移位左移。左移时,输出的最低有效位时,输出的最低有效位(LSB)为为0,最高有效位,最高有效位(MSB)根根据状态寄存器据状态寄存器ST1的的SXM位(符号扩展方式)的值来决位(符号扩展方式)的值来决定是否进行符号扩展。定是否进行符号扩展。 当当SXM=1时,则高位进行符号扩展;当时,则高位进行符号扩展;当SXM=0时,时,则高位填则高位填0。 移位的次数由包含在指令中的
7、常量或临时寄存器移位的次数由包含在指令中的常量或临时寄存器(TREG, T, Temporary Register )中的值来指定。中的值来指定。82 ) 乘法器乘法器(Multiplier) 1616位的硬件乘法器,单个机器周期内产生一个位的硬件乘法器,单个机器周期内产生一个32位的有符号或无符号乘积。位的有符号或无符号乘积。 除了执行无符号乘法指令(除了执行无符号乘法指令(MPYU)外,所有的乘)外,所有的乘法指令均执行有符号的乘法操作,即相乘的两个数都作法指令均执行有符号的乘法操作,即相乘的两个数都作为二进制的补码数,而运算结果为一个为二进制的补码数,而运算结果为一个32位的二进制的位的
8、二进制的补码数。补码数。 乘法器接收的两个乘数,一个来自乘法器接收的两个乘数,一个来自16位的临时寄存位的临时寄存器(器(T),另一个通过数据读总线(),另一个通过数据读总线(DRDB)取自数据存)取自数据存储器,或通过程序读总线(储器,或通过程序读总线(PRDB)取自程序存储器。)取自程序存储器。9 两个输入值相乘后,两个输入值相乘后,32位的乘积结果保存在位的乘积结果保存在32位的位的乘积寄存器(乘积寄存器(P,PREG, Product Register)中。)中。 PREG的输出连接到乘积定标移位器的输出连接到乘积定标移位器(Product Scale, Shifter) ,通过乘积定
9、标移位器,乘积结果可以从,通过乘积定标移位器,乘积结果可以从P传到传到CALU或数据存储器。乘积定标移位器对乘积采用或数据存储器。乘积定标移位器对乘积采用4种乘种乘积移位方式。积移位方式。 移位方式由状态寄存器移位方式由状态寄存器ST1的乘积移位方式位(的乘积移位方式位(PM, Product Mode)指定,对于执行乘法)指定,对于执行乘法/累加操作、进行小累加操作、进行小数运算或者进行小数乘积的调整都很有用。数运算或者进行小数乘积的调整都很有用。10乘积定标移位器的乘积移位方式乘积定标移位器的乘积移位方式PM 移位移位 作用和意义作用和意义00 无移位无移位 乘积送乘积送CALU或数据写总
10、线,不移位或数据写总线,不移位01 左移左移1位位 移去二进制补码乘法产生的额外符号移去二进制补码乘法产生的额外符号 位,产生位,产生Q31格式的乘积格式的乘积10 左移左移4位位 当与一个当与一个13位的常数相乘时,移去在位的常数相乘时,移去在1613位(常数)二进制补码产生的位(常数)二进制补码产生的额外的额外的4位符号位,产生位符号位,产生Q31格式的乘积格式的乘积11 右移右移6位位 对乘积结果定标,以使得运行对乘积结果定标,以使得运行128次的次的乘积累加而累加器不会溢出乘积累加而累加器不会溢出 注:注:Q31格式是一种二进制小数格式,表示有格式是一种二进制小数格式,表示有31位二进
11、制小数位二进制小数113)中央算术逻辑单元)中央算术逻辑单元 中央算术逻辑单元中央算术逻辑单元(CALU, Central ALU)实现大部分实现大部分算术和逻辑运算功能,大多数功能只需一个时钟周期,这算术和逻辑运算功能,大多数功能只需一个时钟周期,这些运算功能包括:些运算功能包括:16位加、位加、16位减、逻辑运算、位测试以位减、逻辑运算、位测试以及移位和循环功能。及移位和循环功能。 由于由于CALU可以执行布尔运算,因此使得控制器具有可以执行布尔运算,因此使得控制器具有位操作功能。位操作功能。CALU的移位和循环在累加器中完成。的移位和循环在累加器中完成。 CALU是一个独立的算术单元,它
12、和辅助寄存器算术是一个独立的算术单元,它和辅助寄存器算术单元单元(ARAU)在程序执行时,是完全不同的两个模块。在程序执行时,是完全不同的两个模块。12 一旦操作在一旦操作在CALU中被执行,运算结果会被传送中被执行,运算结果会被传送到累加器中,在累加器中再实现如移位等附加操作。到累加器中,在累加器中再实现如移位等附加操作。 CALU有两个输入,一个由累加器提供,另一个有两个输入,一个由累加器提供,另一个由乘积寄存器(由乘积寄存器(P)或输入数据定标移位器的输出提)或输入数据定标移位器的输出提供。当供。当CALU执行完一次操作后将结果送至执行完一次操作后将结果送至32位累加位累加器,由累加器对
13、其结果进行移位。累加器的输出送到器,由累加器对其结果进行移位。累加器的输出送到32位输出数据定标移位器经过输出数据定标移位器,位输出数据定标移位器经过输出数据定标移位器,累加器的高、低累加器的高、低16位字可分别被移位或存入数据寄存位字可分别被移位或存入数据寄存器。器。13 CALU的溢出饱和方式可以由状态寄存器的溢出饱和方式可以由状态寄存器ST0的溢出的溢出模式(模式(OVM)位来使能或禁止。)位来使能或禁止。 根据根据CALU和累加器的状态,和累加器的状态,CALU可执行各种分支可执行各种分支指令。这些指令可以根据这些状态位有意义的结合,有条指令。这些指令可以根据这些状态位有意义的结合,有
14、条件地执行。为了溢出管理,这些条件包括件地执行。为了溢出管理,这些条件包括OV(根据溢出跳根据溢出跳转转)和和EQ(根据累加器是否为根据累加器是否为0跳转跳转)等。另外,等。另外,BACC(跳(跳到累加器指定的地址)指令可以跳转到由累加器所指定的到累加器指定的地址)指令可以跳转到由累加器所指定的程序存储器地址;不影响累加器的位测试指令(程序存储器地址;不影响累加器的位测试指令(BIT和和BITT)允许对数据存储器中的一个指定位进行测试。)允许对数据存储器中的一个指定位进行测试。 对绝大多数的指令,状态寄存器对绝大多数的指令,状态寄存器ST1的第的第10位符号扩位符号扩展位(展位(SXM)决定了
15、在)决定了在CALU计算时是否使用符号扩展。计算时是否使用符号扩展。SXM=0,符号扩展无效;,符号扩展无效;SXM=1,符号扩展有效。,符号扩展有效。144) 累加器(累加器(ACC,32位位, 高高16位位ACCH, 低低16位位ACCL) 当当CALU中的运算完成后,其结果就被送至累加器,中的运算完成后,其结果就被送至累加器,并在累加器中执行单一的移位或循环操作。并在累加器中执行单一的移位或循环操作。 累加器的高位和低位字中的任意一个可以被送至输累加器的高位和低位字中的任意一个可以被送至输出数据定标移位器,在此定标移位后,再保存于数据存出数据定标移位器,在此定标移位后,再保存于数据存储器
16、。与累加器有关的状态位和转移指令:储器。与累加器有关的状态位和转移指令: 进位标志位进位标志位C 状态寄存器状态寄存器ST1的第的第9位。下述情况之一将影响进位位。下述情况之一将影响进位标志位标志位C。15加到累加器或从累加器减加到累加器或从累加器减 当当C=0,减结果产生借位时或加结果未产生进位时。,减结果产生借位时或加结果未产生进位时。 当当C=1,加结果产生进位时或减结果未产生借位时。,加结果产生进位时或减结果未产生借位时。2)将累加器数值移将累加器数值移1位或循环移位或循环移1位位在左环移或循环左移的过程中,累加器的最高有效位在左环移或循环左移的过程中,累加器的最高有效位被送至被送至C
17、位。在右环移或循环右移的过程中,累加器位。在右环移或循环右移的过程中,累加器的最低有效位被送至的最低有效位被送至C位。位。16溢出方式标志位溢出方式标志位OVM状态寄存器状态寄存器ST0的第的第11位。位。OVM位决定位决定ACC如何反映如何反映算术运算的溢出。算术运算的溢出。OVM=1,ACC运算溢出,运算溢出, 累加器被设定为下列两个累加器被设定为下列两个特定值之一:特定值之一: 若正溢出,若正溢出,ACC中填最大正数中填最大正数:7FFF FFFFh 若负溢出,若负溢出,ACC中填最大负数中填最大负数:8000 0000hOVM=0,ACC中的结果正常溢出。中的结果正常溢出。17溢出标志
18、位溢出标志位OV状态寄存器状态寄存器ST0的第的第12位,位,C=0,累加器未溢出;,累加器未溢出;C=1,累加器溢出,且被锁存。,累加器溢出,且被锁存。 测试测试/控制标志位控制标志位TCST1的第的第11位,根据被测位的值置位,根据被测位的值置1或清或清0。与累加器有关的转移指令大都取决于与累加器有关的转移指令大都取决于C、OV、TC的状态和累加器的值。的状态和累加器的值。185)输出定标移位器)输出定标移位器(Output Scale, Shifter ) 它存储指令中指定的位数,将累加器输出的内容它存储指令中指定的位数,将累加器输出的内容左移左移0-7位,然后将移位器的高位字或低位字存
19、到数据位,然后将移位器的高位字或低位字存到数据存储器中(用存储器中(用SACH或或SACL指令,指令,Save to)。在此过)。在此过程中,累加器的内容保持不变。程中,累加器的内容保持不变。193.1.4 状态寄存器状态寄存器(Status)ST0和和ST1 状态寄存器状态寄存器ST0和和ST1包含了包含了DSP运行时的各种状运行时的各种状态和控制位。内容可被读出并保存到数据存储器态和控制位。内容可被读出并保存到数据存储器(用用SST指令指令),或从数据存储器读出加载到,或从数据存储器读出加载到ST0和和ST1 (用用LST指指令令, Load ST),用来在子程序调用或进入中断时实现,用来
20、在子程序调用或进入中断时实现CPU各种状态的保存。各种状态的保存。 可用指令对可用指令对ST0和和ST1中的各个位单独置中的各个位单独置1或清或清0 (SETC或或CLRC指令指令)。 可对比可对比8086的的F寄存器,寄存器,8051的的PSW寄存器。寄存器。20状态寄存器状态寄存器ST0 ARP 当前辅助寄存器指针当前辅助寄存器指针 000-111,AR0-AR7 OV 溢出标志位溢出标志位,为,为1时,有溢出。时,有溢出。 OVM 溢出模式位溢出模式位。 OVM=1, 溢出时,溢出时,A中为最大或最小值。中为最大或最小值。 OVM=0,按正常溢出。,按正常溢出。 INTM中断模式位中断模
21、式位,可禁止可禁止(INTM=1)或使能可屏蔽中断或使能可屏蔽中断 DP 数据存储器页面指针数据存储器页面指针(Data Page) 9位,用于直接寻址地位,用于直接寻址地址的高址的高9位,与指令中的低位,与指令中的低7位共同形成位共同形成16位地址。位地址。Bit15-1312111098-0名称名称ARPOVOVM1INTMDP复位值复位值x0 x11x21状态寄存器状态寄存器ST1 ARB 辅助寄存器指针缓冲器辅助寄存器指针缓冲器,存放,存放ARP。 CNF 片内片内DARAM B0配置位配置位。CNF=0, B0映射为数据存映射为数据存储器储器(DM); CNF=1, B0映射为程序存
22、储器映射为程序存储器(PM) TC 测试标志位。测试标志位。 SXM 符号扩展模式位。符号扩展模式位。SXM=1, 允许符号扩展。允许符号扩展。 C 进位位。进位位。 XF, XF引脚状态位。引脚状态位。复位时,复位时,XF=1。 PM,乘积移位模式位,乘积移位模式位,PM=00(没有移位,复位值没有移位,复位值),01(左左移移1位位), 10 (左移左移4位位), 11 (右移右移6位位)Bit15-1312111098-543-21-0名称名称ARBCNFTCSXMC 111XF11PM复位值复位值x0 x11100223.1.5 辅助寄存器算术单元辅助寄存器算术单元ARAU辅助寄存器算
23、术单元辅助寄存器算术单元ARAU辅助寄存器辅助寄存器AR0-AR7: 间接寻址间接寻址当前工作辅助寄存器当前工作辅助寄存器(由由ARP选择选择)AR+1, AR-1 (*+, *-)AR+-AR0 (*0+,*0-)*BR0+- (反向进位)(反向进位) ARAU完全独立于中央完全独立于中央算术逻辑单元。主要功能算术逻辑单元。主要功能是在是在CALU操作的同时执行操作的同时执行8个辅助寄存器个辅助寄存器AR7-AR0中中的算术运算的算术运算, AR7-AR0提供提供了强大而灵活的间接寻址了强大而灵活的间接寻址能力。能力。23 利用利用ARAU中的中的16位地址可访问数据存储器位地址可访问数据存
24、储器64K字字空间的任一单元。空间的任一单元。 可通过指令向可通过指令向ST0的的ARP指针装入指针装入3位位(0-7)数据来选数据来选择某一辅助寄存器择某一辅助寄存器(AR0-7, Auxiliary Register )。 ARAU的的8个辅助寄存器提供了强大而灵活的间接个辅助寄存器提供了强大而灵活的间接寻址能力。利用辅助寄存器中的寻址能力。利用辅助寄存器中的16位地址可访问数据位地址可访问数据存储器存储器64K字空间的任一单元。字空间的任一单元。ARAU除可对数据存储器的寻址外,还可用作它用:除可对数据存储器的寻址外,还可用作它用:(1) 通过通过CMPR比较指令,利用辅助寄存器支持条件
25、比较指令,利用辅助寄存器支持条件转移、调用和返回;转移、调用和返回;(2) 利用辅助寄存器作为暂存单元;利用辅助寄存器作为暂存单元;(3) 利用辅助寄存器进行软件计数。根据需要将其加利用辅助寄存器进行软件计数。根据需要将其加1或减或减1。243.2 寻址方式寻址方式 C24x CPU三种基本寻址方式:立即寻址、直接寻三种基本寻址方式:立即寻址、直接寻址和间接寻址。址和间接寻址。1. 立即寻址立即寻址立即寻址立即寻址: 指令中包含一个立即数。指令中包含一个立即数。 立即数可分为短立即数立即数可分为短立即数(8,9,13位位)和长短立即数和长短立即数(16 位位)例例: RPT #k ;下面的指令
26、重复执行下面的指令重复执行k+1次次, #k为为8位位 LDP #k ; DP=k, #k为为9 位位 MPY #k ; P = T*k, #k为为13 位位, P: Product, T: TREG ADD #lk, shift ; ACC = ACC+#lk左移左移shift次次 #lk为为16 位位 LACC #10h; ACC=#10H, “#”号表示立即数号表示立即数 ( LACC 10h ; 直接寻址,当前直接寻址,当前DP的第的第10h单元数据送单元数据送 累加器累加器ACC中)中)252. 直接寻址直接寻址 数据存储器数据存储器(DM: Data Memory)直接地址由高直接
27、地址由高9位位DP (Data Page Pointer数据页面指针数据页面指针)和低和低7位地址共同组成。位地址共同组成。 数据页面指针数据页面指针DP的范围:的范围:0511页,页,dma=0127 即即DP指向指向512页中的一页,页中的一页, dma表示该页表示该页128单元之一。单元之一。 512*128W=64 KW 机器码格式:机器码格式:D158为操作码为操作码, D7=0, D60 页内地址页内地址(dma) 例例. LDP #4 ; DP=#4 =0000 0010 0, ADD 9h ; ACC = ACC+(209h), 9=000 1001 高高9位位DP低低7位位d
28、ma: 0000 0010 0 000 1001=209h264. 间接寻址间接寻址 间接寻址间接寻址: 数据存储单元可以通过当前辅助寄存器内数据存储单元可以通过当前辅助寄存器内容所代表的容所代表的16位地址进行访问。位地址进行访问。 8个个16位辅助寄存器位辅助寄存器AR0AR7 当前辅助寄存器由当前辅助寄存器由ARP (ST0: D1513=000111)指定指定例例 MAR *, AR1; 选择选择AR1为当前辅助寄存器,为当前辅助寄存器,ARP=1 LAR AR1, #208h; AR1=#208h ADD *, 8 ; ACC=ACC+(208h)*28 间接寻址间接寻址间接寻址类型
29、:间接寻址类型: * 地址不变地址不变 *+ AR= AR+1 当前当前AR中的地址加中的地址加1 *- AR= AR-1 *0+ AR= AR+AR0 *0- AR= AR-AR0 *BR0+ AR= B(AR+AR0) 地址反向进位加,用于地址反向进位加,用于FFT *BR0- AR= B(AR-AR0)27 下一个辅助寄存器:下一个辅助寄存器: 许多指令除了可以修改当前辅助许多指令除了可以修改当前辅助寄存器的数值外,还可以指定下一个辅助寄存器,作寄存器的数值外,还可以指定下一个辅助寄存器,作为下一条指令的当前辅助寄存器。为下一条指令的当前辅助寄存器。例例. MAR *, AR1 ; AR
30、1为当前为当前AR,即即ARP=1 LT *+, AR2 ; T=(AR1), AR1=AR1+1, ARP=2 MPY * ; P=T*(AR2)=(AR1)*(AR2)间接寻址举例间接寻址举例ADD *, 8 ADD *+, 8, AR4 ADD *-, 8 ADD *0+, 8 ADD *0-, 8 ADD *BR0+, 8 ADD *BR0-, 8283.3 C24x DSP汇编指令汇编指令C24x DSP指令系统一览表见教材。指令系统一览表见教材。 C24X指令分类表指令分类表 : 86条条 传送指令,算术操作,逻辑运算指令传送指令,算术操作,逻辑运算指令,分支转移指令分支转移指令1
31、)累加器、算术和累加器、算术和逻辑操作指令,逻辑操作指令,26条条2)辅助寄存器辅助寄存器操作指令,操作指令,7条条(BANZ 也是跳转指令也是跳转指令)3)T寄存器、寄存器、P寄存器和乘寄存器和乘操作指令,操作指令,20条条4)跳转指令,跳转指令,12条条5)控制指令,控制指令,15条条(SPM指令与第指令与第3类重复)类重复)6)I/O及数据存储器操作指令,及数据存储器操作指令,8条条汇编指令格式汇编指令格式: 标号标号 指令指令(操作码操作码) 操作数操作数 ;注释注释291) 累加器、算术、逻辑指令累加器、算术、逻辑指令(26条)条)30累加器、算术、逻辑指令(续)累加器、算术、逻辑指
32、令(续)31累加器、算术、逻辑指令(续)累加器、算术、逻辑指令(续)322) 辅助寄存器指令辅助寄存器指令(7条)条)333) T, P寄存器与乘法指令寄存器与乘法指令(20条)条)344) 分支转移指令分支转移指令(12条)条)355) 控制指令控制指令 (15条条)366)/及存储器指令及存储器指令(8条条)37指令中常用符号表指令中常用符号表 AR:辅助寄存器:辅助寄存器ACC:累加器:累加器dma: DM地址低地址低7位位DP:9位数据页面指针位数据页面指针ind: 间接寻址方式间接寻址方式#:立即数:立即数shift: 左移位数左移位数 0-15PA: 16位外部接口地址位外部接口地
33、址shift2: 左移位数左移位数 0-7pma: 16位程序地址位程序地址ARn:指定的指定的辅助寄存器辅助寄存器 cond: 条件指令的条件条件指令的条件( ):存储单元内容存储单元内容 :可选项可选项38汇编语言指令举例汇编语言指令举例: 加法指令加法指令例如,例如, 加法指令:加法指令:ADD dma , shift;直接寻址直接寻址ADD dma, 16;左移左移16位直接寻址位直接寻址ADD ind , shift , ARn ;间接寻址间接寻址ADD ind, 16 , ARn ;左移左移16位间接寻址位间接寻址ADD #k;短立即寻址短立即寻址ADD #lk , shift ;
34、长立即寻址长立即寻址39汇编语言指令举例汇编语言指令举例: 加法指令加法指令ADD例例. 指令指令 ADD *+, 0, AR0 功能:功能: ACC=ACC+(AR), AR=AR+1, ARP=0执行前执行前ARP=4AR4=302HDM: (302H)=2 ACC=2 C=X 执行后执行后ARP=0AR4=303HDM: (302H)=2 ACC=4 C=040汇编语言指令汇编语言指令(1)ABS : 累加器取绝对值累加器取绝对值(2)ADD: 累加器加累加器加(3)ADDC: 带进位累加器加带进位累加器加(4)ADDS: 抑制符号扩展的累加器加抑制符号扩展的累加器加(5)ADDT: T
35、寄存器指定移位次数的累加器加寄存器指定移位次数的累加器加(6)ADRK: 辅助寄存器加短立即数辅助寄存器加短立即数(7)AND: 和累加器进行与操作和累加器进行与操作(8)APAC: P加到加到ACC(9)B : 无条件跳转无条件跳转(10) BACC: 跳转到跳转到ACCL确定的地址确定的地址(11) BANZ: 辅助寄存器非辅助寄存器非0跳转跳转 语法语法: BANZ pma ,ind ,ARn 例例 BANZ PGM191, *-, AR041汇编语言编程例汇编语言编程例 编程将数据存储器编程将数据存储器60H69H单元内容求和。单元内容求和。 MAR MAR * *,AR0 AR0 ;
36、设;设AR0AR0为当前为当前ARAR LAR AR1 LAR AR1,#09H #09H ;1010个单元,计数器个单元,计数器 LAR AR0LAR AR0,#60H #60H ;初始单元;初始单元AR0=#60HAR0=#60H,地址指针,地址指针 LACC #0 LACC #0 ;和初值;和初值 ACC=0ACC=0PGM191PGM191: ADD ADD * *+ +,AR1 AR1 ;累加,;累加,AR0+1AR0+1,下一当前,下一当前ARAR为为AR1AR1 BANZ PGM191, BANZ PGM191,* *-,AR0-,AR0;AR10 AR10 则循环,则循环, 且
37、且AR1=AR1-1AR1=AR1-1 ;下一当前;下一当前ARAR为为AR0AR0 ; ACC=0+(60H)+(61H)+ACC=0+(60H)+(61H)+(69H)+(69H)42(12) BCND: 条件跳转条件跳转(13) BIT: 位测试位测试(14) BITT: T寄存器指定测试寄存器指定测试(15) BLDD: 数据块移动数据块移动(16) BLPD: 程序区到数据区的块移动程序区到数据区的块移动(17) CALA: 调用调用ACC指定的子程序指定的子程序(18) CALL: 无条件调用子程序无条件调用子程序(19) CC: 条件调用条件调用(20) CLRC: 控制位清控制
38、位清0(21) CMPL:ACC取反取反 (22) CMPR: 辅助寄存器辅助寄存器AR与与AR0比较比较(23) DMOV: 数据移动数据移动(24) IDLE:等待中断等待中断(25) IN: 从外部端口读入数据从外部端口读入数据43BITT指令指令: T寄存器指定位测试寄存器指定位测试语法:语法:1) BITT dma 2) BITT ind ,ARn功能:将功能:将DM单元中指定的位复制到状态寄存器单元中指定的位复制到状态寄存器ST1的的TC位。指定的位对应于位。指定的位对应于15-T(3:0)。例例 BITT 00H ;(DP=6)执行前执行前DM: (300H)=4DC8HT=1T
39、C=0执行后执行后DM: (300H)=4DC8H 0100 DC8 T=1 D(15-1)=D14=1TC=144BLDD指令指令:数据块移动数据块移动语法:语法:1) BLDD #lk, dma 2) BLDD #lk, ind , ARn 3) BLDD dma, #lk 4) BLDD ind,#lk , ARn说明:该指令实现说明:该指令实现DM到到DM的块移动,第一个数指定源地址,的块移动,第一个数指定源地址,第二个数指定目的地址。一旦启动了流水线,它就成为单周期第二个数指定目的地址。一旦启动了流水线,它就成为单周期指令。指令。例子例子, BLDD #300h,20h; (DP=6
40、)执行前执行前DM: (300h)=05h (320h)=0fh执行后执行后DM: (300h)=05h (320h)=05h45(26) INTR: 软件中断软件中断(27) LACC: 带移位的带移位的ACC装载装载(28) LACL: 装载装载ACCL,ACCH=0(29) LACT: 由由T指定移位次数的指定移位次数的ACC装载装载(30) LAR: Load AR 装载辅助寄存器装载辅助寄存器(31) LDP: Load DP 装载装载DP(32) LPH: Load PH(33) LST: Load ST(34) LT: Load T(35) LTA: Load T and Add
41、(36) LTD: 装载装载T寄存器、累加前次乘积并移动寄存器、累加前次乘积并移动(37) LTP: 装载装载T寄存器并将寄存器并将P送到送到ACC(38) LTS: Load T and Subtract(39) MAC: 乘累加乘累加46MAC指令指令: 乘累加乘累加语法语法 1) MAC pma, dma 2) MAC pma, ind , ARn功能功能:ACC=ACC+P, T=(dma), P=(pma)*(dma) = (pma)*T例例, MAC 0FF00H, 08 ; (DP=6, 移位模式移位模式PM=00)执行前执行前DM: (308h)=23hPM: (FF00H)=
42、4T= 45h P=458972hACC=723EC41h执行后执行后DM: (308h)=23hPM: (FF00H)=4T= 23h P=8CHACC=76975b3h47MACD 指令:乘累加并移动数据指令:乘累加并移动数据语法语法 1) MACD pma, dma 2) MACD pma, ind ,ARn例例, MACD 0FF00H, 08 ; (DP=6, 移位移位PM=00)功能功能:ACC=ACC+P, T=(DM), P=(PM)*(DM), (DM+1)=(DM)执行前执行前执行后执行后DM: (308h)=23h DM: (308h)=23hDM: (309h)=18h
43、 DM: (309h)=23hPM: (FF00H)=4 PM: (FF00H)=4T= 45h T= 23h P=458972h P=8CHACC=723EC41hACC=76975b3h48(40) MACD : 乘累加并移动数据乘累加并移动数据(41) MAR: Modify AR 修改辅助寄存器修改辅助寄存器(42) MPY: Multiply 乘乘(43) MPYA:乘且累加前次积乘且累加前次积(44) MPYS: 乘且减去前次积乘且减去前次积(45) MPYU: 无符号乘无符号乘(46) NEG: ACC取补码取补码(47) NMI:Non Maskable Interrupt 非
44、屏蔽中断非屏蔽中断(48) NOP: No Operation 空操作空操作(49) NORM: ACC规格化规格化(50) OR: 与与ACC或运算或运算(51) OUT:输出数据到端口输出数据到端口(52) PAC: P送到送到ACC(53) POP: 栈定内容弹出到栈定内容弹出到ACCL49(54) POPD: POP to Data memory栈顶内容弹出到数据存储器单元栈顶内容弹出到数据存储器单元(55) PSHD:数据存储器单元压入堆栈数据存储器单元压入堆栈(56) PUSH: ACCL压入堆栈压入堆栈(57) RET: 子程序返回子程序返回(58) RETC:条件返回条件返回(
45、59) ROL: A循环左移循环左移(60) ROR: A循环右移循环右移(61) RPT:重复执行下一条指令重复执行下一条指令(62) SACH: Store ACCH(63) SACL: Store ACCL(64) SAR: Store AR(65) SBRK: AR减去短立即数减去短立即数50PSHD指令指令:数据存储器单元压入堆栈数据存储器单元压入堆栈语法语法: 1) PSHD dma 2) PSHD ind , ARn说明:堆栈依次向下移动一级,指定说明:堆栈依次向下移动一级,指定存储器单元存储器单元的内容复制到栈顶。的内容复制到栈顶。堆栈底部的值丢失。堆栈底部的值丢失。例子例子
46、PSHD *, AR1执行前执行前ARP=0AR0=1FFHDM: (1FFH)=12H硬件堆栈硬件堆栈 2h33h 78h 99h 42h 50h 0h 0h执行后执行后ARP=1AR0=1FFHDM: (1FFH)=12H硬件堆栈硬件堆栈12h 2h33h 78h 99h 42h 50h 0h51POPD指令指令: 栈顶内容弹出到存储器单元栈顶内容弹出到存储器单元说明:栈顶的内容复制到说明:栈顶的内容复制到DM单元中。堆栈值依次向上复制一级。单元中。堆栈值依次向上复制一级。语法语法: 1) POPD dma 2) POPD ind , ARn例子例子 POPD 20h ; (DP=6)执行前执行前DM: (320H)=82H硬件堆栈硬件堆栈45h16h 7h 33h 42h 56h 37h 61h执行前执行前DM: (320H)=45H硬件堆栈硬件堆栈16h 7h 33h 42h 56h 37h 61h61h52(66) SETC: 控制位置位控制位置位(67) SFL: A左移左移(68) SFR: A右移右移(69) SPAC: A减减P(70) SPH: Store PH(71)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度商业秘密合作转让合同协议
- 二零二五年度猪肉市场风险预警与应对合同
- 二零二五年度社区服务兼职志愿者服务协议
- 二零二五年度成人外语培训机构报名服务协议
- 二零二五年度手货车车辆转让与汽车金融服务及市场推广合同
- 2025年度游学旅游线路研发与推广协议
- 2025年度珠宝首饰返佣金代理合同
- 2025年度混凝土班组劳务合作施工进度合同
- 二零二五年度精装修房屋买卖合同违约赔偿标准
- 二零二五年度房产交易全程服务协议范本
- 2025中国华电校园招聘高频重点提升(共500题)附带答案详解
- 住宅建筑室内装饰装修设计管理研究
- 教育部《中小学校园食品安全和膳食经费管理工作指引》专题讲座
- 龙门吊安装及拆除安全专项施工方案
- 2024年江苏省中小学生金钥匙科技竞赛(高中组)考试题库(含答案)
- 理疗课件教学课件
- 2024解析:第十二章滑轮-讲核心(解析版)
- 《非精密进近》课件
- 人教PEP版(一起)(2024)一年级上册英语全册教案(单元整体教学设计)
- 2024 年下半年数学一年级数学思维挑战试卷
- 网络试运行方案
评论
0/150
提交评论