汇编语言程序设计(55)课件_第1页
汇编语言程序设计(55)课件_第2页
汇编语言程序设计(55)课件_第3页
汇编语言程序设计(55)课件_第4页
汇编语言程序设计(55)课件_第5页
已阅读5页,还剩93页未读, 继续免费阅读

下载本文档

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

文档简介

1、第4章汇编语言程序设计 汇编语言的格式汇编语言的格式4.1 语句行的构成语句行的构成4.2 指示性语句指示性语句4.3 汇编语言程序设计及举例汇编语言程序设计及举例 4.4 4.1 汇编语言的格式汇编语言的格式 下面先介绍一个例子来说明下面先介绍一个例子来说明80C51汇汇编语言的格式。编语言的格式。 ORG 00H;定义程序的入口定义程序的入口 LJMP MAIN;跳转至此程序入口跳转至此程序入口 ORG 30H;本程序开始存放的地址本程序开始存放的地址COUNT EQU 04H ;定义符号定义符号COUNT MAIN: MOV DPTR,#BCD1;置置BCD1的地址指针的地址指针 MOV

2、 R0,#BCD11;置置BCD11的地址指针的地址指针 MOV R2,#COUNT;循环次数送至循环次数送至R2 LOP1:MOVA,#0 ;为变址寻址置为变址寻址置A的初值的初值 MOVC A,A+DPTR ;利用变址寻址从程序区取第一个利用变址寻址从程序区取第一个 BCD数的第一个字节至累加器数的第一个字节至累加器A MOVR0,A;把数存至把数存至RAM区区BCD11处处 INCDPTR;修改地址指针修改地址指针 INCR0 DJNZR2,LOP1;未完循环未完循环 MOVDPTR,#BCD2;为为BCD2置地址指针置地址指针 MOVR0,#BCD11;置已在置已在RAM中的第一个中的

3、第一个BCD数的数的 地址指针地址指针 MOVR1,#SUM;置存放和的地址指针置存放和的地址指针 MOVR3,#COUNT;置循环次数置循环次数 LOP2:MOVA,#0;为变址寻址置为变址寻址置A的初值的初值 MOVCA,A+DPTR;用变址寻址取进第二个用变址寻址取进第二个BCD数的数的 第一个字节第一个字节 ADDCA,R0;与第一个与第一个BCD数的相应字节相加数的相应字节相加 DAA;十进制调整十进制调整 MOVR1,A;存和存和 INCDPTR;修改地址指针修改地址指针 INCR0 INCR1 DJNZR3,LOP2;未完循环未完循环 MOVA,#00H;清零累加器清零累加器A

4、ADDCA,#00H;与最后一次加法可能产生的进位与最后一次加法可能产生的进位 位相加位相加 MOVR1,A;存进位位存进位位 J1:JMPJ1;模拟暂停指令模拟暂停指令 ORG20H;规定存放预置数据的地址规定存放预置数据的地址BCD1EQU20H DB44H,55H,66H,77H;用用DB伪指令在程序区中预置数据伪指令在程序区中预置数据BCD2:DB55H,44H,55H,88H ORG60HBCD11EQU60H DS 4;在在RAM中预留空间以存放从程序中预留空间以存放从程序 区中取出的数据区中取出的数据 ORG70HSUMEQU70H DS5;为和保留空间为和保留空间 END4.2

5、 语句行的构成语句行的构成 4.2.1 4.2.1 标记标记 1 1汇编语言的字符集汇编语言的字符集(1)字母)字母 包含大写的英文字母:包含大写的英文字母:ABCDXYZ;小写的英文字母:小写的英文字母:abcxyz。 (2 2)数字)数字 阿拉伯数字:阿拉伯数字:0123456789。 (3 3)特殊字符)特殊字符 图图4-1 汇编字符集中可打印字符汇编字符集中可打印字符 2 2界符界符 界符(界符(delimiters)是一些特殊字符,)是一些特殊字符,利用它们可以表明某个标记的结束,它们利用它们可以表明某个标记的结束,它们本身也有一定的意义,这一点就与分隔符本身也有一定的意义,这一点就

6、与分隔符(空格)不同。例子中的冒号(:)、逗(空格)不同。例子中的冒号(:)、逗号(,)都是一种界符。号(,)都是一种界符。 3 3常量常量 凡是出现在凡是出现在80C51源程序中的固定值源程序中的固定值(它在程序运行期间不会变化),就称为(它在程序运行期间不会变化),就称为常量(常量(constants)。例子中的数)。例子中的数0、3、100等都是常量,而且是数字常量。等都是常量,而且是数字常量。 汇编语言中允许的常量有数字常量和汇编语言中允许的常量有数字常量和字符串常量两种。字符串常量两种。(1)数字(整数)常量)数字(整数)常量(2)字符串常量)字符串常量 4 4标识符标识符 一个标识

7、符是由最多为一个标识符是由最多为31个字母、数个字母、数字及规定的特殊字符(字及规定的特殊字符(? _ $)等组成的,)等组成的,且不能用数字打头(以免与十六进制数相且不能用数字打头(以免与十六进制数相混淆)。混淆)。 5 5保留字保留字 6 6注释注释 4.2.2 4.2.2 符号符号 1 1寄存器(寄存器(registersregisters) 2 2变量(变量(variablevariable) 3 3标号(标号(labellabel) 4 4数数 4.2.3 4.2.3 表达式表达式 1 1操作数(操作数(operandsoperands)(1)常量操作数)常量操作数(2)存储器操作数

8、)存储器操作数 2 2运算符(运算符(operatorsoperators)(1)算术运算符)算术运算符(2)逻辑运算符)逻辑运算符(3)关系运算符)关系运算符 4.2.4 4.2.4 语句语句 如前所述,一个汇编语言的源程序是如前所述,一个汇编语言的源程序是由一条条语句(由一条条语句(statements)组成的,语)组成的,语句就是完成一个动作的说明。源程序中的句就是完成一个动作的说明。源程序中的语句可分成如下两类。语句可分成如下两类。 一类是指令语句,汇编程序把它们翻一类是指令语句,汇编程序把它们翻译成机器代码,这些代码命令译成机器代码,这些代码命令80C51执行执行某些操作,如某些操作

9、,如MOV、ADD、JMP等。等。 另一类指示性语句(伪指令),汇编另一类指示性语句(伪指令),汇编程序并不把它们翻译成机器代码,也不可程序并不把它们翻译成机器代码,也不可能翻译成机器代码,只是用来指示、引导能翻译成机器代码,只是用来指示、引导汇编程序在汇编时做一些操作,如定义符汇编程序在汇编时做一些操作,如定义符号、分配存储单元、初始化存储器等,所号、分配存储单元、初始化存储器等,所以伪指令本身不占用存储单元,例如:以伪指令本身不占用存储单元,例如: 4.3 指示性语句指示性语句 在在Ax51宏汇编中有以下几种指示性语宏汇编中有以下几种指示性语句(句(directive statements

10、):): 符号定义(符号定义(symbol definition)语)语句;句; 数据定义(数据定义(data definition)语句;)语句; 结束(结束(termination)语句。)语句。 4.3.1 4.3.1 符号定义语句符号定义语句 1 1等值语句等值语句EQUEQU NAME EQU 表达式表达式 2 2定义汇编过程中的变量语句定义汇编过程中的变量语句SETSET SET语句的格式为:语句的格式为: 符号名符号名SET表达式表达式 3 3给内部给内部RAMRAM的位单元定义一个符号位地址语句的位单元定义一个符号位地址语句BITBIT BIT语句的内格式为:语句的内格式为:

11、4 4给直接寻址的内部给直接寻址的内部RAMRAM字节单元定义符号名语句字节单元定义符号名语句 DATADATA DATA语句的格式为:语句的格式为: 符号名符号名DATA表达式表达式 4.3.2 4.3.2 存储空间初始化语句存储空间初始化语句 存储空间初始化语句,其格式与指令存储空间初始化语句,其格式与指令性语句基本相似,也由性语句基本相似,也由4个字段组成,其格个字段组成,其格式如下:式如下:标号标号:伪指令助记符伪指令助记符参数参数1,参数参数2, ;注释注释 此类伪指令共有此类伪指令共有4条:条:DB(Define Byte,定义字节)和,定义字节)和DW(Define Word,定

12、义字)仅适用于定义字)仅适用于ROM空间,为空间,为ROM区间区间填充常数或常数表格;填充常数或常数表格;DS(Data byte Reserve Space,为数据字节保留空间),为数据字节保留空间)和和DBIT(Data BIT reserve space,为数据,为数据位保留空间位保留空间),用来从其一,用来从其一RAM地址开始预地址开始预留一些单元,作为变量空间。留一些单元,作为变量空间。 1 1DBDB在在ROMROM空间定义一个字节数值串空间定义一个字节数值串 标号标号:DBN1,N2, Nx POWER_2 1 +1 2 +1 4 +1 8 +1 16 图图4-1 包含包含2的权

13、的字节的表的权的字节的表 2 2DWDW在在ROMROM空间定义一个字列表(地址表)空间定义一个字列表(地址表) DW伪指令的格式与功能与伪指令的格式与功能与DB类似,类似,只是只是DW定义的是一个双字节的字序列。每定义的是一个双字节的字序列。每个数据项占个数据项占2个字节,并且个字节,并且16位二进制数的位二进制数的高高8位存放在低地址单元,而低位存放在低地址单元,而低8位存放在位存放在高地址单元。高地址单元。DW通常用于在通常用于在ROM中定义中定义一个一个16位的跳转地址表。位的跳转地址表。 3 3DSDS在在RAMRAM中保留指定数量的字节单元中保留指定数量的字节单元 DS语句的格式为

14、:语句的格式为: 标号标号:DSnn 自标号开始在自标号开始在RAM中保留中保留nn个字节单个字节单元,用以存放程序运行过程中产生的数据元,用以存放程序运行过程中产生的数据或变量。或变量。nn可以是数值常量或在汇编过程可以是数值常量或在汇编过程中能产生数值的表达式。例如:中能产生数值的表达式。例如: 4 4DBITDBIT在在RAMRAM中保留指定数量的位单元中保留指定数量的位单元 DBIT伪指令与伪指令与DS为指令类似,只是为指令类似,只是它在它在RAM中保留指定数量的位单元,以储中保留指定数量的位单元,以储存在程序运行过程中产生的位变量。用以存在程序运行过程中产生的位变量。用以指定位单元数

15、量的指定位单元数量的“nn”可以是数值常量或可以是数值常量或表达式。表达式。 4.3.3 4.3.3 起始语句起始语句 起始语句起始语句ORG(origin),它规定了),它规定了段内的起始地址。伪指令段内的起始地址。伪指令ORG 的一般格式的一般格式为:为: ORG 表达式表达式 4.3.4 4.3.4 结束语句结束语句 END 4.4.2 4.4.2 分支程序设计分支程序设计4.4 汇编语言程序设计及举例汇编语言程序设计及举例 例例4-1 两个两个32位位BCD数相加程序。数相加程序。 若有两个若有两个32位位BCD数数DATA1与与DATA2,DATA1存放在自存放在自50H开始的单元中

16、,开始的单元中,DATA2存放在自存放在自60H开始的单元中。存放开始的单元中。存放时低字节在低地址处,高字节在地址较高时低字节在低地址处,高字节在地址较高处。相加以后的和自处。相加以后的和自70H单元开始存放,其单元开始存放,其流程图如图流程图如图4-2所示。所示。 图图4-2 直线运行程序流程图直线运行程序流程图 4.4.2 4.4.2 分支程序设计分支程序设计 图图4-3 符号函数的程序流程图符号函数的程序流程图 4.4.3 4.4.3 循环程序设计循环程序设计 1 1用计数器控制循环用计数器控制循环 图图4-4 计数循环程序流程图计数循环程序流程图 程序如下:程序如下: 2 2多重循环

17、多重循环 延时子程序如下:延时子程序如下: 图图4-5 多重循环程序流程图多重循环程序流程图 4.4.4 4.4.4 字符串处理程序设计字符串处理程序设计 1 1确定字符串的长度确定字符串的长度 例例4-3 从头搜索字符串的结束标志,从头搜索字符串的结束标志,统计搜索的字符个数,其流程图如图统计搜索的字符个数,其流程图如图4-6所所示。示。 图图4-6 确定字符串长度的流程图确定字符串长度的流程图 相应的程序如下:相应的程序如下: 2 2加偶校验到加偶校验到ASCIIASCII字符字符 例例4-4 若有一个若有一个ASCII字符串,它们的字符串,它们的起始地址放在单元起始地址放在单元STRING内,要求从串中内,要求从串中取出每一个字符,检查其中包含的取出每一个字符,检查其中包含的“1”的的个数,若已为偶数,则它的最高有效位置个数,若已为偶数,则它的最高有效位置“0”;否则,最高有数位置;否则,最高有数位置“1”后送回,后送回,其流程图如图其流程图如图4-7所示。所示。 图图4-7 加偶校验位至加偶校验位至ASCII字符流程图字符流程图 相应的程序如下:相应的程序如下: 图图4-8 把十六进制数转换为把十六进制数转换为ASC

温馨提示

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

评论

0/150

提交评论