第04章 单片机程序设计基础-02.讲义
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.
伪指令是由程序员发给汇编程序的命令,也称 为汇编命令或汇编程序控制指令。只有在汇编 前的源程序中才有伪指令,汇编后得到的目标 程序(机器码)中没有与伪指令相应的机器代 码。汇编程序能识别并对汇编过程进行某种控 制的汇编命令。无对应的可执行目标码。 用指令系统编写的汇编语言程序称为源程序, 必须将其翻译成机器码(称为目标程序),单 片机方可执行。源程序转换成目标程序的过程, 是由通用计算机执行一种特定的翻译程序(称 为汇编程序)自动完成的,这个翻译过程称为 汇编。
5
2018/11/14
4.2 汇编语言程序的基本结构
3种基本形式:
1. 2.
顺序结构 分支结构
3.
循环结构
2018/11/14
6
4.2.1 顺序结构例程
START:
Байду номын сангаас
2018/11/14
MOV MOV MOV ADD MOV INC INC MOV ADDC MOV INC INC MOV ADDC MOV CLR ADDC MOV RET
第4章 单片机程序设计基础
《单片机原理与应用系统设计》 电子工业出版社 , 2009.7
欧伟明 何静 凌云 刘剑
等编著
2018/11/14
1
本章主要内容
汇编语言的特点及语句格式 汇编语言程序的基本结构 汇编语言的伪指令与汇编 汇编语言程序设计举例 C51高级语言程序设计
2018/11/14
二进制数,末尾以字母 B 标识
十进制数,末尾以字母 D 标识或将字母D省略。 十六进制数,末尾以字母 H 标识。但应注意以 字母A~F开头时应在其前面加上数字“0”。在 C51语言程序中,前面加“0x”标识。 ASCII码,以单引号标识。如:‘AB’,‘1245’
2018/11/14
12
4.3 汇编语言的伪指令与汇编
4
2018/11/14
4.1.2 汇编语言的语句格式
[标号:] 操作码 [目的操作数], [源操作数] ;[注释]
常用的字段分界符有冒号“:”、逗号“,”和分号“;”。 请注意,字段分界符要在英文输入状态下键入。 操作码是汇编语句格式中唯一不能空缺的部分,用 于规定语句执行的操作内容。 操作数用于表明指令操作的数据或数据存放的地址。 操作数分为目的操作数和源操作数。操作数可以是 空白 。 注释不属于语句的功能部分,只是对语句的解释说 明。
2
4.1
汇编语言的特点及语句格式
汇编语言的特点
汇编语言的语句格式
2018/11/14
3
4.1.1 汇编语言的特点
助记符指令与机器指令一一对应,所以用汇编语 言编写的程序占用存储空间小,运行速度快,可 编写出最优化程序 汇编语言是面向计算机的,所以汇编语言的程序 设计人员必须对计算机硬件有相当深入的了解。 汇编语言能直接访问存储器和接口电路,也能处 理中断,所以汇编语言能直接管理和控制硬件设 备。 各种计算机都有自己的汇编语言,不同计算机的 汇编语言之间不能通用,所以汇编语言缺乏通用 性,程序不易移植。
R0, R1, A, A, @R0, A
A, A, @R0, A A, A, @R0, A A, 00H, A
#30H #33H @R0 @R1
R0 R1 @R0 @R1 R0 R1 @R0 @R1 A #00H
; 被加数地址送R0 ; 加数地址送R1
; 低字节相加 ; 保存低字节结果
; 中间字节相加 ; 保存中间相加结果
#20H ; R0指向片内RAM数据串首地址 #2000H ; DPTR指向片外RAM数据串首地址 #32 ; 最大数据长度32Bytes @R0 #24H ; 判断是否为字符$ LOOP1 A, @R0 @DPTR, A R0 DPTR R7, LOOP0
2018/11/14
11
程序中数据的表示形式
13
2.
2018/11/14
4.3.1
起始地址设定
ORG 表达式
1.
伪指令
向汇编程序说明下面紧接的程序段或数据段存放 的起始地址。 表达式常为16进制地址,可已定义的标号地址。 源程序的开始,要设置一条ORG伪指令来指定该 程序在存储器中存放的起始位置。 省略ORG,则该程序段从0000H单元开始存放。
循环处理 循环修改 N
循环结束? Y 结束处理
循环修改
结束处理
结束
2018/11/14
结束
10
4.2.3 循环结构例程
START:
LOOP0:
LOOP1:
MOV MOV MOV MOV XRL JZ MOV MOVX INC INC DJNZ RET
R0, DPTR, R7, A, A,
; 高字节相加 ; 保存高字节相加结果
; 保存进位
7
4.2.2 分支结构
可分成单分支、双分支和多分支几种 :
Y 分支0 条件成立? Y 条件成立? 程序段B Y N Y K=1? N Y 下条指令 K=2? 分支2 分支1
K=0?
程序段A
程序段A
N
2018/11/14
8
4.2.2 分支结构例程
2. 2.
3.
4.
可以多次使用ORG伪指令,但要求地址值由小到 大依序排列,不允许空间重叠。
14
2018/11/14
4.3.1
汇编结束
END
伪指令
汇编程序遇到END伪指令后即结束汇编
2018/11/14
15
4.3.1
EQU赋值命令
[字符名称] EQU
A, @DPTR LOOP0
; 设置数据指针 ; 取第一个数 ; 暂存于R2 ; 数据指针加1 ; 取第二个数 ; 两数比较 ; 第二个数大则转LOOP1 ; 第一个数大则交换
; 存大数
2018/11/14
9
4.2.3 循环结构
有先执行后判断和先判断后执行两种结构 :
开始 开始
置循环初值
置循环初值 Y 循环结束? N 循环处理
START:
LOOP0:
LOOP1:
ORG CLR MOV MOVX MOV INC MOVX SUBB JNC XCH INC MOVX RET MOVX SJMP
0100H C DPTR, #2000H A, @DPTR R2, A DPTR A, @DPTR A, R2 LOOP1 A, R2 DPTR @DPTR, A
伪指令是由程序员发给汇编程序的命令,也称 为汇编命令或汇编程序控制指令。只有在汇编 前的源程序中才有伪指令,汇编后得到的目标 程序(机器码)中没有与伪指令相应的机器代 码。汇编程序能识别并对汇编过程进行某种控 制的汇编命令。无对应的可执行目标码。 用指令系统编写的汇编语言程序称为源程序, 必须将其翻译成机器码(称为目标程序),单 片机方可执行。源程序转换成目标程序的过程, 是由通用计算机执行一种特定的翻译程序(称 为汇编程序)自动完成的,这个翻译过程称为 汇编。
5
2018/11/14
4.2 汇编语言程序的基本结构
3种基本形式:
1. 2.
顺序结构 分支结构
3.
循环结构
2018/11/14
6
4.2.1 顺序结构例程
START:
Байду номын сангаас
2018/11/14
MOV MOV MOV ADD MOV INC INC MOV ADDC MOV INC INC MOV ADDC MOV CLR ADDC MOV RET
第4章 单片机程序设计基础
《单片机原理与应用系统设计》 电子工业出版社 , 2009.7
欧伟明 何静 凌云 刘剑
等编著
2018/11/14
1
本章主要内容
汇编语言的特点及语句格式 汇编语言程序的基本结构 汇编语言的伪指令与汇编 汇编语言程序设计举例 C51高级语言程序设计
2018/11/14
二进制数,末尾以字母 B 标识
十进制数,末尾以字母 D 标识或将字母D省略。 十六进制数,末尾以字母 H 标识。但应注意以 字母A~F开头时应在其前面加上数字“0”。在 C51语言程序中,前面加“0x”标识。 ASCII码,以单引号标识。如:‘AB’,‘1245’
2018/11/14
12
4.3 汇编语言的伪指令与汇编
4
2018/11/14
4.1.2 汇编语言的语句格式
[标号:] 操作码 [目的操作数], [源操作数] ;[注释]
常用的字段分界符有冒号“:”、逗号“,”和分号“;”。 请注意,字段分界符要在英文输入状态下键入。 操作码是汇编语句格式中唯一不能空缺的部分,用 于规定语句执行的操作内容。 操作数用于表明指令操作的数据或数据存放的地址。 操作数分为目的操作数和源操作数。操作数可以是 空白 。 注释不属于语句的功能部分,只是对语句的解释说 明。
2
4.1
汇编语言的特点及语句格式
汇编语言的特点
汇编语言的语句格式
2018/11/14
3
4.1.1 汇编语言的特点
助记符指令与机器指令一一对应,所以用汇编语 言编写的程序占用存储空间小,运行速度快,可 编写出最优化程序 汇编语言是面向计算机的,所以汇编语言的程序 设计人员必须对计算机硬件有相当深入的了解。 汇编语言能直接访问存储器和接口电路,也能处 理中断,所以汇编语言能直接管理和控制硬件设 备。 各种计算机都有自己的汇编语言,不同计算机的 汇编语言之间不能通用,所以汇编语言缺乏通用 性,程序不易移植。
R0, R1, A, A, @R0, A
A, A, @R0, A A, A, @R0, A A, 00H, A
#30H #33H @R0 @R1
R0 R1 @R0 @R1 R0 R1 @R0 @R1 A #00H
; 被加数地址送R0 ; 加数地址送R1
; 低字节相加 ; 保存低字节结果
; 中间字节相加 ; 保存中间相加结果
#20H ; R0指向片内RAM数据串首地址 #2000H ; DPTR指向片外RAM数据串首地址 #32 ; 最大数据长度32Bytes @R0 #24H ; 判断是否为字符$ LOOP1 A, @R0 @DPTR, A R0 DPTR R7, LOOP0
2018/11/14
11
程序中数据的表示形式
13
2.
2018/11/14
4.3.1
起始地址设定
ORG 表达式
1.
伪指令
向汇编程序说明下面紧接的程序段或数据段存放 的起始地址。 表达式常为16进制地址,可已定义的标号地址。 源程序的开始,要设置一条ORG伪指令来指定该 程序在存储器中存放的起始位置。 省略ORG,则该程序段从0000H单元开始存放。
循环处理 循环修改 N
循环结束? Y 结束处理
循环修改
结束处理
结束
2018/11/14
结束
10
4.2.3 循环结构例程
START:
LOOP0:
LOOP1:
MOV MOV MOV MOV XRL JZ MOV MOVX INC INC DJNZ RET
R0, DPTR, R7, A, A,
; 高字节相加 ; 保存高字节相加结果
; 保存进位
7
4.2.2 分支结构
可分成单分支、双分支和多分支几种 :
Y 分支0 条件成立? Y 条件成立? 程序段B Y N Y K=1? N Y 下条指令 K=2? 分支2 分支1
K=0?
程序段A
程序段A
N
2018/11/14
8
4.2.2 分支结构例程
2. 2.
3.
4.
可以多次使用ORG伪指令,但要求地址值由小到 大依序排列,不允许空间重叠。
14
2018/11/14
4.3.1
汇编结束
END
伪指令
汇编程序遇到END伪指令后即结束汇编
2018/11/14
15
4.3.1
EQU赋值命令
[字符名称] EQU
A, @DPTR LOOP0
; 设置数据指针 ; 取第一个数 ; 暂存于R2 ; 数据指针加1 ; 取第二个数 ; 两数比较 ; 第二个数大则转LOOP1 ; 第一个数大则交换
; 存大数
2018/11/14
9
4.2.3 循环结构
有先执行后判断和先判断后执行两种结构 :
开始 开始
置循环初值
置循环初值 Y 循环结束? N 循环处理
START:
LOOP0:
LOOP1:
ORG CLR MOV MOVX MOV INC MOVX SUBB JNC XCH INC MOVX RET MOVX SJMP
0100H C DPTR, #2000H A, @DPTR R2, A DPTR A, @DPTR A, R2 LOOP1 A, R2 DPTR @DPTR, A