第四章汇编语言程序设计-课件

合集下载

[所有分类]第4章 汇编语言程序设计ppt课件

[所有分类]第4章  汇编语言程序设计ppt课件

JMP_128:MOV A,R3
RL A MOV DPTR,#JMPTAB
JMP @A+DPTR JMPTAB:AJMP ROUT00
AJMP ROUT01


AJMP ROUT7F
128个子程序首址

•说明:此程序要求128个转移目的地址(ROUT00 ~ROUT7FH)必须驻 留在与绝对转移指令AJMP相同的一个2KB存储区内。
第4章 汇编语言程序设计及知识
§4.1 编程的步骤、方法和技巧 §4.2 汇编语言源程序的编辑和汇编
2021/5/19
§4.1 编程的步骤、方法和技巧
§4.1.1 编程的步骤 §4.1.2 编程的方法和技巧 §4.1.3 汇编语言程序的基本结构
2021/5/19
编程的步骤
一、分析问题 二、确定算法 三、画程序流程图 四、编写程序
LOOP : CLR C SUBB A,@R1 JNC NEXT MOV A,@R1 SJMP NEXT1
NEXT: ADD A,@R1 NEXT1: INC R1
DJNZ R2,LOOP MOV MAX,A
2021/5/19
循环结构
例:在内部RAM的20H~ 2FH连续16个单元中存放单 字节无符号数。求16个无 符号数之和,并将其和存放 在31H、30H中。用R0作加 数指针,R7作循环次数计 数器。
一、顺序结构
顺序程序是最简单的程序结构,即顺序 结构。
程序按顺序一条一条地执行指令。
2021/5/19
顺序结构举例
例1 双字节乘法子程序。 (R4) (R3)×(R2)=[(R4) ·28+ (R3) ] ·(R2) =(R4) ·(R2) ·28+ (R3) ·(R2)

第4章汇编语言程序设计知识PPT课件

第4章汇编语言程序设计知识PPT课件


(1500H)=72H, (1501H)=34H, (1502H)=00H,
(1503H)=8AH,(1504H)=00H, (1505H)=10H。
(1506H)=00H,(1507H)=48H (H的ASCII值)
第24页/共61页
§4.2 伪指令
7、DS 定义存储空间命 令
格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之后表达式的值所
第15页/共61页
§4.2 伪指令
1、ORG 汇编起始地址命令
格式:ORG 16位地址
功能:规定该伪指令后面程序的汇编地址,即汇编后生成目
标程序存放的起始地址。
例如:
ORG 2000H
START:MOV A,#64H

规定了START的地址是2000H,又规定了汇编后的第一条指令 码从2000H开始存放。
§4.2 伪指令
例如:
ORG 2000H DB 0A3H
LIST:DB 26H,03H STR: DB ‘ABC’

A3H 26H 03H 41H 42H 43H
2000H 2001H 2002H 2003H 2004H 2005H
经汇编后:(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,
第31页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序 2、分支程序 3、循环程序
第32页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序
顺序程序是最简单的程序结构,也称直线程序。 程序按顺序一条一条地执行指令。这类程序是所有复杂程序的基础。 要写出高质量的程序还是需要掌握一定的技巧,需要熟悉指令系统,正确地选择 指令,最大限度地优化程序。

第4章-汇编语言程序设计PPT课件

第4章-汇编语言程序设计PPT课件
目录: • 4.1 C54x的软件开发过程 • 4.2 公共目标文件格式COFF • 4.3 汇编器的伪指令 • 4.4 C54x汇编语言的有关知识 • 4.5 汇编语言程序设计
-
2
第4章 汇编语言程序设计
• 4.1 C54x的软件开发过程
提供2种编程语言:汇编语言 C/C++语言
对于完成一般功能的代码,这两种语言都可使用,但 对于一些运算量很大的关键代码,最好采用汇编语言来完 成,以提高程序的运算效率。
➢ 这些软件开发工具都被集成在CCS(Code Composer Studio)开发环境中。将在第6章详细 介绍CCS的组成及其使用方法
-
5
第4章 汇编语言程序设计
宏源文件 存档器 宏库 存档器 目标 文件库
汇编 源文件 汇编器 COFF 目标文件 链接器
HEX代码 转换工具
可执行的 COFF文件
.bss x1,19 y1 .usect “var2”,40
;为.bss段保留19个字单元空间。 ;为var2段保留40个单元空间。
链接器能够读/写所有类型的COFF文件,默认时链 接器生成的是COFF2文件,采用-vn链接选项可以选 择不同类型的COFF文件。
-
8
第4章 汇编语言程序设计
4.2.1分段结构
所谓“段”就是在存储器映像中占据连续空间的一段独立 的代码或数据。每个目标文件都分成若干段。
COFF目标文件包含以下三个默认的段: ➢ .text 段:通常内含可执行代码; ➢ .data段:通常内含已初始化数据; ➢ .bss段:是为没有初始化的数据保留空间的。
采用这种文件格式的优点是: 将指令和数据按照段的概念进行组织和存储,这使得

4第四章课件汇编语言程序设计

4第四章课件汇编语言程序设计
10 2019/9/15
三、操作数
操作数用于给指令的操作提供数据或地址。在一 条汇编语句中操作数可能是空缺的,也可能包括一 项,还可能包括两项或三项。各操作数间以逗号分 隔。操作数字段的内容可能包括以下几种情况:
(1)工作寄存器名; (2)特殊功能寄存器名; (3)标号名; (4)常数; (5)符号“$”,表示程序计数器PC的当前值; (6)表达式。
2 2019/9/15
二、进行算法的优化
算法是解决具体问题的方法。应用系统经过分 析、研究和明确规定后,对应实现的功能和技术指 标可以利用严密的数学方法或数学模型来描述,从 而把实际问题转化成由计算机进行处理的问题。
同一个问题的算法可以有多种,结果也可能不 尽相同,所以,应对各种算法进行分析比较,并进 行合理的优化。比如,用迭代法解微分方程,需要 考虑收敛速度的快慢(即在一定的时间里能否达到 精度要求)。而有的问题则受内存容量的限制而对 时间要求并不苛刻。对于后一种情况,速度不快但 节省内存的算法则应是首选。
27 2019/9/15
方法二:
CLR A
;1字节,1个机器周期
XCH A,2BH ;2字节,1个机器周期
XCH A,2CH ;2字节,1个机器周期
XCH A,2DH ;2字节,1个机器周期
XCH A,2EH ;2字节,1个机器周期
以上两种方法均可以实现所要求的传送任务。
方法一使用14个字节的指令代码,执行时间为9个机 器周期;方法二仅用了9个字节的代码,执行时间也 减少到了5个机器周期。实际应用中应尽量采用指令
4 2019/9/15
•清晰正确的流程图是编制正确无误的应用程 序的基础和条件。所以,绘制一个好的流程 图,是程序设计的一项重要内容。

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

第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讲 汇编语言程序设计ppt课件

第四章1-2讲 汇编语言程序设计ppt课件

精选ppt课件2021
25
天津工业大学
(4)带DUP的表达式
• 在表达式中使用重复数据操作符DUP,可以为连 续的存储单元提供重复数据,其格式为:
• N DUP(表达式)
• 其中N为重复因子,只能取正整数,表示定义了N 个重复数据存储单元,其类型由它前面的数据定 义伪指令确定,而每个数据存储单元中的初值由 DUP后面圆括号中的表达式给定。
随机数
DB 3 DUP(22H,11H,?)
精选ppt课件2021
27
天津工业大学
09FF:0000 22 11 ? 22 11 ? 22 11
09FF:0008 ?
0F99:000B
精选ppt课件2021
28
天津工业大学
用?预留存储空间
• MEM1 DB 34H,’A’,?,?,?

DW 20 DUP(?)
• LENGTH 变量 * TYPE 变量
精选ppt课件2021
40
天津工业大学
– LENGTH和SIZE运算符的具体运算规则是:如果变量是用重复操 作符DUP定义的,那么运算符LENGTH的运算结果是外层DUP的 给定值 (即外层重复次数),如果没有用DUP定义的变量,运算 结果总是1。
而运算符SIZE是LENGTH和TYPE两个运算结果的乘积。
天津工业大学
第4章 汇编语言程序设计
4.1 汇编语言源程序 4.2 伪指令 4.3 DOS系统功能调用 4.4 汇编语言程序设计基础 4.5 综合举例
精选ppt课件2021
1
天津工业大学
4.1 汇编语言源程序
了解:
• 计算机的三种语言 • 源程序的结构 • 汇编语言语句格式

第4章汇编程序设计PPT课件

第4章汇编程序设计PPT课件
第7页/共70页
初值表
• 初值表是用逗号分隔的参数 • 主要由数值常数、表达式或?、DUP组成
?——表示初值不确定,即未赋初值; DUP——表示重复初值 DUP的格式为: 重复次数 DUP(重复参数)
第8页/共70页
• 例如 BIGGEST DD 12345678H 在汇编时就会初始化,如图所示。它定义了一个双字变量,且给了初始值。
SEGMENT和ENDS语句把汇编语言源程序分 成段,这些段就相应于存储器段,在这些存储 器段中,存放相应段的目标码。
汇编程序必须知道程序的段结构,并知道 在各种指令执行时将访问哪一个段由段寄存器 所 指 向 。 这 个 信 息 是第1由7页A/共S70S页U M E 语 句 提 供 的 。
通常在汇编语言的源程序中,至少要定义 码段(指令段)、堆栈段和数据段,有时还要定 义附加段。每一个段必须有一个名称,如 MY_DATA、MY_CODE等。一个段由命令SEGMENT 开始,由命令ENDS结束,它们必须成对出现, 而且它们的语句中必须有名称,名称必须相同。 最后用语句END来结束整个源程序。
[分析]因为需要重复进行数据大小的比较,所 以可设计为循环程序结构形式,设计要点是: ①找出循环的规律;②确定控制循环的方法
第30页/共70页
• 参考程序:
DATA SEGMENT BUF DB 26, 78, 196, 45, 16, 9 CNT EQU $-BUF
DATA ENDS CODE SEGMENT
NAME1
SEGMENT
语句

语句
NAME1
ENDS
NAME2
SEGMENT
语句

语句
NAME2
ENDS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量也具有3种属性,即:段、偏移量和类型。
• 变量的段属性就是它所在段的段地址。因为变量一般在存储器的数 据段或附加段中,所以变量的段值在DS或ES寄存器中。
• 变量的偏移量属性是该变量所在段的起始地址到变量地址之间的字 节数。
• 变 量 的 类 型 有 BYTE(字 节 )、 WORD(字 )、DWORD(双字 )、 QWORD(四字)、TBYTE(十个字节)等,表示数据区中存取操作对 象的大小。
⑶ 关系运算符
关 系 运 算 符 包 括 EQ( 等 于 ) 、 NE( 不 等 于 ) 、 LT( 小 于)、GT(大于)、LE(小于等于)、GE(大于等于)。
关系运算符连接的必须是两个数值,或同一段中的 两个存储单元地址。关系运算符的运算结果是一 个逻辑值,当关系不成立(为假)时,结果为0; 当关系成立(为真)时,结果为0FFFFH
INT
21H
;返回DOS
CODE
ENDS
;代码段结束
END START
; 源程序结束
二、汇编语言语句类型及格式
指令性语句的格式: [标号:] [前缀] 操作码 [操作数[,操作数]] [;注释] 例如指令性语句:
START: MOV AX,DATA ;将立即数DATA送累加器AX 指示性语句的格式:
• 标号的类型有NEAR和FAR两种。前一种标号称 为近标号,只能在段内被引用,地址指针为2个字 节。后一种标号称为远标号,可以在其他段被引 用,地址指针为4个字节。
3.变量
变量名由字母开头,长度不超过31个字符。变量是存储 器中某个数据区的名字,因为数据区中的内容是可以改 变的,因此变量的值也可以改变。变量在指令中可以作 为存储器操作数引用。
2.标号
指令的标号是由编程者确定的,它不能与 指令助记符或伪指令重名,也不允许由数 字开头,标号的字符个数不超过31个。
指令性语句中的标号代表存放一条指令的 存储单元的符号地址,其后通常加一个冒 号。
标号具有3种属性:段、偏移量和类型。
• 标号的段属性是就是标号所在段的段地址。
• 标号的偏移量就是标号所在段的起始地址到定义 该标号的地址之间的字节数(即偏移地址)。偏 移量是一个16位无符号数。
;定义代码段
ASSEME CS:CODE,DS:DATA
;段寄存器说明
START:
MOV AX,DATA
MOV DS,AX
;初始化DS
LEA
SI,SUM
;存放结果的偏移地址送SI
MOV AX,DATA1
;取被加数
ADD AX,DATA2
;两数相加
MOV [SI],AX
;和送入SUM
MOV AH,4CH
例如:MOV AX,ES:[BX] 操作数送(AX)
;将ES段中由BX指向的字
第二节 伪指令
一、数据定义伪指令 数据定义伪指令用来定义一个变量的类型,给存储
器赋初值,或给变量分配存储空间
1.定义字节(DB) DB(Define Byte)用来定义一个变量,并初始化其内存单元。 格式:[变量名] DB 表达式 表达式可以是以下情况之一:
使用变量时需注意以下两点:
⑴ 变量的类型与指令的要求要相符。例如指令
MOV AX,VAR中,要求VAR必须定义为字类型变 量。
⑵ 在定义变量时,变量名对应的是数据区的首地址。
如果数据区中有多个数据,则对其他数据操作时, 需修改地址。例如:
BUFFER DB 56H,78H,9AH

MOV
AL,BUFFER+2 ;将9AH送(AL)
⑵ 指令性语句中的操作数最多为两个操作数,也可 以没有操作数。
而指示性语句中的操作数可根据需要有多个,当操 作数有不止一个时,相互之间用逗号隔开。
汇编语言语句中的操作数
三、数据项及表达式 操作数可以是寄存器、存储器单元或数据项。
而数据项又可以是常量、标号、变量和表达式 1.常量 • 二进制常量 • 十进制常量 • 十六进制常量 • 字符串常量
[名字] 伪操作 [操作数[,操作数,…] [;注释] 例如指示性语句:
DATA1 DB 56H,78H,9AH ;定义字节型数据,“DB”是伪操作
指令性语句与指示性语句在格式上的区别:
⑴ 指令性语句中的“标号”表示指令的符号地址, 其后面通常要加上“:”。
指示性语句中的“名字”通常表示变量名、段名和 过程名等,其后不加“:”。名字在多数情况下表 示的是变量名,用来表示存储器中一个数据区的 地址。
⑴ 一个常数表达式; ⑵ 问号(?)作为非确定的初始值; ⑶ 一个或多个字符的字符串; ⑷ 重复子句: 重复次数 DUP(表达式)…
例如:
DATA1 DB 11H,22H,33,44H,55H ;定义了5个字节常
4.表达式
表达式是由常数、操作数、操作符和运算符组合而成
表达式中常用的运算符有以下几种:
⑴ 算术运算符
算术运算符有+(加)、-(减)、*(乘)、/(除)、MOD(取余)等 ⑵ 逻辑运算符
逻辑运算符包括AND(与)、OR(或)、NOT(非)、XOR(异 或)
例如:指令MOV AL,0A6H XOR 0CEH等价于MOV AL,68H
MOV AX,SEG DATA
;将变量DATA的段地址送AX
MOV DS,AX
;(DS)←(AX)
⑸ 属性运算符
属性运算符PTR用来指定其后的存储器操作数的类型。
例如:MOV AX,WORD PTR[SI] 向的两个存储单元送AX
;将SI和SI+1所指
⑹ 段超越运算符
运算符“:”跟在某个段寄存器名(DS、ES、SS或CS)之 后表示段超越,用来指定一个存储器操作数的段属性。
第四章汇编语言程序设计
精品jing
[例4-1] 两个字(A6B8H, 206DH)相加
的完整的汇编语言程序
DATA SEGMENT
;定义数据段
DATA1
DW
0A6B8H
;定义被加数
DATA2
DW
206DH
;定义加数
SUM
DW 2 DUP(?)
;定义和
DATA ENDS
;数据段结束
CODE
SEGMENT
⑷ 取值运算符
取值运算符用来分析一个存储器操作数的属性
• OFFSE址。例如:
MOV SI,OFFSET DATA1 ;将变量DATA1的偏移地址送SI 该指令等同于以下指令:
LEA SI,DATA1
• SEG
利用运算符SEG可以得到一个标号或变量的段地址。例如:
相关文档
最新文档