第四章 汇编语言程序设计xin_第1页
第四章 汇编语言程序设计xin_第2页
第四章 汇编语言程序设计xin_第3页
第四章 汇编语言程序设计xin_第4页
第四章 汇编语言程序设计xin_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章汇编语言程序设计4.1汇编语言●

机器语言●汇编语言●

高级语言4.1.1

计算机的程序设计语言种类一、机器语言

是一种能被计算机直接识别和执行的机器级语言。有两种二进制和十六进制两种表示形式。

不易被人们识别和读写,不方便进行程序设计。二、汇编语言

是一种代替机器语言进行程序设计的语言,由助记符、保留字和伪指令等组成,易被人们识别和读写。采用汇编语言编写的程序叫做汇编语言程序,不能直接被计算机执行,必须通过编译软件翻译成机器语言程序(即目标代码)才能被计算机执行。采用汇编语言,用户可直接操作到单片机内部的存储单元,适用于编写实时控制程序。地址机器语言汇编语言二进制形式十六进制2000H0111010000000101B7405HMOVA,#05H2002H0010010000001010B240AHADDA,#0AH2004H1111010100100000BF520HMOV20H,A2006H1000000011111110B80FEHSJMP$机器语言与汇编语言的形式三、高级语言相对于汇编语言,高级语言接近自然语言和数学公式的编程,与计算机的硬件结构及指令系统无关,能更好的描述各种算法,方便学习和编程。高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。4.1.2

汇编语言格式标号:

操作码

操作数

;注释

标号:语句地址的标志符号,有如下规定长度为1~8个ASCII字符;第1个字符必须是字母,其余为字母、数字或其他特定字符;不能使用系统关键字,如指令符、寄存器名等;后边必须跟冒号2.操作码●

表示指令的操作功能●为便于记忆,通常用与操作相应的英文缩写表示,如加法用ADD,减法用SUBB,传送用MOV等,编译时还原成一定的二进制代码。3.操作数●

指参加操作的数据或数据的地址●

操作数的个数无操作数——操作数隐含在操作助记符中单操作数两操作数三操作数●

在两操作数的指令中,通常目的操作数写在左边,源操作数写在右边。

操作数之间用逗号隔开。●

操作数的二进制、十进制和十六进制形式MOVA,#00110101B;A←53ADDA,#20 ;A←53+20MOVR0,#20H ;R0←20HMOVR1,#0BFH ;R1←BFH4.注释●

用于注解指令或程序,便于编写和阅读程序;●任选项;●以分号开头,一行不够写而需另起一行时也必须以分号开头。4.1.3

汇编语言的指令构成指令性语句第三章所讲的111条指令的助记符语句,通过编译软件汇编成目标代码(机器码)。指示性语句又称为伪指令,在汇编时不产生机器码,主要用来完成一些特殊操作。1、ORG起始汇编常用伪指令定位程序的起始地址。用于指明程序段或数据段从ROM的什么位置开始存放。格式为:ORG地址值(十六进制表示)如ORG0000H在一个程序中,可以多次使用ORG规定不同程序段或数据段存放的起始地址,但要求地址值由小到大依序排列,不允许空间重叠。2、END结束汇编表示汇编语言源程序结束。

注意:一个源程序只能有一个END语句,必须放在整个程序的末尾。3、EQU赋值伪指令调用格式为

字符名称EQU数值或汇编符号把EQU右边的“数据或汇编符号”赋给左边的“字符名称”。“字符名称”必须先赋值后使用,故该语句通常放在源程序的开头。 ORG0000HAAEQUR1A10EQU10H MOVA,AA;AA当做R1使用MOVR0,A10;A10为8位直接地址...END4、DB字节定义伪指令从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。例: ORG 3000HTAB1:DB12H,0DEH DB‘5’,‘A’,‘a’12HDEH35H41H61H3000H3001H3002H3003H3004H5、DW字定义伪指令与DB相似,但用于定义字数据。一个字在存储器中占两个字节。主要用来定义16位地址,高8位在前,低8位在后。例ORG3000HTAB2:DW1234H,5678H12H34H56H78H3000H3001H3002H3003H6、DS定义存储空间伪指令格式为:DS表达式

用在存储器中预留一定数量的字节单元,为以后存放数据。预留的单元数目由表达式的值决定。例ORG3000H TAB1:DB12H,34H

DS4H DB'5'12H34H--------35H3000H3001H3002H3003H3004H3005H3006H7、BIT位地址赋值伪指令格式为:字符名称BIT位地址用于给位地址赋予符号,经赋值后可用该符号代替BIT后面的位地址。例: ABC BIT P1.1 QQ BIT P3.24.1.4

汇编语言程序中的文件源程序文件

汇编语言源程序是由汇编指令和伪指令组成的文件,其扩展名为.ASM

源程序编辑完后只有转换为机器码表示的目标程序单片机才能执行,这个转换的过程称为汇编。目标程序文件

扩展名为.HEX

4.2程序设计方法及技巧4.2.1编程步骤1.任务分析(硬件、软件系统分析)2.确定算法和工作步骤3.程序总体设计和流程图绘制4.分配内存,确定程序与数据区存放地址5.编写源程序6.调试、修改,最终确定程序。流程图是编程的基础和条件,绘制一个好的流程图,是程序设计的一项重要内容。对于简单的应用程序,可以不画流程图。但是当程序较为复杂时,绘制流程图是一个良好的编程习惯。开始处理框判断结束程序流向流程图符号4.3基本的程序结构顺序程序分支程序循环程序查表程序子程序4.3.1顺序程序顺序程序执行流程是按指令在存储器中的存放顺序进行的。例2:将片内RAM104、105单元中的内容分别传送到片外RAM104H、105H单元中。一、数据传送例1:内部RAM的2AH~2EH单元中存储的数据如图所示。试编写程序实现图示的数据传送结果。MOVA,2EHMOV2EH,2DHMOV2DH,2CHMOV2CH,2BHMOV2BH,#00HORG0000HMOVR0,#68HMOVA,@R0 ;片内RAM104单元内容送累加器MOVDPTR,#0104HMOVX@DPTR,A ;完成片内RAM104单元内容送片 ;外104H单元中INCR0MOVA,@R0 ;片内RAM105单元内容送累加器INCDPTRMOVX@DPTR,A ;完成片内RAM105单元内容送片 ;外105H单元中SJMP$ ;等待END ;结束二、简单运算由于51指令系统中只有单字节加法指令,因此对于多字节的相加运算必须从低位字节开始分字节进行。除最低字节可以使用ADD指令外,其他字节相加时要把低字节的进位考虑进去,这时就应该使用ADDC指令。例3:双字节无符号数加法。设被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。

ROG0000HMOVR0,#50H ;被加数的低字节地址 MOVR1,#60H ;加数的低字节地址 MOVA,@R0 ;取被加数低字节ADDA,@R1 ;加上加数低字节MOV@R0,A ;保存低字节相加结果INCR0 ;指向被加数高字节INCR1 ;指向加数高字节MOVA,@R0 ;取被加数高字节ADDCA,@R1 ;加上加数高字节(带进位加)MOV@R0,A ;存高字节相加结果MOV00H,C ;保存进位。

SJMP$ ;等待END4.3.2分支程序一.简单分支程序NY跳转至目标程序条件满足?顺序执行例4:已知片内RAM40H开始的两个单元中各存放有一个8位无符号二进制数,要求找出其中的大数并存入片内RAM50H单元中。分析:将两数相减,用进位标志C做为分支转移的条件就很容易地找出其中的大数。 ORG0000H CLRC MOVR0,#40H ;第一个数地址送R0中 MOVA,@R0 ;取第一个数 INCR0 ;R0指向第二个数地址 SUBBA,@R0;两数比较 JCBIG;第二个数大(C=1)转BIG DECR0;R0指向第一个数地址BIG: MOV50H,@R0;存大数 SJMP$;等待 END;结束例5:设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:当x大于0时,y=x;当x=0时,y=20H;当x小于0时,y=x+5。编制程序,根据x的大小求y并送回原单元。START:MOVA,30HJZNEXTANLA,#80H;判断符号位 JZLPMOVA,#05HADDA,30HMOV30H,ASJMPLPNEXT:MOV30H,#20HLP:SJMP$

二.多分支程序(又称为散转程序)通常采用查散转表法,按分支号进行转移。使用的指令是JMP@A+DPTR

并配合AJMP或LJMP查散转表法的多分支程序结构:…… MOVDPTR,#TABLE;散转表首地址(基址)

RLA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论