第7章 汇编语言程序设计2
汇编语言程序设计

6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。
汇编语言程序设计复习2(带答案)1

汇编语言程序设计练习题2一、单项选择题(答案BDDBA BDADC CCAC CBBDA BDADA BCCB )1、使计算机执行某种操作的命令是( )A.宏指令B.指令C.伪指令D.语句2、某存储单元的物理地址是12345H,可以作为它的段地址有()。
A.2345H B.12345HC.12340H D.1234H3、8088/8086存储器分段,每个段不超过()A.64K个字B.32K个字节C.1兆个字节D.64K个字节4、计算机能直接识别并执行的语言是( )A.汇编语言B.机器语言C.高级语言D.低级语言5. 8086/8088系统执行传送指令MOV时()A.不影响标志位B.影响DF方向标志C.影响SF符号标志D.影响CF进位标志6、以下各个指令中正确的是()。
A. MOV CS, DXB. MOV DS, BPC. IN 20H,ALD. MOV AH, BX7、下列对OUT指令的叙述正确的是()。
A. 实现从端口中读出数据B. 能直接访问的端口范围是0~1KBC. 能访问的端口为64KBitD. 只能用DX做为间接寻址的寄存器8、已有汇编语句“V AR EQU 1220H”,则语句“mov AX, V AR”中源操作数的寻址方式为()。
A. 立即寻址B. 直接寻址C. 寄存器间接寻址D. 基址寻址9、与MOV BX,OFFSET DATA1指令完全等效的指令是()。
A.MOV BX,DATA1B.LDS BX,DATA1C.LES BX,DATA1D.LEA BX,DATA110、下列指令中段默认为堆栈段的是()A.MOV AX,[BX+SI+10]B.ADD AX,ES:[SI]C.SUB BX,[BP][DI]D. MOV DX,[1000H]11、已知DS=2000H,ES=1000H, SI = 0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEA BX,[SI+80H]”执行后BX 的值为()。
汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。
2、熟悉DEBUG程序的使用方法。
3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。
2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。
三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。
2、预习DEBUG调试程序的使用方法。
3、根据实验内容要求,编写好实验源程序。
四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、汇编、连接源程序,产生.EXE可执行文件。
3、运行程序。
(1) 进入DEBUG。
打入DEBUGT MYPROG.EXE。
MYPROG为所编程序的文件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。
五、实验报告要求1、列出程序清单,并给出程序流程图。
2、总结实现数据传送的几种方法,指出它们的区别。
开始3、分析实验中所遇到的一些问题,分析错误原因。
4、说明本实验中是如何使用DEBUG进行调试的。
CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
IBM-PC汇编语言程序设计课后习题答案

第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
汇编语言程序设计第七章 循环结构程序

2. LOOPE/LOOPZ 条件重复控制指令
指令汇编格式: LOOPE/LOOPZ AGAIN
操作: (1) CX CX-1
(2) 若CX≠ 0且ZF=1,则使控制转到AGAIN 标识的循环入口处,继续下一次循环,否则退出循 环体,执行后续指令。
例 比较两个字符串是否相等。
STR1 DB
‘12345’
DSEG SEGMENT
DATA DB
10,20,30,80,100,90,120
CNT DW 7
ADR DW 0FFFFH
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START: MOV AX,DSEG MOV DS,AX
DATA1 00H
01H 00H 02H
: :
SI DATA2 00H
10H
50
00H
个
20H
字
单
:
元
:
DI SUM 00H
BX
00H
50
00H 50
个
00H
个
字 单
:
字 单
元
:
元
00H
00H
例7.1 设内存DATA1和DATA2开始分别存放50个无符 号字数据,编制程序将两个存储区对应字数据求和并存 入SUM开始的单元。
存储器中仅由字节或字组成的一组数据称为数据串。由字节组 成的数据串称为字节数据串,简称字节串;由字组成的数据串称为 字数据串,简称字串。一个数据串的长度最长不能超过64KB。
数据串操作指令的寻址方式为数据串寻址:
(1)指令中要处理的两个数据串应分别在数据段和附加段中定义。 (2)数据段中定义的数据串要用SI作指针;
第二部分 汇编语言程序设计——伪指令

例3.2:数据定义综合应用-2/2
.code .startup mov bl,bvar mov ax,word ptr dvar[0] mov dx,word ptr dvar[2] ;取双字到DX.AX mov dx,offset msg mov ah,09h CALLDOS .exit 0 end
运算符
算术运算符 + - * / MOD 逻辑运算符 AND OR XOR NOT 移位运算符 SHL SHR 关系运算符 EQ NE GT LT GE LE 高低分离符 HIGH LOW HIGHWORD LOWWORD
地址型参数
汇编语言程序中,指令参数还有地址型,
它的主要形式是标号和名字(变量名、段 名、过程名等) 硬指令的操作数有存储单元;存储单元就 应该用地址型参数(存储器操作数)表达
定义字节单元伪指令DB
DB伪指令用于分配一个或多个字节单元, 并可以将它们初始化为指定值 初值表中每个数据一定是字节量 (Byte),存放一个8位数据: 可以是0~255的无符号数 或是-128~+127带符号数 也可以是字符串常数
data X Y data
segment ;数据段 db 'a',-5 db 2 dup(100),? db 'ABC' ends
例3.4:属性及其应用-2/5
.code .startup mov al,byte ptr v_word ;用PTR改变v_word的类型,否则类型不匹配 dec al mov v_byte,al ;对v_word的头一个字节操作,原为32H、现为31H n_label: cmp flag,1 jz s_label ;flag单元为1转移 inc flag jmp n_label ;进行短转移
汇编语言程序概述、功能与设计

汇编语言(Assembly Language)
指用指令助记符代替机器码的编程语言。汇编语 言程序结构简单,执行速度快,程序易优化,编译后 占用存储空间小,是单片机应用系统开发中最常用的 程序设计语言。汇编语言的缺点是可读性比较差,只 有熟悉单片机的指令系统,并具有一定的程序设计经 验,才能研制出功能复杂的应用程序。
(a) 单汇分编支语流言程程序; 概述(b、)功多能分支流程
和设计
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1
x0
y
1
x0
0
x0
汇编语言程序概述、功能 和设计
程序如下: START: CJNE R0, #00H, SUL1; R0中的数与00比较不等转移
MOV R1, #00H; 相等, R1← 0 SJMP SUL2 SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; (R0)>0, 则 R1←01H SJMP SUL2 NEG: MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH SUL2: RET
汇编语言程序概述、功能 和设计
机器语言(Machine Language)
直接用机器码编写程序、能够为计算机直接执行 的机器级语言。机器码是一串由二进制代码“0”和“1”组 成的二进制数据,其执行速度快,但是可读性极差。 机器语言一般只在简单的开发装置中使用,程序的设 计、输入、修改和调试都很麻烦。
汇编语言程序概述、功能 和设计
例 4 比较两个无符号数的大小。 设外部 RAM 的存储单元 ST1和 ST2中存放两个不带符号的二进制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单周期内通过C总线和D总线寻址两个数据32位
DST用E总线两次,2个机器周期,其它1个机器周期
3
长操作数在存储器的排列方法1
偶地址排列法
指令中给出的地址为偶地址
存储器中低地址存放高16位
存储器中高地址存放低16位
奇地址排列法
指令中给出的地址为奇地址 存储器中低地址存放低16位
存储器中高地址存放高16位
第7章 汇编语言程序设计
7.1 程序流程控制 7.2 数据块传送
7.3 定点数的基本算术运算
7.4 长字运算和并行运算
7.5 FIR滤波器的DSP实现
7.6 IIR数字滤波器的DSP实现
7.7 FFT运算的DSP实现
1
7.4 长字运算和并行运算
7.4.1 长字运算 7.4.2 并行运算
5
长操作数在存储器的排列方法3
奇地址排列法举例 DLD *AR3+, A 执行前: 执行后: A=00 0000 0000 A=00 BD90 6CAC AR3=0101 AR3=0103 (0100h)=6CAC(低字)(0100h)=6CAC (0101h)=BD90(高字) (0101h)=BD90
29
两种实现Z-1方法的比较
线性缓冲区法 1、新老数据位置直接明了。 2、需要移动数据。 3、要求在一个机器周期中进行一次读和一次写操作, 因而要求定位在DARAM中。 循环缓冲区法(推荐的方法) 1、新老数据位置不直接明了。 2、不需要移动数据。 3、不存在一个机器周期中进行一次读和一次写操作, 因而不要求定位在DARAM中。
20
设FIR滤波器的系数为h(0),h(1),...,h(N-1),X(n) 表示滤波器在n时刻的输入,则n时刻的输出为:
N 1 i 0
y(n) h(0) x(n) h(1) x(n 1) h( N 1) x[n ( N 1)] h(i) x(n i)
13
7.5 FIR滤波器的DSP实现
7.5.1 线性缓冲区法
7.5.2 循环缓冲区法
7.5.3 系数对称FIR滤波器的DSP实现
14
数字滤波是DSP的最基本应用,利用MAC(乘、 累加)指令和循环寻址可以方便地完成滤波运算。 两种常用的数字滤波器: FIR(有限冲激响应)滤波器
程序中利用的两条乘法指令 MACSU Xmem, Ymem, src ;带符号数与无符号数相乘并累加 ;src= S(Xmem)*U(Ymem)+src Xmem, Ymem, src ;带符号数与带符号数相乘并累加 ;src=S(Xmem)*S(Ymem)+src Smem, dst ;无符号数相乘 ;dst=U(T)*U(Smem)
6
长字运算(例)
例: 计算 Z32=X32+Y32 标准运算 LD @xhi, 16, A ADDS @xlo, A ADD @yhi, 16, A ADDS @ylo, A STH A, @zhi STL A, @zlo (6个字,6个T) 长字运算 DLD @xhi, A DADD @yhi, A DST A, @zhi (3个字,4个T)
和IIR(无限冲激响应)滤波器的DSP实现。
DSP芯片执行数字滤波算法的能力反映了此类芯 片功能的强弱
15
有限长单位冲激响应滤波器特点
系统的单位冲激响应h(n)在有限个n值处不为零; 系统函数在有限z平面只有零点,全部极点都在 z=0处(因果系统); 结构上主要是非递归结构,没有输出到输入的反 馈
由于没有长字带进(借)位加/减法指令,上述程序中只 能用16位带进(借)位指令ADDC和SUBB。
8
32位乘法运算
9
例:编写计算 W32=X32*Y32 的程序段
STM STM LD MPYU STL LD MACSU MACSU STL LD MAC
STL STH
#x0, AR2 #y0, AR3 *AR2, T *AR3+, A A, @w0 A, -16, A *AR2+, *AR3-, A *AR3+, *AR2, A A, @w1 A, -16, A *AR2, *AR3, A
21
22
FIR滤波器算法分析
•乘法累加运算 •输入和输出操作指令:
PORTR PA, Smem
PORTW Smem, PA
;PASmem
; Smem PA
Z-1操作:延迟(一个采样周期)操作,两种方法:
1 线性缓冲区实现Z-1
2 用循环缓冲区实现Z-1
23
7.5.1 线性缓冲区法
线性缓冲区法又称延迟线法。其方法是: 对于 n=N 的 FIR 滤波器,在数据存储器中开辟一 个N单元的缓冲区,存放最新的N个样本; 滤波时从最老的样本开始,每读一个样本后,将 此样本向下移位; 读完最后一个样本后,输入最新样本至缓冲区的 顶部。 延迟操作的指令:DELAY, LTD, MACD;延迟操作 只能在DARAM中进行。
12
并行运算(例)
例: 编写计算 z=x+y 和 f=e+d 程序段 .bss x, 3 .bss d, 3 STM #x, AR5 STM #d, AR2 LD #0, ASM LD *AR5+, 16, A ADD *AR5+, 16, A ST A, *AR5 ||LD *AR2+, B ADD *AR2+, 16, B STH B, *AR2
2
7.4.1 长字运算
C54x可以利用长操作数(32位)进行长字运算。 如下所示为长字指令:
DLD
DST DADD DSUB DRSUB
Lmem, dst
src, Lmem Lmem , src[,dst] Lmem , src[,dst] Lmem , src[,dst]
;dst=Lmem
;Lmem=src ;dst=src + Lmem ;dst=src – Lmem ;dst=Lmem - src
16
无限长单位冲激响应滤波器特点
系统的单位冲激响应h(n)是无限长的; 系统函数在有限z平面上有极点存在; 结构上存在着输出到输入的反馈,也就是结构上 是递归型的。
17
FIR和IIR比较(有限冲击响应和无限冲击响应)
从性能上进行比较 IIR滤波器传输函数的极点可位于单位圆内的任何地方, 因此可用较低的阶数获得高的选择性,所用的存贮单元少, 所以经济而效率高。但是这个高效率是以相位的非线性为 代价的。选择性越好,则相位非线性越严重。
18
FIR和IIR比较(有限冲击响应和无限冲击响应)
从结构上看 IIR滤波器必须采用递归结构,极点位置必须在单 位圆内,否则系统将不稳定。另外,在这种结构 中,由于运算过程中对序列的舍入处理,这种有 限字长效应有时会引入寄生振荡。 相反,FIR滤波器主要采用非递归结构,不论在 理论上还是在实际的有限精度运算中都不存在稳 定性问题,运算误差也较小。此外,FIR滤波器 可以采用快速付里叶变换算法,在相同阶数的条 件下,运算速度可以快得多。
(7-1)
其对应的滤波器传递函数为: H(z) h (i)z i (7-2)
i 0
N 1
如图7-10所示为横截型(又称直接型或卷积型) FIR数字滤波器的结构图。
x(n) h(0) Z-1 h(1) Z-1 h(2) h(N-2) Z-1 h(N-1) y(n)
图7-10 横截型FIR数字滤波器的结构图
A, @w2 A, @w3
;T=x0 ;A=u(x0)*u(y0) ;w0=u(x0)*u(y0) ;A=A>>16 ;A+=s(y1)*u(x0) ;A+=s(x1)*u(y0) ;w1=A ;A=A>>16 ;A+=s(x1)*s(y1) ;w2=A的底16位 ;w3=A的高16位
10
32位乘法运算(续)
4
长操作数在存储器的排列方法2
偶地址排列法举例 DLD *AR3+, A 执行前: 执行后: A=00 0000 0000 A=00 6CAC BD90 AR3=0100 AR3=0102 (0100h)=6CAC(高字)(0100h)=6CAC (0101h)=BD90(低字) (0101h)=BD90
相反,FIR滤波器却可以得到严格的线性相位,然而由于 FIR滤波器传输函数的极点固定在原点,所以只能用较高 的阶数达到高的选择性;对于同样的滤波器设计指标, FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结 果,成本较高,信号延时也较大;如果按相同的选择性和 相同的线性要求来说,则IIR滤波器就必须加全通网络进 行相位较正,同样要大增加滤波器的节数和复杂性。
符号位不扩展的加法
7
例:编写计算Z64=W64+X64-Y64 的程序段
W, X, Y和结果Z都是64位数,它们都是由两个32位的长字组 成。利用长字指令可以完成64位数的加/减法。
DLD DADD DLD ADDC ADD DSUB DST SUBB SUB DST @w1, A ;A=w1w0 @x1, A ;A=w1w0+x1x0, 产生进位C @w3, B ;B=w3w2 @x2, B ;B=w3w2+x2+C @x3, 16, B ;B=w3w2+16<<x3 @y1, A ;A=w1w0+x1x0-y1y0, 产生借位C’ A, @z1 ;z1z0=w1w0+x1x0-y1y0 @y2, B ;B=w3w2+x3x2+C-y2-C’ @y3, 16, B ;B=w3w2+x3x2+C-y3y2-C’ B, @z3 ;z3z2=w3w2+x3x2+C-y3y2-C’