第4章汇编语言程序设计知识2
- 格式:ppt
- 大小:259.55 KB
- 文档页数:56
第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
第4章 汇编语言程序设计知识在单片机的应用中,有硬件和软件设计,一旦硬件设计完成,就要按硬件设计的要求编写程序,不但如此,还要熟悉数据的存放,寄存器的内容和工作单元的使用情况。
因此,汇编语言程序设计是一个关键问题。
本章结合上一章知识继续学习单片机汇编语言程序设计的方法,知识点如下:1.熟悉单片机汇编语言的编程步骤、方法和技巧。
2.掌握常用的伪指令。
3.了解汇编语言源程序的编辑、汇编、调试过程。
4.熟练掌握汇编语言程序的结构化程序、子程序和查表程序设计。
重点:分支程序、循环程序、子程序和查表程序设计。
难点:1.多分支程序设计。
2.循环程序的设计方法。
4.1 汇编语言源程序的编程与编译对于任何语言,都包含有编程、编译、调试等过程。
对于由软件控制硬件的程序设计,需要针对硬件合理设计程序,使程序能实现预定的功能。
其实,这些过程需要经过实践的反复锤炼才能应用自如,所以应该多动手多思考多总结。
4.1.1 编程的步骤、方法和技巧1. 编程步骤 (1) 分析问题分析硬件的电气特性(如硬件中数据传送格式、硬件的动作特点等)、系统要求实现的功能(如数据运算的速度和精度、整个系统工作的流程、系统某个功能模块的出入口参数要求等)等。
分析问题目的是为了建立整个系统总体编程思想,在较大系统中这点尤其重要。
(2) 确定算法解决问题可以有很多方法,不同的方法中又会有最好的方法,所以确定算法就确定了整个程序的优劣,关系到整个系统的可靠性和可移植性。
算法往往是评价一个程序员的标准。
同时,在确定算法的同时,注意合理分配内存工作区及有关端口地址。
分配内存工作区,要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。
(3) 画程序流程图这是很多初学者经常忽略的问题。
其实,可以把一个系统分为很多模块,而画系统和模块流程图的过程其实就是验证算法和整理系统或模块思路的过程,是一个不可缺少的过程,需要养成良好的画流程图的习惯。
第四章汇编语言程序设计§4.1 汇编语言语法一、程序格式;( 程序结束,给出启动地址。
L →CS:IP ) 即:程序由段组成,段由语句组成。
(各段有名)二、语句构成1、语句种类指令语句(有机器码):(如:传送、运算、控制)标号:操作码操作数;注释(用途:完成实际操作)伪指令语句(无机器码):(如:排段落、定类型、置初值等)名字:命令参数;注释(用途:做好准备工作)人工:吃力、易错2、名称(符号)标识符:如A3、XY 等。
(≤31个字符,不可数起头)保留字:如MOV、BX等。
(不可另作他用)变量:存储器数,如V1、XA等。
(属性:段值、偏移、类型[1,2,4,…])标号:指令地址,如L1、N等。
(属性:段值、偏移、类型[near, far])-1,-23、运算符及表达式(*仅在汇编时用)表达式:由“操作数”和“运算符”组成。
(汇编时得一值)如:MOV BX,OFFSET X2 ;BX=OFFSET X2MOV SI, OFFSET $ ;SI=OFFSET $ ($:当前位置)X1 EQU THIS WORD;X1指定为字型变量,自此处开始L3 LABEL FAR;L3指定为远标号,自此处开始MUL BYTE PTR [BX] ;AL×[BX]→AX,设定指定字节类型LEA SI,BUF+24 ;SI=OFFSET BUF + 24三、指令语句见“指令系统”。
(*注意:操作数的类型必须明确,否则无法汇编。
)*另外,返回DOS的方法:①、PUSH DS ;DS→堆栈MOV AX,0 ;PUSH AX ;0 →堆栈……;RET ;堆栈→ DS:0000 ( →CS:IP )( MAND 安装内容:DS:0000 INT 20H, f.exe )②、MOV AH,4CH ;INT 21H ;( 两者的区别:INT 20H 返回DOS;而INT 21H 返回调用者 )四、伪指令语句1、常数定义名字EQU 表达式;(要改先撤)名字=表达式;(随时可改)PURGE 名字1,名字2,…;(撤消定义)如:n1 EQU 36H ;n1=36HC1 = n1 + 4 ;C1=36H+4=3AH2、变量定义( 变量属性:段值、偏移、类型[1,2,4,…] )名字DB 表达式;(定义字节型变量)名字DW 表达式;(定义字型变量)名字DD 表达式;(定义双字型变量)名字LABEL 类型;(定义变量或标号,自此处开始)表达式中:“?”表示初值不定,“n DUP”表示重复n次)* 注意:伪指令中出现变量名,均取其属性。