Never save something for a special occasion. Every day in your life is a special occasion.
分类: 嵌入式
2011-01-03 22:55:20
汇编语言程序设计是开发计算机应用系统的基本功。
既然高级语言有很多优点,为什么还要学习汇编语言呢?
(1)汇编语言仍是各种系统软件(如操作系统)设计的基本语言。利用汇编语言可以设计出效率极高的核心底层程序,如设备驱动程序。
(2)汇编程序比高级语言程序高效(执行速度快,占用内存少)
(3)汇编程序能够直接有效地利用机器硬件资源,在一些实时控制系统中更是不可缺少和代替。
(4)学习汇编语言对于理解和掌握计算机硬件组成及工作原理是十分重要的,也是进行计算机应用系统设计的先决条件。
1 伪指令
汇编起始指令 ORG
等价指令 EQU
定义字节/字 DB/DW
汇编结束指令 END
2 汇编程序设计
与高级语言程序设计有相似之处,大致过程如下:
(1)明确课题对程序功能、运算精度、执行速度等方面的要求及硬件条件。
(2)把复杂问题分解为若干个模块,确定各模块的处理方法,画出程序流程图(简单问题可以不画)。对复杂问题可为别画出分模块流程图和总的流程图。
(3)存储器资源分配,如各程序段的存放地址、数据区地址、工作单元分配等。
(4)编制程序,根据程序流程图精心选择合适的指令和寻址方式来编制源程序。
(5)对程序进行汇编、调试和修改。
3 程序流程:顺序结构,分支结构, 循环结构
4 子程序和参数传递
参数传递方法:寄存器、指定地址、堆栈
汇编程序设计实例
概念:
汇编语言源程序,目标程序
汇编,汇编程序
注释:程序功能和重难点说明,有助于程序理解和程序员交流。
注释是好习惯。。。
2 常用伪指令
ORG、END、EQU、DB、DW、DATA、DS、BIT
其中:
DATA
数据地址赋值伪指令:将数据地址或代码地址赋值给标识符
DATA与EQU的区别:EQU必须先定义后使用,DATA没有此规定。DATA将一个表达式的值赋给字符变量,所定义的字符变量也可以出现在表达式中,但EQU不能。
DS
定义空间伪指令
BIT
位地址赋值伪指令
伪指令示例:
ORG 0000H
AJMP MAIN
DS 10H
TAB1:
DB 30H, 86, 1101B, ‘4’, ‘A’
DB “8051”
DW 8FH, 26, FFFFH
P10 BIT P1.0
CON1 BIT 20H
CON2 BIT 21H.0
3.1 顺序程序设计
Eg 将存于R0中的压缩型BCD码转换成二进制数,结果存于R0.
算法:高位乘10加低位
MOV A, R0
SWAP A
ANL A, #0FH
MOV B, #10
MUL AB
MOV R1, A
MOV A, R0
ANL A, #0F0H
ADD A, R1
MOV R0, A
Eg 将20H的高4位和30H的低4位合并成一个字节,存于30H中.
算法:低4位交换指令 XCHD
// 长版
MOV R0, #20H
MOV R1, #30H
MOV A, @R0
ANL A, #0F0H; 取高4位
MOV R2, A
MOV A, @R1
ANL A, #0FH; 取低4位
ORL A, R2 ;拼字
MOV @R1, A
// 短版
MOV R0, #30H
MOV A, 20H
XCHD A, @R0 ; (20H)的高半字节, (30H)的低半字节
MOV @R0, A
3.2 分支程序设计
(1)简单分支
Eg 片外两个无符号数比较大小。设两个无符号数分别存于片外存储单元 SBUF1和SBUF2中,将圈套的数存于SBUF3中。
指令:SUBB, JC
...
看书~