第5章 汇编程序设计

合集下载

第5章 汇编语言程序设计20PPT课件

第5章 汇编语言程序设计20PPT课件
第5章 汇编语言程序设计
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
汇编语言是一种采用助记符表示的程序设计语言, 即用助记符来表示指令的操作码和操作数,用标 号或符号代表地址、常量或变量。
汇编语言编写的程序能够直接利用硬件系统的特 性直接对位、字节、字寄存器或存储单元、I/O端 口进行处理,同时也能直接使用CPU指令系统提供 的各种寻址方式。
(小于)、GT(大于)、LE(小于等于)、GE (大于等于) (4)分析运算符:SEG、OFFSET、TYPE、SIZE和 LENGTH (5)合成运算符:PTR、THIS、SHORT
5.3 伪指令语句
5.3.1 数据定义伪指令 5.3.2 符号定义伪指令 5.3.3 段定义伪指令 5.3.4 模块定义与连接伪指令 5.3.5 处理器选择伪指令
汇编程序时最早也是最成熟的一种系统软件。 汇编程序的功能如下:
用汇编语言编 写的源程序
汇编程序
目标程序
5.2汇编语言源程序的格式
5.2.1 分段结构 5.2.2 汇编语言语句的类型和格式
5.2.1 分段结构
汇编语言源程序的结构是分段结构形式,一个汇 编语言源程序由若干段(SEGMENT)组成,每个段 以SEGMENT语句开始,以ENDS语句结束。整个源 程序的结尾是END语句。
5.3.1 数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型, 给操作数赋值,或者仅给变量分配存储单元而不 赋予特定的值
数据定义伪指令的一般格式为:
[变量名] 作数……]
伪指令定义符
操作数[,操
数据定义伪指令定义符后面的操作数可以是 常数、表达式或字符串,但每项操作数的值不能 超过由伪指令定义符所定义的数据类型限定的范 围。

微机原理与汇编语言第5章汇编语言程序设计

微机原理与汇编语言第5章汇编语言程序设计
(2) 约定段寄存器和段的关系(即物理段和逻辑 段的关系,使用一个或多个ASSUME语句实现)
(3) 装填段寄存器(只装填数据型段寄存器)
(4) 设置返回DOS的方法
例如:
MYDARA SEGMENT ……
MYDATA ENDS MYCODE SEGMENT
ASSUME CS:MYCODE,DS:MYDATA START:
无法正常连接
有算法错误
LINK .EXE文件
(1) 编辑程序
DOS 环境下用 EDIT 编辑器
WINDOWS 环境下用 记事本
(2)汇编源程序
宏汇编程序 MASM.EXE 或小汇编程序 汇编程序主要有以下功能:
① 检查源程序中语法错误,给出错误提示信息 ② 产生目标文件(.OBJ)、列表文件(.LST)及 交叉引用文件(.CRF) ③ 展开宏指令
end start
汇编后的目 标文件只有 208字节
汇编语言源程序的格式
例二 编程实现多字节加法,如 S=3B74AC60F8H+20D59E36C1H
DATA1
F8H 60H ACH 74H 3BH
……
被加数、和
DATA2
C1H 36H 9EH D5H 20H
加数
DATA SEGMENT
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH
(3) 操作数
操作数即为操作的对象。在指令语句中,可能有 单操作数或双操作数,也可能无操作数或隐含操作数; 而在伪指令中可能有更多个操作数。当操作数不止一个 时,相互之间应该用逗号隔开。
可以作为操作数的有:常数、寄存器、标号、变量 和表达式等。
1) 常量:是指令在中出现的哪些固定值, 可以分为数值常数和字符串常数两类。

第5章 指令与指令系统和汇编语言程序设计(2)

第5章 指令与指令系统和汇编语言程序设计(2)

运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果,6个大写的英文字母 已经被修改为小写字母: 0061 0062 0063 0064 0065 0066
汇编语言程序设计
1 将寄存器R2和R3的内容相加,结果存入R0。 2 将寄存器R2和R3的内容相加,如果有进位,寄存器R0的内 容置1,否则置0 3 若R1的内容是负数则置R0为-1,否则置0(提示:用TEST) 4 检测R3的是奇数,R0的内容置为1,否则置为0。(提示: 用移位检测C的方法来测量一位) 5 将内存中1000H起始的10个单元的内容取出加2送入原地址。 6 已知内存中1000H起始的10个单元中的数是ASC码,将其取 出送显示。 7 将键盘录入的数存到内存1000H单元中。 8 将键盘录入的10个数存到内存1000H-1009H。
有寄存器寻址,寄存器间接寻址等7种。
从表5.1中可以看出, (A组) INC DR 单操作数(DR的内容加1) (B组) LDRR DR,[SR] 双操作数 (DR [SR])
(4)从指令的功能区分
有运算、读写内存类指令,输入输出指令,转移 指令,子程序调用指令,置进位标志指令等。
从表5.1中可以看出, (A组) ADD DR ,SR 加运算 (B组) LDRR DR,[SR] 读写内存
41 42 43 44 45 46
A 2080
MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084) LDRR R0, [R2]
;读内存中的一个字符到R0寄存器
CALA 2100 ;调用子程序(入口地址为2100),完成显示、

第05章汇编语言及程序设计ppt课件

第05章汇编语言及程序设计ppt课件

汇编语言 源程序
汇编
目标程序
汇编程序
一一对应
汇编语言的指令
机器语言的指令
汇编语言程序设计的特点:
➢ 汇编语言是面向机器的语言,CPU不同的机器有不同 的汇编语言
➢ 可以充分利用机器的硬件功能和结构特点
➢ 可有效地加快程序的执行速度,减少目标程序所占用 的存储空间
➢ 可以对输入/输出端口进行控制,实时性能好 ➢ 汇编语言程序移植性、通用性、可读性差
第 5 章 程序设计及汇编语言
内容安排
一. 程序设计步骤 二. 程序设计 三. 汇编语言及汇编程序 四. 汇编语言源程序格式及实例 五. 上机操作
§5.1 程序设计步骤
(1〕分析问题 (2〕建立数学模型 (3〕确定算法 (4〕绘制程序流程图 (5〕内存空间分配 (6〕编制程序与静态检查 (7〕程序调试〔实验)
[名字] DW <表达式或数据项表> 功能:表达式或项表中的每一项是一个/两个字
节数,他们从符号名地址开始按字节连续存放, 如:直D到1 表中DB数据12H项, 结12H束 12H
D1 DB 3 DUP (12H) MOV AX, D1
注意:① 表达式或数据项表多于一项时,项与项之间用 逗号“,”或空格分隔
MOV BL,0FFH ;将FFH送入BL寄存器
LOut: MOV AL,BL
OUT 73H,AL ;将结果的标志数据输出到 73H端口
HLT
;暂停
Lw10: MOV BL,00H
JMP LOut
L10to20: MOV BL,88H
JMP LOut
3. 循环程序
强制CPU重复执行某一指令系列〔程序段〕的一种程序 结构形式
组成:

汇编语言程序设计ppt课件

汇编语言程序设计ppt课件

3.用注释行说明程序,便于阅读和修改调试和修改。
1
9
常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程
2. 顺序与循环程序设计
❖5.2.1 顺序程序设计(又称简单程序) 既无分支,又无循环,按照顺序执行 可完成一定的基本功能,是编写复杂程序的 基础
10
例1:将一个字节内的两个BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内RAM的20H, 转换后高半字节放到21H,低字节放22H。
ROM
20H BCDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21H 0011 BCDH ;完成转换 @R0 22H 000101 B0C0D0L0
;存数
END
12
回目录 上页 下页
5.2.2 循环程序
包含多次重复执行的程序段,循环结构使程序紧凑。
11
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B0C0D01H01 B0BCC0DD0LH0
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
表示程序结构和程序功能
美国国家标准化协会ANSI(American National
Standard Institute)设定了一些常用的流程图符号如图所示:
开始
起止框

流程线
输入输出框 判断框
处理框
连接点 图:常用流程图符号
Y
?

第5章 汇编语言程序设计ppt课件

第5章  汇编语言程序设计ppt课件

;段分配
START:MOV AX,DATA MOV DS,AX MOV AL,BUF1 ADD AL,BUF2 MOV SUM,AL MOV AH,4CH INT 21H
CODE ENDS END START
;填装数据段寄存器DS ;取第一个加数 ;和第二个加数相加
代 码 段
;返回DOS状态 ;CODE段结束 ;整个源程序结束
第5章 汇编语言程序设计
5.1 汇编语言程序格式 5.2 常用伪指令 5.3 汇编语言的编写 5.4 DOS功能调用 5.5 汇编语言设计
最新课件
教学重点
本章介绍程序结构、伪指令、DOS功能调用。 重点:汇编语言程序的基本结构;
伪指令及其使用方法; DOS功能调用; 基本的汇编语言程序设计方法。 难点:DOS功能调用的应用 汇编语言程序的设计
算术运算符
运 算
逻辑运算符

及 关系运算符

达 式
分析运算符
综合运算符
+、—、*、/、MOD
与数学运算符的意义相同。
A取N模D是、取OR余、数N。OT、XOR E例运Q:算、82结NEM果、O是LD一T、1个6G常;T数、结.L果E、为G2 E 两个2表0H达M式O比D较7时; ,结表果达为式4表示 方法/性质要相同 关时SSEI系Z,GE成为、、立全OT,YF0PF结SE果ET为、全LE1;NG不T成H、立 例把T规等偏H如存定价移IS:储存于地、指单储址MP令元OT单RV地M元OB址的XV分,性B解0X质;,为3段2地EQ址4和5
作用:由编程者按照一定的规则来定义的一种较“宏 大”的指令,包括多条指令或伪指令 。
最新课件
例题1
SEGMENT
ENDS

第五章_汇编语言程序设计基础

第五章_汇编语言程序设计基础
3
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。

汇编语言程序设计

汇编语言程序设计
●标号通常由字母数字串组成,但第一个字母必须为字母。
标号有三种属性:
1. 段属性(SEGMENT): ●表示标号所在段的段基址。
2. 偏移属性(OFFSET): ●表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。
3. 距离属性(或类型属性 TYPE): ●表示标号作为段内或段间的转移属性。
变量名、标号和一些专用符号等。
●注释字段 这是一个任选字段,它必须以分号开始,和指令语句的注释功能一样。
精选课件
5.2.2 常用伪指令
1. 符号定义伪指令(赋值语句)
(1)等值伪指令 格式:符号名 EQU 表达式 功能:将表达式的值赋给符号名。
[例5-11]
ALFA COUNT
EQU EQU
100 ALFA
精选课件
; CONT =60 ; CONT =7 ; CONT =1 ; AL = 84H
逻辑运算符
●包括按位操作的与(AND)、或(OR)、异或(XOR)、和 非(NOT)四种运算符。它们只适用于对常数进行逻辑运算。
注意: ● AND、OR、XOR和NOT也是指令助记符。
[例5-2] AND DX, PORT AND OFEH
精选课件
分析操作符(数值返回运算符)
(1)取地址的偏移量
(2)取段基址
格式: OFFSET 变量名或标号
功能:取变量名或标号所在段的 段内偏移量。
格式: SEG 变量名或标号
功能:取变量名或标号所在段 的段地址。
(3) 求变量名或标号的类型值
格式:TYPE 变量名或标号 功能: 返回一个数字值。若TYPE运算符加在变量名前,返回的数值是该变量 的类型属性;若TYPE运算符加在标号前,返回的数值则是该变量距离 属性;返回的数值与性的关系表4-1。

汇编-循环与分支程序设计

汇编-循环与分支程序设计

方法A
MOV DL,0DH MOV AH,06H INT 21H MOV DL,0AH MOV AH,06H INT 21H
方法B
MOV DL,0AH MOV AH,06H INT 21H MOV DL,0DH MOV AH,06H INT 21H
记住以下ASCII值
退格:08H(即8) 空格:20H(即32) 换行:0AH(即10) 回车:0DH(即13) 0 :30H(即48) a :61H(即97) A :41H(即65)
程序流程图
开始
DX=A
DX=A+B BX=DX DX左移3位 BX左移1位
DX=BX+DX-500
结束
编写程序
DATA BUFA BUFB RESULT
SEGMENT DW ? DW ? DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CODE
➢ 循环控制部分:判断循环条件满足与否,常用方法:计数控制、特 征值控制、地址边界控制等。
➢ 常用指令
[1].LOOP,LOOPZ/LOOPE,LOOPNZ/LOOPNE;
[2].各种跳转指令;
特别要注意循环入口和循环次数的正确设置、地址指针及循环控
制条件的修改等。否则会得不到期望的结果。
➢ 多重循环程序设计循环嵌套
INT 21H
不回显在屏幕上
2.键盘一次输入一个字符串的方法:
串地➢址例存如入(,DS在:D数X)据、调区用定参义数的为字10送符A缓H冲区如下:
MOV MOV MOV MOV MOV
DABADDAXuHSX,f,,,TfASAO0eEXfArGf,Hsc/eSASBo/tBEuu设TCufnGRf置BftTMfueILeNIr/frENE/fGT/设e/NN/r/置BTB/2uu/1存ffBHDffDuD功入eefBBBrrf能字是的er参符存段的33?数串放地偏22 为的输址移D0最入U存地APH大字入址(长符D存S?度串入)并的DX存缓入冲B区uffer的首字节;

微型计算机原理-第5章(2)微机原理与接口技术(第三版)(王忠民)

微型计算机原理-第5章(2)微机原理与接口技术(第三版)(王忠民)

DS、
INT
ES
数2…0据H
PSP(256 字节)
附段加
CSS:SPSIP定义了代 堆段段段堆码栈栈段的用程用序户
户程序装入情况
第5章 汇编语言程序设计
DSEG SEGMENT STRING1 DB 1,2,3,4,5
DSEG ENDS ESEG SEGMENT
STRING2 DB 5 DUP(?) ESEG ENDS SSEG SEGMENT
CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备
上机过程
第5章 汇编语言程序设计
编辑程序 编辑
汇编程序 汇编
连接程序 连接
手写程序
EDIT .ASM文件
MASM .OBJ文件
LINK .EXE文件
有语法错误 无法正常连接 有算法错误
第5章 汇编语言程序设计
用户程序的装入
完成以下操作: 确定内存可用部分 以便存放要执行的 .exe 文
INC
BX
ADD AL,[BX]
MOV SUM,AL
RET
ENDP CODE END
MAIN
ENDS START
第5章 汇编语言程序设计 第二讲结束
每一种知识都需要努力, 都需要付出,感谢支持!
知识就是力量,感谢支持!
一一一一谢谢大家!!
STACK‘STACK’ DW 10 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME ES:ESEG,SS:SSEG
START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX
LEA SI, STRING1

汇编教程 第五章 汇编语言程序设计基础

汇编教程 第五章 汇编语言程序设计基础
JGE(OF⊕SF=0或ZF=1)等
10
汇编语言程序设计
1
第五章 汇编语言程序设计基础
2
5.1 概述
1、程序 ( PROGRAM )是完成特定功能的一组指令的 有序集合。 2、程序设计的步骤是: 分析课题 确定算法 画流程图 合理分配存储空间和寄存器 编写程序 上机调试、修改
3
3、汇编语言源程序结构:模块、分段 4、结构化程序设计: 结构化程序设计: 1)组成:顺序、分支、循环 组成:顺序、分支、 2)要求: 要求: 模块化结构 有控制地使用无条件跳转语句 自顶向下逐步细化、 自顶向下逐步细化、逐步求精
DX 7 6 5 0 AX 3 2 1 0
AX 4 3 2 1
BL 4 3
BL 0 4
DX 7 6 5 4
AX 3 2 1 0
7
P71 例5.1
8
实验内容:
1、把BUF开始的两个字节单元中的压 缩BCD数相加,结果存入字单元RES 中。 2、以BUF为首地址的内存中存有1~ 15的平方表。查表求X单元中数(在 1~15之间)的平方值,并送回X单元。
9
5.3 分支结构程序设计
1. 分支程序二要素 具有判断和转移功能的程序。 (1) 判断:运算结果的状态标志CF,PF,ZF,SF,OF; (2) 转移:主要是条件转移指令Jcc,cc为条件。 单标志位判断……JC,JZ,JO,JP,JS,JAE(CF=0)等; 多标志位判断……JA(CF=0&ZF=0),JG(OF⊕SF=0&ZF=0),
4
一个基本的汇编语言程序框架如下:
stack stack data data code
SEGMENT PARA ‘stack‘ DB 100 DUP(‘stack’) ENDS SEGMENT <数据、变量在此定义> 数据、 ENDS

计算机组成原理与汇编语言程序设计

计算机组成原理与汇编语言程序设计

五、汇编语言程序设计
3.操作数:操作数表示指令助记符的操作对象。
4.注释:注释均以分号开始,它可占一行或多行,一般放在一条语句 的后面。 例:一项是含有4个字段的一条指令语句: LOP: MOV AX,0000H ;将AX清零
标号 指令助记符 操作数 注释
例:以下是含有4个字段的一条指令语句 INC CX
数据定义语句按照伪指令DB,DW和DD所确定的数据大小来给变量(或
存储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式 确定的初值。它们通常有以下几种形式: 1、数值表达式 例如:DATA数据段定义了字节、字、双字变量
五、汇编语言程序设计
DATA SEGMENT
VARB1
5.3汇编语言数据
5.3.1符号定义语句
1、等值伪指令 指令格式:符号 EQU 表达式/符号 EQU伪指令的左移是将表达式的值或表达式赋给EQU左边的符号 例:用符号标识常数、数值表达式 NUM EQU 10H COUN EQU 1234+34-67 VAR DB N令语句格式
标号:指令助记符
操作数的有无、有几个, 取决于指令助记符 翻译后,没有对 应的目标代码
指令语句的一般格式如下: 操作数 ;注释
1.标号:标号是机器指令语句存放地址的符号表示,代表该指令目标 代码的第一个字节地址,后面必须紧跟冒号“:” ,在指令语句中, 是任选字段。 2.指令助记符:指令助记符为语句的核心成分,表示了该语句的操作 类型。
五、汇编语言程序设计
例如: BUF DB 100 DUP(0)
以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存 储单元。
5.3.3数据
一、常数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. bss x,20 .bss y,20 … STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+
第5章 TMS320C54x汇编语言程序设计
ቤተ መጻሕፍቲ ባይዱ
1.3 算术运算程序
基本算术运算包括: 加减法和乘法运算 除法运算 长字和并行运算
例:编写完成 y=aixi(i=1~20)
第5章 TMS320C54x汇编语言程序设计
【例5.5.2】对数组x[8]中的每一元素加1。
.bss begin: LD STM STM RPTB ADD STH next: LD … x, 8 #1,16,B #7,BRC #x,AR4 next-1 *AR4,16,B,A A,*AR4+ #0,B ;设置数组空间 注 意 ;立即数1送入BH ① 块结束地址 REA ; 设置重复次数 ,BRC= 7通常取程 ,循环8次 序块最后一条指令的下一 ;数组首地址 x送入AR4 条指令地址-1; ;设置循环结束地址 ; 数组数据左移 16位与 ② 重复次数为 7次 BH相加 ; 存入数组结果,并修改地址 ③ RPTB指令可以响应中断。 ;B 清0
;设置循环次数
AR4→
DBF8 D D ,SP→AR4 DBF8 ;设置数据指针 AR4 DBF8 D ;循环,充填数据 … length … DBF8 D DBF8 D DBF8 D
SP→
第5章 TMS320C54x汇编语言程序设计
堆栈区的大小可以按照以下步骤来确定:
① 先开辟一个较大的堆栈区,用已知数充填。 ② 运行程序,执行所有堆栈操作。 ③ 检查堆栈中的数值。 用过的堆栈区就是实际需要 的堆栈空间。
RPT
RPTB BANZ
N
M L
1
4+2 4L+2
第5章 TMS320C54x汇编语言程序设计
4. 算术运算程序 4.1 长字运算和并行运算
1.长字运算 ’C54x可以利用32位长操作数进行长字运算。 长字指令: ;dst=Lmem 单周期 DLD Lmem,dst ;Lmem=src 双周期 DST src,Lmem ;dst=src+Lmem 单周期 DADD Lmem,src[,dst] ;dst=src-Lmem 单周期 DSUB Lmem,src[,dst] ;dst=Lmem-src 单周期 DRSUB Lmem,src[,dst]
进一步优化的程序: STM STM RPTZ MAC STH STL #x,AR2 #a,AR3 A,#19 *AR2+,*AR3+,A A,@y A, @y+1
第5章 TMS320C54x汇编语言程序设计
【例5.4.3】计算 y =
a x
i 1
4
i i
程序: ******************************************** * example.asm * ******************************************** .title “example.asm” .mmregs ;为堆栈指定空间 stack .usect “STACK”,10h .bss a,4 ;为变量分配9个字的空 间 .bss x,4 .bss y,1 .def start .data
; 变量初始化
start:
end:
; 插入0个等待状态 ; 设置堆栈指针 ; AR1指向a ; 移动8个数据 ; 从程序存储器到数据存储器 ; 调用SUM子程序
第5章 TMS320C54x汇编语言程序设计
【例5.4.3】计算 y = a x
i 1
4
i i
程序: SUM: STM STM RPTZ MAC STL RET .end #a, AR3 #x, AR4 A, #3 *AR3+,*AR4+,A A,@ y
第5章 TMS320C54x汇编语言程序设计 【例5.5.2】三重循环嵌套程序。 STM 1st: 外部 STM RPTB 中间 中间 中 内 RPT 层 层 内部 中间 中间 2nd: 外部 外部 BANZ #L-1,AR7 #M-1,BRC 2nd-1 ;2T ;2T ;4T
外 层
#N-1
;1T
2). 堆栈区大小的确定
堆栈区的大小可以按照以下步骤来确定:
① 先开辟一个较大的堆栈区,用已知数充填,如: LD STM MVMM loop: STL BANZ # -9224,B # length,AR1 SP,AR4 B,*AR4loop,*AR1数据RAM 0DBF8h加载B ;堆栈区要充填的数
存储器的数据传送,在系统初始化过程中十分有用。 . bss x,5 . data TBL: . word 1,2,3,4,5 . text START:STM #x,AR5 RPT #4 MVPD TBL,*AR5+ ……
第5章 TMS320C54x汇编语言程序设计
例:编写一段程序将数据存储器中的数组X[20] 复制到 数组Y[20]中。
第五章汇编程序设计
•汇编语言程序的基本结构
• 顺序结构 • 分支结构 • 循环结构
•一、顺序结构 • 1、堆栈的设置 • 2、数据传送 • 3、算术运算指令举例 •乘、加运算 •小数乘法运算 •除法运算
第5章 TMS320C54x汇编语言程序设计
1.1 堆栈的使用方法
当程序调用中断服务程序或子程序时,需要将 程序计数器PC的值和一些重要的寄存器值进行压栈 保护,以便程序返回时能从间断处继续执行。 ’C54x提供一个用16位堆栈指针SP寻址的软件 堆栈。 当向堆栈中压入数据时,堆栈是从高地址向低 地址方向填入,堆栈指针SP先减1,然后将数据压入 堆栈。 当从堆栈中弹出数据时。数据先从堆栈中弹出, 然后堆栈指针SP加1。
• 思路1:使用SUB指令
data0 data1 .set 200 .set 100 .bss data2,1 .text LD #data0,A SUB #data1,A BC d1,ALT ST #data0, data2 BD loop NOP NOP ST #data1, data2 NOP .end
作为堆栈的栈底
在数据RAM空间开辟一个堆栈区。 设置好堆栈后,就可以使用堆栈了,如: CALL pmad ;(SP)-1 →SP,(PC)+ 2→TOS,pmad→PC 设置堆栈指针, # stack + size→SP。 RET ;(TOS)→PC,(SP)+1→SP
第5章 TMS320C54x汇编语言程序设计
第5章 TMS320C54x汇编语言程序设计
5.5.2 块程序重复操作
对于整个程序块需要重复操作时,可采用程序
块重复操作。 用于块程序重复操作指令为RPTB和RPTBD。程序 块的长度由块程序重复指令 RPTB 的操作数来确定,
而重复次数由块重复计数器BRC来决定。
通常 RPTB 的操作数为程序块的结束地址,而重
1st,*AR7- ;4T
第5章 TMS320C54x汇编语言程序设计
3.3 循环嵌套
三重循环嵌套结构:
内层 中层 外层
循环
—— RPT —— 执行N次 —— RPTB —— 执行M次 —— BANZ —— 执行L次
循环嵌套的开销
操 作
指令
重复次数
机器周期
内层
中层 外层
单程序重复操作
块程序重复操作 循环操作
; data0-data1 ;data0<data1时转入d1 ;将data0存入data2
d1: loop:
;将data1存入data2
例:比较两数data0和data1的大小。若两者相等, 将值存入data2单元。否则将大者存入data2单元。
• 思路2:使用CMPS指令
data0 data1 .set .set .bss .text LD ADD CMPS .end 200 100 data2,1 #data0,16, A ;将data0送入A(31~16) #data1,A ;将data0送入A(15~0) A, data2 ;比较、选择、存储大者
•三、循环结构
在程序设计中,如果有一段程序需要多次重复执行时, 就可以使用循环结构,以提高效率,简化程序。 循环程序通常有4部分组成: (a)置循环初值:包括循环次数;置存储区的地址指针; 置其他变量的初值等。 (b)循环体:是程序中需要多次重复的部分。 (c)循环控制部分:每循环一次,检查结束条件是否满足 若满足,循环结束,否则继续循环。 (d)修改控制变量:每进行一次循环,将控制变量加一或 减一
第5章 TMS320C54x汇编语言程序设计
1.2 堆栈的使用方法
1). 堆栈的设置
若程序中要使用堆栈,必须先进行设置,如:
size
stack
.set
.usect STM
120
“STACK”,size
在RAM中定义一个STACK 的保留空间,共120个单元
# stack + size,SP 保留区的高地址赋给SP,
采用单操作数方法: LD #0,B STM #a,AR2 STM #x,AR3 STM #19,BRC RPTB Done-1 LD *AR2+, T MPY *AR3+, A ADD A, B Done: STH B, @y STL B, @y+1
采用双操作数的方法: LD #0,B STM #a,AR2 STM #x,AR3 STM #19,BRC RPTB Done-1 MPY *AR2+,*AR3+,A ADD A, B Done: STH B, @y STL B, @y+1
;设置数据段的首地址 ;设置循环计数值 ;累加器清0 ;累加运算,并修改地址 ;若计数值不为0,则循环,并计数值减1
相关文档
最新文档