Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1488661
  • 博文数量: 226
  • 博客积分: 3997
  • 博客等级: 少校
  • 技术积分: 2369
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-19 17:26
个人简介

Never save something for a special occasion. Every day in your life is a special occasion.

文章分类

全部博文(226)

文章存档

2018年(5)

2017年(11)

2016年(1)

2015年(17)

2014年(14)

2013年(30)

2012年(5)

2011年(52)

2010年(107)

分类: 嵌入式

2011-01-03 22:55:20

汇编语言程序设计是开发计算机应用系统的基本功。

既然高级语言有很多优点,为什么还要学习汇编语言呢?

(1)汇编语言仍是各种系统软件(如操作系统)设计的基本语言。利用汇编语言可以设计出效率极高的核心底层程序,如设备驱动程序。

(2)汇编程序比高级语言程序高效(执行速度快,占用内存少)

(3)汇编程序能够直接有效地利用机器硬件资源,在一些实时控制系统中更是不可缺少和代替。

(4)学习汇编语言对于理解和掌握计算机硬件组成及工作原理是十分重要的,也是进行计算机应用系统设计的先决条件。

 

伪指令

汇编起始指令 ORG

等价指令 EQU

定义字节/字  DB/DW

汇编结束指令 END

 

汇编程序设计 

与高级语言程序设计有相似之处,大致过程如下:

(1)明确课题对程序功能、运算精度、执行速度等方面的要求及硬件条件。

(2)把复杂问题分解为若干个模块,确定各模块的处理方法,画出程序流程图(简单问题可以不画)。对复杂问题可为别画出分模块流程图和总的流程图。

(3)存储器资源分配,如各程序段的存放地址、数据区地址、工作单元分配等。

(4)编制程序,根据程序流程图精心选择合适的指令和寻址方式来编制源程序。

(5)对程序进行汇编、调试和修改。

 

程序流程:顺序结构,分支结构, 循环结构

 

子程序和参数传递

  参数传递方法:寄存器、指定地址、堆栈

 

汇编程序设计实例

概念:

汇编语言源程序,目标程序

汇编,汇编程序

注释:程序功能和重难点说明,有助于程序理解和程序员交流。

注释是好习惯。。。

 

常用伪指令

ORGENDEQUDBDWDATADSBIT 

其中:

DATA 

数据地址赋值伪指令:将数据地址或代码地址赋值给标识符

DATAEQU的区别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 片外两个无符号数比较大小。设两个无符号数分别存于片外存储单元 SBUF1SBUF2中,将圈套的数存于SBUF3中。

指令:SUBB, JC

...

 

看书~

 

阅读(1296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~