版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在DSP应用中,虽然可以使用C/C++高级语言编程,降低了对编程者的要求,但在一些实时性要求高的场合仍然需要采用汇编编程,以充分利用DSP丰富的硬件资源,发挥它的实时运算能力。用汇编语言编程,要求编程者对DSP的低层有充分的了解,包括硬件结构、存储器空间模型和I/O口的组织等。同时又要求编程者对指令系统有深刻的了解。第3章汇编语言指令系统
目录:
3.1C54x汇编语言指令集介绍
3.2寻址方式
3.3C54x系列DSP的指令系统
第3章汇编语言指令系统
C54x指令集包括:本章介绍C54xDSP的汇编语言指令系统。与其它CPU的指令集相同,汇编语言指令又称为硬指令,它们在汇编和连接后形成可执行的机器码,供DSP进行运算和其它操作。汇编语言指令汇编伪指令宏指令第3章汇编语言指令系统3.1C54x汇编语言指令集介绍
第3章汇编语言指令系统3.1.1指令系统中的符号、缩写及操作符
指令系统中采用的符号和缩写如下列表中所示序号符号含
义1A累加器A2ALU算术逻辑运算单元3AR泛指通用辅助寄存器4ARx指定某一辅助寄存器AR0~AR75ARP
ST0中的3位辅助寄存器指针6ASM
ST1中的5位累加器移位方式位-16~157B累加器B8BRAF
ST1中的块重复操作标志9BRC块重复操作寄存器10BITC或bit_code用于测试指令,指定数据存储器单元中的哪一位被测试,取指范围:0~15第3章汇编语言指令系统序号符号含
义11C16
ST1中的双16位/双精度算术运算方式位12C
ST0中的进位位13CC
2位条件码(0CC3)14CMPT
ST1中的ARP修正方式位15CPL
ST1中的直接寻址编辑标志位16cond表示一种条件的操作数,用于条件执行指令17[d],[D]延时选项18DAB
D地址总线19DAR
DAB地址寄存器20dmad
16位立即数数据存储器地址(0~65535)3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义21Dmem数据存储器操作数22DP
ST0中的数据存储器页指针(0DP511)23Dst目的累加器(A和B)24dst_与dst相反的目的累加器25EAB
E地址总线26EAR
EAB地址总线27extpmad
23位立即程序存储器地址28FRCT
ST1中的小数方式位29hi(A)累加器的高阶位(AH或BH)30HM
ST1中的保持方式位3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义31IFR中断标志寄存器32INTM
ST1中的中断屏蔽位33K少于9位的短立即数34k3
3位立即数(0k37)35k5
5位立即数(-16k515)36k9
9位立即数(0k9511)37lk
16位长立即数38Lmem利用长字寻址的32位单数据存储器操作数39Mmr,MMR存储器映像寄存器40MMRx,MMRy存储器映像寄存器,AR0~AR7或SP3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义41n
XC指令后面的字数,取1或242N指定状态寄存器,N=0为ST0,N=1为ST143OVA
ST0中的累加器A溢出标志44OVB
ST0中的累加器B溢出标志45OVdst指定目的累加器(A或B)的溢出标志46OVdst_指定与Ovdst相反的目的累加器的溢出标志47OVsrc指定源累加器(A或B)的溢出标志48OVM
ST1中的溢出方式位49PA
16位立即端口地址(0PA65535)50PAR程序存储器地址寄存器3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义51PC程序计数器52pmad
16位立即程序存储器地址(0pmad65535)53pmem程序存储器操作数54PMST处理器工作方式状态寄存器55prog程序存储器操作数56[R]舍入选项57rnd循环寻址58RC重复计数器59RTN快速返回寄存器60REA块重复结束地址寄存器3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义61RSA块重复起始地址寄存器62SBIT用于指定状态寄存器位的4位地址(0~15)63SHFT
4位移位值(0~15)64SHIFT
5位移位值(-16~15)65Sind间接寻址的单数据存储器操作数66Smem
16位单数据存储器操作数67SP堆栈指针寄存器68src源累加器(A或B)69ST0,ST1状态寄存器0,状态寄存器170SXM
ST1中的符号扩展方式位3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义71T暂存器72TC
ST0中的测试/控制标志73TOS堆栈顶部74TRN状态转移寄存器75TS由T寄存器的5~0位所规定的移位数(-16~31)76uns无符号数77XF
ST1中的外部标志状态位78XPC程序计数器扩展寄存器79Xmem
16位双数据存储器操作数,用于双数据操作数指令80Ymem
16位双数据存储器操作数,用于双数据操作数指令和单数据操作指令3.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统序号符号含
义81--SP堆栈指针值减182++SP堆栈指针值加183++PC程序计数器值加13.1.1指令系统中的符号、缩写及操作符
第3章汇编语言指令系统3.1.1指令系统中的符号、缩写及操作符
指令系统中的运算符号及优先级如下列表中所示序号符号运算功能求值顺序1+-~!取正、取负、按位求补、逻辑负
从右至左2*/%乘法、除法、求模从左至右3+-加法、减法从左至右4^指数
从左到右
5<<>>左移、右移从左至右6<小于、小于等于从左至右7>大于、大于等于从左至右8!=不等于从左至右第3章汇编语言指令系统序号符号运算功能求值顺序8=等于从左至右9&按位与运算(AND)从左至右10∧
按位异或运算(exclusiveOR)从左至右11|按位或运算(OR)从左至右3.1.1指令系统中的符号、缩写及操作符
本节以LD装载指令为例,说明指令的格式和其它一些有用信息。
汇编语法操作数指令代码执行状态位说明指令字长周期数
第3章汇编语言指令系统3.1.2汇编语言指令举例(P61)第3章汇编语言指令系统3.2寻址方式
C54x的寻址方式共有下列7种:立即寻址绝对寻址累加器寻址直接寻址间接寻址存储器映像寄存器寻址堆栈寻址
立即寻址是指指令中的操作数是一个立即数,用#表示。可使用立即寻址的指令及立即数的位数如下表所示:第3章汇编语言指令系统3.2.1立即寻址3位或5位立即数
8位立即数
9位立即数
16位立即数
LD
FRAMELDRPT
LD
ADDBITFORSTADDMCMPMORMSTMANDLDRPTSUBANDMMACRPTZXORXORM例:LD#4,DP;4->DP指令代码:EA04h第3章汇编语言指令系统3.2.2绝对寻址第3章汇编语言指令系统绝对寻址是指指令中包含着操作数的地址。
绝对寻址有下列4种类型:数据存储器(dmad)寻址程序存储器(pmad)寻址
I/O端口(PA)寻址
*(lk)寻址相关指令如下表所示:第3章汇编语言指令系统3.2.2绝对寻址绝对寻址方式相关指令数据存储器(dmad)寻址
MVDKSmem,dmad
MVDMdmad,MMR
MVKDdmad,Smem
MVMDMMR,dmad
程序存储器(pmad)寻址
FIRSXmem,Ymem,pmad
MACDSmem,pmad,src绝对寻址的地址,通常用一个在程序的初始化中指定的地址标号或符号来指明该数据存储器地址绝对寻址的地址,通常用一个在程序的初始化中指定的地址标号或符号来指明该程序存储器地址第3章汇编语言指令系统绝对寻址方式相关指令程序存储器(pmad)寻址
MACPSmem,pmad,src
MVDPSmem,pmad
MVPDpmad,SmemI/O端口(PA)寻址
PORTRPA,Smem
PORTWSmem,PA
*(lk)寻址
可用于所有支持单数据操作数(Smem)
的指令,通过*(lk)可以寻址数据空间的任意地址
3.2.2绝对寻址绝对寻址的地址,通常用一个在程序的初始化中指定的地址标号或符号来指明该IO口地址LD*AR3,ALD*(BUFFER),B该指令的功能是指将标号为BUFFER的数据存储器单元的内容送入累加器B.累加器寻址是将累加器A中的内容(低16位)作为程序存储器的地址,完成程序空间和数据空间的数据访问的一种方式。
有两条指令采用这种寻址方式
:第3章汇编语言指令系统3.2.3累加器寻址
累加器寻址指令解释READASmem
A中内容为程序存储器地址,将该地址中的数据送入Smem指定的数据存储器中WRITASmem
将Smem指定的数据存储器中的内
容送入A所指出的程序存储器中
直接寻址是指利用指令中的地址偏移量dma与数据页指针DP或堆栈指针SP组合,找到数据空间中的一个16位地址的方式。直接寻址的表示方法是在符号或偏移量前加@。如LD@60h,A
指令代码格式如下所示:第3章汇编语言指令系统3.2.4直接寻址15~8
7
6~0
操作码
I=0
数据存储器地址(dmad)
7位直接寻址有两种产生地址的方法,由ST1中的位CPL来控制CPL=0时
第3章汇编语言指令系统3.2.4直接寻址(基地址+偏移量)直接寻址指令15~876~0操作码I=0dmad页指针DP(位于ST0中)9位数据页指针DP高9位低7位16位数据存储器地址9位数据页指针DPdmad0~5110~127可以访问64K的数据空间CPL=1时
第3章汇编语言指令系统3.2.4直接寻址dmad低7位16位数据存储器地址16位堆栈指针SP堆栈指针SPSP+dmad16位SP+dmad直接寻址指令15~876~0操作码I=0dmad
间接寻址是指通过两个辅助算术逻辑单元ARAU0、ARAU1及8个辅助寄存器AR0~AR7,间接获得数据存储器地址的方式。在这种方式下,辅助寄存器的内容就是数据空间操作数的地址。
按照寻址目的可将间接寻址分为:单操作数寻址双操作数寻址第3章汇编语言指令系统3.2.5间接寻址单操作数寻址
单操作数间接寻址可以使用所有8个辅助寄存器AR0~AR7存放数据空间的Smem地址,并具有16种不同的地址调整功能。第3章汇编语言指令系统3.2.5间接寻址单操作数寻址结构图如下所示:第3章汇编语言指令系统3.2.5间接寻址CAB、DAB、EAB负责传送数据存储器地址CB、DB、EB负责传送读/写数据循环缓冲区长度寄存器相对位置辅助寄存器指针辅助算术逻辑运算单元第3章汇编语言指令系统3.2.5间接寻址单操作数寻址
地址存放情况及地址调整功能共16种:(P68)
操作句法功
能说
明*
ARx
地址=ARx
ARx的内容为数据存储器地址*
+ARx
ARx=ARx+1
地址=ARx
ARx中的地址加1后,再寻址
*
ARx-
地址=ARx
ARx=ARx-1寻址结束后,ARx地址减1*
ARx+
地址=ARx
ARx=ARx+1寻址结束后,ARx地址加1*
ARx-0
地址=ARx
ARx=ARx-AR0
寻址结束后,从ARx中减去AR0的值第3章汇编语言指令系统3.2.5间接寻址单操作数寻址操作句法功
能说
明*
ARx+0
地址
=ARx
ARx=ARx+AR0
寻址结束后,把AR0加到ARx
中*
ARx-0B
地址=ARx
ARx=B(ARx-AR0)寻址结束后,用位倒序进位的方法从ARx中减去AR0的值
*
ARx+0B
地址=ARx
ARx=B(ARx+AR0)寻址结束后,用位倒序进位的方法将
AR0加到ARx中*
ARx-%
地址=ARx
ARx=Circ(ARx-1)寻址结束后,ARx中的地址值按循环减的方法减1*
ARx+%
地址=ARx
ARx=Circ(ARx+1)寻址结束后,ARx中的地址值按循环加的方法加1第3章汇编语言指令系统3.2.5间接寻址单操作数寻址操作句法功
能说
明*
ARx-0%
地址=ARx
ARx=Circ(ARx-AR0)
寻址结束后,按循环减的方法从
ARx中减去AR0中的值
*
ARx+0%
地址=ARx
ARx=Circ(ARx+AR0)
寻址结束后,按循环加的方法将AR0中的值加到ARx
*
ARx(lk)
地址=ARx+lk
ARx=ARx以ARx与16位数之和作为地址,寻址结束后,ARx中的值不变
*
+ARx(lk)
地址=ARx+lk
ARx=ARx+lk将一个16位带符号数加到ARx,然后寻址*
ARx(lk)%
地址=Circ(ARx+lk)
ARx=Circ(ARx+lk)将一个16位带符号数按循环加的方法加至ARx,然后再寻址*
(lk)
地址=(lk)利用16位无符号数作为地址,寻址数据存储器位反向寻址位反向寻址是专门为快速傅立叶变换FFT而设计的。4位二进制数的原始地址与位反向地址的对应关系如下表所示:
详见P69表3-5第3章汇编语言指令系统3.2.5间接寻址(二个关键问题)第3章汇编语言指令系统3.2.5间接寻址正常顺序原始地址位反向地址位反向顺序00000000001000110008200100100430011110012401000010250101101010601100110670111111014位反向寻址
第3章汇编语言指令系统3.2.5间接寻址正常顺序原始地址位反向地址位反向顺序81000000119100110019101010010151110111101131211000011313110110111114111001117151111111115位反向寻址
第3章汇编语言指令系统3.2.5间接寻址循环寻址目的:提高运算速度算法如下:
循环寻址的算法:If0偏移量+步长<
BK;
偏移量=偏移量+步长;Else
if偏移量+步长
BK;偏移量=偏移量+步长-BK;Else
if偏移量+步长
<0;偏移量=偏移量+步长+BK。①地址指针可由低向高增值变化,当增至最高地址时,能够自动返回最低地址;②或由高减量变化,当减至最低地址时,可自动返回最高地址。第3章汇编语言指令系统3.2.5间接寻址循环寻址(P70几个关键参量)
循环寻址示意图如下所示:
循环缓冲区长度寄存器②双操作数寻址
双操作数寻址结构图如下所示:
第3章汇编语言指令系统3.2.5间接寻址第3章汇编语言指令系统3.2.5间接寻址②双操作数寻址
双操作数寻址有4种地址存放情况和地址调整功能:操作码语法功能
说明
*
ARx地址=ARxARx中的内容是数据存储器地址
*
ARx-地址=ARxARx=ARx-1寻址后,ARx的地址减1
*
ARx+地址=ARxARx=ARx+1寻址后,ARx的地址加1
*
ARx+0%地址=ARxARx=circ(ARx+AR0)寻址后,AR0以循环寻址方式加到ARx中去
存储器映像寄存器寻址是一种直接访问存储器映像寄存器MMR的方式,可以用来修改MMR的值。
有8条指令可以使用存储器映像寄存器寻址:
第3章汇编语言指令系统3.2.6存储器映像寄存器寻址第3章汇编语言指令系统3.2.6存储器映像寄存器寻址存储器映像寄存器寻址
LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRy
POPMMMR(出栈)PSHMMMR(入栈)STLMsrc,MMRSTM#lk,MMR
堆栈寻址用于进行数据或者MMR的入栈和出栈操作。C54X堆栈是下拉式堆栈,即入栈时地址值减小,而出栈时地址值增加。堆栈指针是16位的存储器映像寄存器SP,它总是指向栈顶位置。下列4条指令使用堆栈寻址:
第3章汇编语言指令系统3.2.7堆栈寻址堆栈寻址
PSHDSmem
PSHMMMRPOPDSmemPOPMMMR
C54x的汇编语言指令集共有129条基本指令,按完成的功能可以分为6类:第3章汇编语言指令系统3.3C54x系列DSP的指令系统
数据存取指令算术运算指令逻辑运算指令
控制程序转移指令重复操作指令并行操作指令本节只介绍非并行的数据存取指令,包括:第3章汇编语言指令系统3.3.1数据存取指令
加载指令存储指令
32位长操作数的加载、存储指令混合加载和存储指令以累加器A或B为目标操作数的LD指令
第3章汇编语言指令系统
加载指令
(LD)以累加器A或B为目标操作数的LD指令
LDSmem,dstLDSmem,TS,dstLDSmem,16,dstLDSmem[,SHIFT],dstLDXmem,SHFT,dstLD#K,dstLD#lk[,SHFT],dstLD#lk,16,dstLDsrc,ASM[,dst]LDsrc[,SHIFT],dst例3.11LD*AR3,A1)当SXM=0时,进行无符号数的加载第3章汇编语言指令系统
加载指令
指令执行前
A0000000000SXM0AR30200数据存储器
0200H95A6指令执行后
A00000095A6SXM0AR30200数据存储器
0200H95A6例3.11LD*AR3,A2)当SXM=1时,进行有符号数的加载第3章汇编语言指令系统
加载指令
指令执行前
A0000000000SXM1AR30200数据存储器
0200H95A6指令执行后
AFFFFFF95A6SXM1AR30200数据存储器
0200H95A6例3.11LDA,4,B1)当OVM=0时,对溢出不进行处理,仅通过OVB=1反映溢出第3章汇编语言指令系统
加载指令
指令执行前A007FFF8000B000000FFFFOVB0OVM0指令执行后A007FFF8000B07FFF80000OVB1OVM0例3.11LDA,4,B2)当OVM=1时,对溢出进行处理(置32位最大的正数)第3章汇编语言指令系统
加载指令
指令执行前A007FFF8000B000000FFFFOVB0OVM0指令执行后A007FFF8000B007FFFFFFFOVB1OVM1以暂存器T或ST0、ST1的DP、ASM及ARP字段为目标操作数的LD指令
第3章汇编语言指令系统
加载指令
以暂存器T或ST0、ST1的DP、ASM及ARP字段为目标操作数的LD指令
LDSmem,TLDSmem,DPLD#k9,DPLD#k5,ASMLD#k3,ARPLDSmem,ASM例3.13LD0,ASM第3章汇编语言指令系统
加载指令
ASM00DP3
数据存储器
0180H1234指令执行前指令执行后
ASM14DP003
数据存储器
0180H1234为MMR赋值的指令
第3章汇编语言指令系统②存储指令(ST)
为MMR赋值的指令STLMsrc,MMR;
MMR=src(15-0),将累加器的低16位送入MMR,是1字1周期指令。STM#lk,MMR;
MMR=#lk,将长立即数送入
MMR,是2字2周期指令。例3.14
STLMA,*AR2(P77)第3章汇编语言指令系统②存储指令
指令执行前
A0012345678AR27315AR5(15h)3F69
指令执行后
A0012345678AR20015AR55678
例3.15
STM#1357H,*AR4+
第3章汇编语言指令系统②存储指令
指令执行前
AR00000AR48010指令执行后
AR01357AR40011
例3.16
STM#2468H,60H
第3章汇编语言指令系统②存储指令
指令执行前
0060H0000指令执行后
0060H2468
STH和STL指令(H表高16位L表低16位)
第3章汇编语言指令系统②存储指令
STH和
STL指令
STHsrc,Smem将AH或BH内容送入SmemSTHsrc,ASM,SmemSTHsrc,SHFT,XmemSTHsrc[,SHIFT],SmemSTLsrc,SmemSTLsrc,ASM,SmemSTLsrc,SHFT,Xmem
STLsrc[,SHIFT],Smem
例3.17设累加器(A)=FF98765432HSTL A,8,da
第3章汇编语言指令系统②存储指令
(da)=3200H
STL A,-8,da
STH A,8,da
STH A,-16,da
STH A,-8,da
(da)=7654H
(da)=7654H
(da)=FF98H
(da)=00FFH(SXM=0)
STH A,-16,da
(da)=FFFFH(SXM=1)
第3章汇编语言指令系统③
32位长操作数的加载、存储指令及数据存放格式
32位长操作数的加载、存储指令及数据存放格式DLDLmem,dst
在单周期内同时利用CAB、CB和DAB、DB总线将32位Lmem
读入累加器。是1字1周期指令。DSTsrc,Lmem
两次使用EAB、EB总线将累加器的内容分别写入高16位和低16位数据存储器。是1字2周期指令。
例3-18存放格式对数据存储的影响(P78)
DSTB,*AR3+1)偶地址存放第3章汇编语言指令系统③
32位长操作数的加载、存储指令及数据存放格式指令执行前
B006CACBD90AR30100数据存储器
0100H00000101H0000指令执行后
B006CACBD90AR30102数据存储器
0100H6CAC
0101HBD90第3章汇编语言指令系统③
32位长操作数的加载、存储指令及数据存放格式
2)奇地址存放指令执行前
B006CACBD90AR30101数据存储器
0100H00000101H0000指令执行后
B006CACBD90AR30103数据存储器
0100HBD90
0101H6CAC例3-19存放格式对数据存储的影响
DLD*AR3+,B1)偶地址存放第3章汇编语言指令系统③
32位长操作数的加载、存储指令及数据存放格式指令执行前
B0000000000AR30100数据存储器
0100H6CAC0101HBD90指令执行后
B006CACBD90AR30102数据存储器
0100H6CAC
0101HBD90第3章汇编语言指令系统③
32位长操作数的加载、存储指令及数据存放格式
2)奇地址存放指令执行前
B0000000000AR30101数据存储器
0100H6CAC0101HBD90指令执行后
B00BD906CACAR30103数据存储器
0100H6CAC
0101HBD90
C54x的算术运算指令包括:第3章汇编语言指令系统3.3.2算术运算指令基本算术运算指令特殊运算指令双字(32位)算术运算指令乘累加和乘累减指令
第3章汇编语言指令系统基本算术运算指令加法指令操作字数周期数
ADDSmem
,src
src=src+Smem
1
1
ADDSmem
,TS,src
src=src+Smem<<TS
1
1
ADDSmem
,16
,src[,dst]
dst=src+Smem<<16
1
1
ADDSmem,[,SHIFT],src[,dst]
dst=src+Smem<<SHIFT
2
2
ADDXmem
,SHFT
,src
src=src+Xmem<<SHFT
1
1
ADDXmem
,Ymem
,dst
dst=Xmem<<16+Ymem<<16
1
1
ADD#lk,[,SHFT],src[,dst]
dst=src+#lk<<SHFT
2
2ADD#lk,16,src[,dst]
dst=src+#lk<<16
2
2
ADDsrc,[,SHIFT][,dst]
dst=dst+src<<SHIFT
1
2
ADDsrc,ASM[,dst]
dst=dst+src<<ASM11
ADDCSmem
,src
src=src+Smem+C
1
1
ADDM#lk,Smem
Smem=Smem+#lk
2
2
ADDSSmem
,src
src=src+uns(Smem)
1
1第3章汇编语言指令系统减法指令操作字数周期数
SUBSmem
,src
src=src-Smem
1
1
SUBSmem
,TS,src
src=src-Smem<<TS
1
1
SUBSmem
,16
,src[,dst]
dst=src-Smem<<16
1
1
SUBSmem,[,SHIFT],src[,dst]
dst=src-Smem<<SHIFT
2
2
SUBXmem
,SHFT
,src
src=src-Xmem<<SHFT
1
1
SUBXmem
,Ymem
,dst
dst=Xmem<<16-Ymem<<16
1
1
SUB#lk,[,SHFT],src[,dst]
dst=src-#lk<<SHFT
2
2SUB#lk,16,src[,dst]
dst=src-#lk<<16
2
2
SUBsrc,[,SHIFT][,dst]
dst=dst-src<<SHIFT
1
1
SUBsrc,ASM[,dst]
dst=dst-src<<ASM11
SUBBSmem
,src
src=src-Smem-C
1
1
SUBCSmem
,src
If(src-Smem<<15)>0,
src=(src-Smem<<15)<<1+1Elsesrc=src<<1
1
1
SUBSSmem
,src
src=src-uns(Smem)
1
1基本算术运算指令第3章汇编语言指令系统乘法指令操作字数周期数
MPYSmem
,dst
dst=T*Smem
1
1
MPYRSmem
,dst
dst=rnd(T*Smem)
1
1
MPYXmem
,Ymem
,dst
dst=Xmem
*Ymem,T=Xmem
1
1
MPYSmem
,#lk
,dst
dst=Smem
*#lk
,T=Smem
2
2
MPY#lk
,dst
dst=T*#lk
2
2
MPYA
dst
dst=T*A(32-16)
1
1
MPYASmem
B=Smem*A(32-16),T=Smem
1
1
MPYUSmem
,dst
dst=uns(T)*uns(Smem)
1
1
SQURSmem
,dst
dst=Smem
*Smem,T=Smem
1
1
SQURA,dst
dst=A(32-16)*A(32-16)
1
1基本算术运算指令第3章汇编语言指令系统②
特殊运算指令特殊运算指令操作字数周期数
ABDSTXmem
,Ymem
B
=B
+|A(32-16)|,A=(Xmem-Ymem)<<16
1
1
ABSsrc
[,dst
]
dst
=|src
|11
CMPLsrc
[,dst
]
dst
=src
1
1
DELAYSmem
(Smem
+1)=Smem
1
1
EXPsrc
T=带符号数(src)-8
1
1
FIRSXmem
,Ymem
,
Pmad
B=B
–A*Pmad,A=(Xmem+Ymem)<<1623
LMSXmem
,Ymem
B=B+
Xmem
*Ymem,A=(A
+Xmem<<16)+215
1
1第3章汇编语言指令系统②
特殊运算指令特殊运算指令功能字数周期数
MAXdst
dst
=max(A,B)
1
1
MINdst
dst
=min(A,B)11
NEGsrc
[,dst
]
dst
=-src
1
1
NORMsrc
[,dst
]
dst
=src<<TS,
dst
=norm(src,T)
1
1
POLYSmem
B=Smem<<16,A=rnd(A
*T
+B
)
1
1
RNDsrc
[,dst
]
dst
=src
+21511
SATsrc
Saturate(src)
1
1
SQDSTXmem
,Ymem
B=B+
A(32-16)*A(32-16)A=(Xmem-Ymem)<<16
1
1第3章汇编语言指令系统③
双字(32位)算术运算指令双字指令操作字数周期数C16=0C16=1DADDLmem,src[,dst]dst=
Lmem+srcdst(39~16)=Lmem(31~16)+src(31~16)dst(15~0)=Lmem(15~0)+src(15~0)1
1DADSTLmem,dstdst=
Lmem+(T<<16+T)dst(39~16)=Lmem(31~16)+Tdst(15~0)=Lmem(15~0)–T11DRSUBLmem,srcsrc=
Lmem–srcsrc(39~16)=Lmem(31~16)–src(31~16)src(15~0)=Lmem(15~0)–src(15~0)
1
1第3章汇编语言指令系统③
双字(32位)算术运算指令双字指令操作字数周期数C16=0C16=1DSADTLmem,dstdst=
Lmem–(T<<16+T)dst(39~16)=Lmem(31~16)–Tdst(15~0)=Lmem(15~0)+T1
1DSUBLmem,srcsrc=
src–Lmemsrc(39~16)=src(31~16)–mem(31~16)src(15~0)=src(15~0)–mem(15~0)
1
1DSUBTLmem,dstdst=
Lmem–(T<<16+T)dst(39~16)=Lmem(31~16)–Tdst(15~0)=Lmem(15~0)–T
1
1对常用的乘累加指令的分析:
第3章汇编语言指令系统④
乘累加和乘累减指令MAC[R]MACA[R]MACP和MACDMACSUXmem,Ymem,src
指令MACDSmem,pmad,src
的操作框图如下图所示:第3章汇编语言指令系统④
乘累加和乘累减指令第3章汇编语言指令系统④
乘累加和乘累减指令指令操作字数周期数MACSmem,srcsrc=src+T*Smem
11MACRSmem,srcsrc=rnd(src+T*Smem)11MAC#lk,src[,dst]dst=src+T*#lk
22MACSmem,#lk,src[,dst]dst=src+Smem*#lk,T=Smem22MACXmem,Ymem,src[,dst]dst=src+Xmem*Ymem,T=Xmem11MACRXmem,Ymem,src[,dst]dst=rnd(src+Xmem*Ymem),T=Xmem11MACASmem[,B]B=B+Smem*A(32~16),T=Smem11MACARSmem[,B]B=B+rnd(Smem*A(32~16)),T=Smem11第3章汇编语言指令系统④
乘累加和乘累减指令指令操作字数周期数MACAT,src[,dst]
dst=src+T*A(32~16)11MACART,src[,dst]
dst=rnd(src+T*A(32~16))11MACDSmem,pmad,src
src=src+Smem*pmad,T=Smem,(Smem+1)=Smem23MACPSmem,pmad,srcsrc=src+Smem*pmad,T=Smem
23MACSUXmem,Ymem,src
src=src+uns(Xmem)*Ymem,T=Xmem11MASSmem,src
src=src–T*Smem
11MASRSmem,src
src=rnd(src–T*Smem)
11第3章汇编语言指令系统④
乘累加和乘累减指令指令操作字数周期数MASXmem,Ymem,src[,dst]dst=src–Xmem*Ymem,T=Xmem
11MASRXmem,Ymem,src[,dst]dst=rnd(src–Xmem*Ymem),T=Xmem
11MASASmem[,B]B=B–Smem*A(32~16),T=Smem
11MASAT,src[,dst]dst=src–T*A(32~16)11MASART,src[,dst]dst=rnd(src–T*A(32~16))11SQURASmem,src
src=src+Smem*Smem,T=Smem
11SQURSSmem,src
src=src–Smem*Smem,T=Smem
11逻辑运算指令包括:第3章汇编语言指令系统3.3.3逻辑运算指令布尔型指令移位指令测试指令
第3章汇编语言指令系统布尔型指令与指令操作字数周期数
ANDSmem
,src
src
=src&Smem
1
1
AND#lk[,SHFT],src[,dst]
dst
=srclk<<SHFT
2
2AND#lk,16,src[,dst]
dst
=srclk<<16
2
2
ANDsrc[,SHIFT][,dst]
dst=dst&src<<SHIFT
1
1
ANDM#lk,Smem
Smem
=Smemlk
2
2第3章汇编语言指令系统或指令操作字数周期数
ORSmem
,src
src
=src
|
Smem
1
1
OR#lk[,SHFT],src[,dst]
dst
=src
|#lk<<SHFT
2
2OR#lk,16,src[,dst]
dst
=src
|#lk<<16
2
2
ORsrc[,SHIFT][,dst]
dst=dst
|
src<<SHIFT
1
1
ORM#lk,Smem
Smem
=Smem
|#lk
2
2布尔型指令第3章汇编语言指令系统异或指令操作字数周期数
XORSmem
,src
src
=src
Smem
1
1
XOR#lk[,SHFT],src[,dst]
dst
=src
#lk<<SHFT
2
2XOR#lk,16,src[,dst]
dst
=src
#lk<<16
2
2
XORsrc[,SHIFT][,dst]
dst=dst
src<<SHIFT
1
1
XORM#lk,Smem
Smem
=Smem
#lk
2
2布尔型指令
移位指令共6条,都是单字单周期指令。第3章汇编语言指令系统②
移位指令指令操作ROLsrc带进位位C的循环左移ROLTCsrc带测试位TC的循环左移RORsrc带进位位C的循环右移SFTAsrc,SHIFT[,dst]
dst=src<<SHIFT{算术移位}SFTCsrc若
src(31)=src(30)则
src=src<<1{条件移位}SFTLsrc,SHIFT[,dst]
dst=src<<SHIFT{逻辑移位}
带进位位C的循环左移ROL移位示意图如下:
39~32310累加器src保护位第3章汇编语言指令系统②
移位指令C0
带进位位C的循环右移ROR移位示意图如下:
39~32310累加器src保护位第3章汇编语言指令系统②
移位指令C0
带测试位TC的循环左移ROLTC移位示意图如下:
39~32310累加器src保护位第3章汇编语言指令系统②
移位指令TC0
C逻辑移位指令SFTLsrc,SHIFT的操作示意图:
0﹤SHIFT≤15时
39~32310累加器src保护位第3章汇编语言指令系统②
移位指令0
C0
逻辑移位指令SFTLsrc,SHIFT的操作示意图:
-16≤
SHIFT≤0时
39~32310累加器src保护位第3章汇编语言指令系统②
移位指令0
C0
第3章汇编语言指令系统②
移位指令逻辑移位指令SFTLsrc,SHIFT的操作示意图:
SHIFT=0时C0
算术移位指令SFTAsrc,SHIFT的操作示意图:
0﹤SHIFT≤15时
39
0累加器src第3章汇编语言指令系统②
移位指令C0
算术移位指令SFTAsrc,SHIFT的操作示意图:
-16≤SHIFT≤0,且SXM=039
0累加器src第3章汇编语言指令系统②
移位指令0
C算术移位指令SFTAsrc,SHIFT的操作示意图:
-16≤SHIFT≤0,且SXM=1
39累加器src0第3章汇编语言指令系统②
移位指令C
测试指令通常和条件转移等指令结合,实现程序转移,或用于检测数据的正、负极性,数据的位状态等。第3章汇编语言指令系统③
测试指令
测试指令操作字数周期数BITXmem,BITCTC=Xmem(15–BITC)测试Xmem中指定的某位11BITFSmem,#lkTC=(Smem&lk)测试Smem中指定的某些位22BITTSmemTC=Smem(15–T(3~0))测试由T指定的位11CMPMSmem,#lkTC=(Smem==#lk)比较Smem与长立即数是否相等22CMPRCC,ARxARx与AR0进行比较11
控制程序转移类指令的功能是改变程序执行的顺序,可划分为6类:
第3章汇编语言指令系统3.3.4控制程序转移指令(P89)跳转指令调用和返回指令中断指令堆栈操作指令重复指令其它程序控制指令第3章汇编语言指令系统①跳转指令跳转指令分类指令操作字数周期数近程无条件转移B[D]pmadPC=pmad(15~0)24/[2]BACC[D]srcPC=src(15~0)16/[4]远程无条件转移FB[D]extpmadPC=pmad(15~0),XPC=pmad(22~16)24/[2]FBACC[D]srcPC=src(15~0),XPC=src(22~16)16/[4]近程条件转移BC[D]pmad,cond[,cond[,cond]]若条件(cond(s))满足,则PC=pmad(15~0)25/3//[3]BANZ[D]pmad,Sind若(Sind≠0)则PC=pmad(15~0)24/2/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度公路交通安全监控承包合同范本3篇
- 2024版商业楼宇保安承包协议范本
- 2024股权激励合同协议书
- 二零二五年度厨房设备研发创新与成果转化协议3篇
- 2024版物业授权装修协议书样本3篇
- 儿童文化产品监管的策略创新与实施路径
- 2024年沪教版九年级化学上册阶段测试试卷
- 课外诗词诵读:《商山早行》说课稿2024-2025学年九年级上册语文同步备课(统编版)
- 2024年高端装备制造业研发合作合同
- 2025年苏教新版六年级语文上册阶段测试试卷
- 手卫生知识答题及答案
- GB/T 11017.1-2024额定电压66 kV(Um=72.5 kV)和110 kV(Um=126 kV)交联聚乙烯绝缘电力电缆及其附件第1部分:试验方法和要求
- 华为任职资格体系介绍
- 专题06手拉手模型(原卷版+解析)
- 《珍爱生命拒绝毒品》主题班会课件
- 储能锂离子电池 液冷热管理系统运行和维护规范
- GB/T 32399-2024信息技术云计算参考架构
- 2024AI Agent行业研究报告
- 宫腔镜手术并发症及处理
- 安全生产治本攻坚三年行动方案2024~2026(工贸)
- 华为质量回溯(根因分析与纠正预防措施)模板
评论
0/150
提交评论