--汇编语言程序设计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
?
第3章-汇编程序设计PPT课件
A<=5?
Y
N
(A-5)*2+R2 R2
R2 (41H)
结束
;存运费 M
-
18
3.4.2 多分支程序(散转程序)
有一类分支程序,它根据不同的输入条件或不同的运算 结果,转向不同的处理程序,称转程序的设计
这类程序通常利用JMP @A+DPTR间接转移指令实现转移。 有如下两种设计方法: 1. 查转移地址表:
GH+2 56 78
GH+4 00 08
8
4.保留字节 标号:DS (数值表达式)
作用: 指示在程序存储器中保留以标号为起始地址的若干字 节单元,其单元个数由数值表达式指定。
例如 L1:DS 32 ; 从L1地址开始保留32个存储单元。
5. 等值指令 标号 EQU(数值表达式)
表示EQU两边的量等值,用于为标号或标识符赋值。
例如: X1
EQU 2000H
X2
EQU 0FH
…
MAIN:
MOV DPTR,#X1 ; DPTR=2000H
ADD A,#X2 ; A=A+0FH
-
9
6. 位定义 标号 BIT [位地址] 作用: 同EQU指令,不过定义的是位操作地址。 例如 AIC BIT P1.1。
7. 汇编结束 END 作用: 指示源程序段结束。
MOV DPL,A
MOV DPH,B
;DPTR为表中地址
CLR A
;A=0
JMP @A+DPTR ;转移
TAB:DW PR0,PR1,PR2,…..,PRn ;转移地址表
END
-
TAB 01 10
TAB+2 02 20 ..
汇编语言程序设计经典课件模版(PPT65张)
DA4 DB 5 DUP(0) ; 重复5个0存入DA4开始的存储单元中
2 表达式赋值语句
1)赋值语句 EQU
格式: 符号名 EQU 表达式 ;一个符号名只能定义一次
例:
COUNT EQU 100
; 常数赋给符号名COUNT
DATA EQU COUNT+2
; 表达式赋给符号名DATA
A1
运算结果 改变运算符优先级 下表或间接地址 连接结构与变量 修改变量 位图形 记录/字段位数
运算符优先级
优先级 1 2 3 4 5 6 7 8 9 10
运算符 ( ) , [ ] , < > , • , LENGTN , WIDTH , SIZE , MASK PTR , OFFEST , SEG , TYPE , THIS , CS: , DS: , ES: , SS: HIGH , LOW * , / , MOD , SHL , SHR +,- EQ , NE , LT , LE , GT , GE NOT AND OR , XOR SHORT
段名 ends ;指示段或者结构结束 功能:将一个逻辑段定义成一个整体 规定段所属的段寄存器 assume cs:段名, ds:段名, ss:段名,ES:段名 功能:定义4个逻辑段,指明段和段寄存器的 关系
3 段定义语句
定义类型是对该段起始位置的定义。参数有:
PARA,BYTE,WORD,PAGE
格式2:变量名 助记符 n DUP(操作数,操作数….)
N必须是正整数,表示括号内操作数的重复次数
例如:
DA1 DB 10H, 23H ; 变量DA1装入10H , 23H
DA2 DW ‘OK’
; 字符串‘OK’的ASCII码装入DA2开始的存 储单元中
四章汇编语言程序设计ppt课件
指令助记符:MOV,ADD,…. 指示性(伪指令)操作符:DB,DW,SEGMENT,
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
汇编语言程序设计第一章ppt
有符号数
-128 -- +127
-32768 -- +32767 -2147483648 -+2147483647
ASM YJW
1.2.1 数值数据的表示
➢BCD码
十进制数字 8421 BCD 码 十进制数字 8421 BCD 码
0
0000
5
0101
1
0001
6
0110
2
0010
7
0111
3
0011
ASM YJW
1.1.2 CPU的基本功能
➢访问存储器
int x = 1; int y = 2; void test12( void ) {
y = x * x + 3; return; }
MOV EAX,?x@@3HA MOV ECX,EAX IMUL ECX,EAX ADD ECX,3 MOV ?y@@3HA,ECX RET
(c) 一个双字32个位
ASM YJW
1.2.4 数据的存储
✓以二进制形式表示的数据和代码存放在存储器或者内存中。 ✓内存由一系列基本存储单元线性地组成,每一个基本存储单元有一 个唯一的地址。通常,基本存储单元由8个连续的位构成,可用于存 储一个字节的数据。所以,基本存储单元也被称为字节存储单元。可 以把内存看作为一个很大的一维字符数组,把地址看作为标识数组元 素的下标。
ASM YJW
1.2.3 基本数据类型
✓字节 ✓字 ✓双字 ✓四字 ✓十字节 ✓字符串
ASM YJW
1.2.3 基本数据类型
76543210
✓字节 ✓字 ✓双字
(a) 一个字节8个位
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
第4章汇编语言程序设计ppt课件
DATA1
11
22
33 44
DATA2
11
00
22
00
44
33
DATA3
22
0
0
0
22
0
0
0
XX
66
55 44 33
28
数据定义伪指令的几点 说明
伪指令的性质决定所定义变量的类型;
定义字符串必须用DB伪指令
例:
DATA1 DB ‘ABCD’,66H
41H
‘A’
42H
‘B’
43H
‘C’
44H
‘D’
AH
DISN:T D2X1H
功能号OAH 字符串在内存中的存放地址
58
2. 定义字符缓冲区
用户自定义缓冲区格式:
N1 N2
存放字符个数:≤255
存放键入的字符 整个缓冲区
实际键入字符数 最大可键入字符数
0DH
59
输入字符串程序段
DAT1 DB 20,?,20 DUP(?)
┇
LEA DX,DAT1 MOV AH,0AH INT 21H
定义的变量为4字型(8字节)
定义的变量为10字节型
26
数据定义伪指令例
DATA1 DB 11H,22H,33H,44H DATA2 DW 11H,22H,3344H DATA3 DD 11H*2,22H,33445566H
以上变量在内存中的 存放形式
27
数据定义伪指令例_变量在内存中的
分布
DSEG SEGMENT DATA1 DB 1,2, 3 DUP(?) DATA2 DW 1234H
DSEG ENDS ESEG SEGMENT
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
65
BC next ,cond 5/3 CC
sub , cond 5/3 RC cond
5/3
1.条件算符
条件分支转移指令或条件调用、条件返回指令都用 条件来限制分支的转移、调用和返回操作。条件算符分 成两组,每组组内还有分类。
第1组:
EQ NEQ OV LEQ GEQ NOV LT GT
第2组
TC C BIO NTC NC NBIO
例6-1:条件分支转移
RC TC CC sub,BNEQ BC new,AGT,AOV
BC new,AGT BC new,AOV
说明:单条指令中的多个条件是“与”的关 系。如果需要两个条件相“或”,只能分两 句写。
2.循环操作BANZ
在程序设计时,经常需要重复执行某段程 序,利用BANZ(当辅助寄存器不为0时转移) 指令执行循环计数和操作是十分方便的。
当一个15 中断14出现时13 ,IFR12中的相11应的中10 断标志9 位置8 1, 直到CP保U识留 别该中DMA断C5 为D止MAC4。 BXINT1 BRINT1 HPINT INT3
7
TINT1
6
DMAC0
5
BXINT0
4
BRINT0
3
TINT0
2
INT2
1
INT1
0
INT0
中断标志寄存器IFR各位的功能。
选用条件算符时应当注意以下3点:
第1组:组内两类条件可以进行与/或运算,但不能 在组内同一类中选择两个条件算符与/或。当选择两个 条件时,累加器必须是同一个。例如,可以同时选择 AGT和AOV,但不能同时选择AGT和BOV。 第2组:可从组内3类算符中各选一个条件算符与/或, 但不能在组内同一类中选两个条件算符与/或。例如, 可以同时测试TC、C和BIO,但不能同时测试NTC和 TC。 组与组之间的条件只能进行或运算。
位 名称
功能
6 DMAC0 DMA通道0中断标志 5 BXINT0 缓冲串口发送中断0标志 4 BRINT0 缓冲串口接收中断0标志 3 TINT0 定时器中断0标志 2 INT2 外部中断2标志 1 INT1 外部中断1标志 0 INT0 外部中断0标志
在’C54x系列芯片中,IFR中5 ~ 0位对应的中 断源完全相同,分别为外部中断和通信中断标志寄 存位,而15~6位中断源根据芯片的不同,定义的中 断源类型不同。
第六章 汇编语言程序设计
内容提要
6.1 程序流程控制 6.2 堆栈的使用方法 6.3 加减法运算和乘法运算 6.4 重复操作 6.5 数据块传送
内容提要
6.6 双操作数乘法 6.7 长字运算和并行运算 6.8 小数运算 6.9 除法运算 6.10 浮点运算
6.1 程序的控制与转移
中断屏蔽寄存器IMR的结构:
15
14
保留
13
DMAC5
பைடு நூலகம்12
DMAC4
11
BXINT1
10
BRINT1
9
HPINT
8
INT3
7
TINT1
6
DMAC0
5
4
BXINT0 BRINT0
3
TINT0
2
INT2
1
INT1
0
INT0
用户可以对IMR寄存器进行读写操作。
3.中断响应过程(如下图所示) (1)接受中断请求。 (2)响应中断。 (3)执行中断服务程序(ISR)。
有三种情况将清除中断标志:
① ’C54x的复位;
② 相应的IFR标志位置1; ③ 使用相应的中断号响应该中断,
2. 中断屏蔽寄存器IMR
中断屏蔽寄存器是一个存储器映像寄存器,主 要用于控制中断源的屏蔽和开放。
当状态寄存器ST1中的INTM位为0时,全局中断 允许。IMR中的某位置1时,开放相应的中断。由于 RS和NMI都不包含在IMR中,因此IMR对这两个中断 不能进行屏蔽。
TMS320C54x具有丰富的程序控制与转移指令,利用这些 指令可以执行分支转移、循环控制及子程序操作。基本的程序控 制指令如表6-1所示。
表6-1 基本的程序控制指令
分支转移指令 执行周期 子程序调用指令 执行周期 子程序返回指令 执行周期
B
next
4 CALL sub
4 RET
BACC src
6 CALA src
位 名称
功能
15~14 13 12 11 10 9 8 7
保留 DMAC5 DMAC4 BXINT1 BRINT1 HPINT INT3 TINT1
保留位,总是0 DMA通道5中断标志 DMA通道4中断标志 缓冲串口发送中断1标志 缓冲串口接收中断1标志
HPI中断标志 外部中断3标志 定时器中断1标志
接受中断请求
否 是可屏蔽中断吗?
是 否
IN T M = 0 ?
是
否
IM R 屏 蔽 位 = 1 ?
中
是
断
响 应 中 断 , 发 出 IA C K 信 号
操
作
是硬件中断或
(1)可屏蔽中断 (2)非屏蔽中断
C5402中断源的中断向量及硬件中断优先权
2.中断标志寄存器(IFR)和中断屏蔽寄存器(IMR)
’C54x中断系统设置两个中断寄存器,分别为 中断标志寄存器IFR和中断屏蔽寄存器IMR。
1. 中断标志寄存器IFR ’中C断54标02志中寄断存标器志I寄FR存是器一I个FR存的储结器构映: 像寄存器,
5
例6-2: y xi i 1
SUM: STM STM
loop: ADD BANZ STL
#x,AR3 #4,AR2 *AR3+,A loop,*AR2A,@y
;程序存储器
3.比较操作CMPR
编程时,经常需要数据与数据进行比较,这时利用比较指令 CMPR是很合适的。CMPR指令测试所规定的AR寄存器 (AR1~AR7)与AR0的比较结果。如果所给定的测试条件成立, 则TC位置1,然后,条件分支转移指令就可根据TC位的状态进行 分支转移了。注意,所有比较的数据都是无符号操作数。
STM #5,AR1 STM #10,AR0 loop: ... *AR1+ ... CMPR LT,AR1 BC loop,TC
返回首页
6.2 TMS320C54x中断系统
1.中断类型
C54x支持软件中断和硬件中断。软件中断由程序 指 令 产 生 ( INTR、TRAP 或 RESET)。 硬 件 中 断 由 设备的一个信号产生,包括两种类型:①外部硬件中 断由外部中断口的信号触发;②内部硬件中断由片内 外设的信号触发。无论是硬件中断还是软件中断,都 属于以下两种类型: