第4章80C51单片机汇编语言程序设计p副本_第1页
第4章80C51单片机汇编语言程序设计p副本_第2页
第4章80C51单片机汇编语言程序设计p副本_第3页
第4章80C51单片机汇编语言程序设计p副本_第4页
第4章80C51单片机汇编语言程序设计p副本_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1 1第第4 4章章 80C5180C51单片机汇编语言程序设计单片机汇编语言程序设计本讲重点:本讲重点: 汇编语言程序设计。汇编语言程序设计。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2 24.14.1单片机程序设计语言概述单片机程序设计语言概述4.1.1 4.1.1 机器语言和汇编语言机器语言和汇编语言机器语言机器语言用二进制表示的指令。用二进制表

2、示的指令。汇编语言汇编语言用助记符表示的指令。用助记符表示的指令。4.1.2 4.1.2 单片机使用的高级语言单片机使用的高级语言C语言、语言、BASIC、PL/M等等20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3 34.1.3 80C514.1.3 80C51单片机汇编语言的语句格式单片机汇编语言的语句格式标号标号由由1 18 8个个ASCIIASCII码组成,但码组成,但第一个字符第一个字符必须必须是是字母字母; 同一标号同一标号,在,在同一段程序中只允许定义一次;同一段程序中只允许定义一次

3、; 标号标号: : 操作码操作码 目的操作数目的操作数, ,源操作数源操作数; ;注释注释 标号标号后边必须跟后边必须跟冒号冒号。 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4 44.2 4.2 汇编语言程序的基本结构形式汇编语言程序的基本结构形式 一般把程序结构分为一般把程序结构分为3 3种形式:种形式:顺序结构顺序结构、分支结构分支结构和和循环结构循环结构。 顺序程序是最简单的程序结构,程序执行时,按指令的先后顺序程序是最简单的程序结构,程序执行时,按指令的先后顺序,一条条地执行。顺序,一

4、条条地执行。 4.2.1 4.2.1 顺序结构顺序结构 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件5 5例:例:三字节无符号数相加,其中被加数在内部三字节无符号数相加,其中被加数在内部RAMRAM的的50H50H、51H51H和和52H52H单元单元中;加数在内部中;加数在内部RAMRAM的的53H53H、54H54H和和55H55H单元中;要求把相加之和存放在单元中;要求把相加之和存放在50H50H、51H51H和和52H52H单单元中,进位存放在位寻址区的元中,进位存放在位寻址区的00H0

5、0H位位中。中。 MOV R0, #52H ; MOV R0, #52H ;被加数的低字节地址被加数的低字节地址 MOV R1, #55H ;MOV R1, #55H ;加数的低字节地址加数的低字节地址 MOV A, R0MOV A, R0 ADD A, R1 ; ADD A, R1 ;低字节相加低字节相加 MOV R0, A ;MOV R0, A ;存低字节相加结果存低字节相加结果20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件6 6 DEC R0 DEC R0 DEC R1 DEC R1 MOV

6、 A, R0 MOV A, R0 ADDC A, R1 ; ADDC A, R1 ;中间字节带进位相加中间字节带进位相加 MOV R0, A ;MOV R0, A ;存中间字节相加结果存中间字节相加结果 DEC R0DEC R0 DEC R1 DEC R1 MOV A, R0 MOV A, R0 ADDC A, R1 ; ADDC A, R1 ;高字节带进位相加高字节带进位相加 MOV R0, A ;MOV R0, A ;存高字节相加结果存高字节相加结果20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课

7、件7 7 CLR A CLR A ADDC A, #00H ADDC A, #00H MOV R0, #00H ; MOV R0, #00H ;存放进位的单元地址存放进位的单元地址 MOV R0, A ;MOV R0, A ;进位送进位送00H00H位保存位保存20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件8 84.2.2 4.2.2 分支结构分支结构 例:例:假定在外部假定在外部RAMRAM中有中有ST1ST1、ST2ST2和和ST3ST3共共3 3个连续个连续单元,单元,其中其中ST1ST1和

8、和ST2ST2单元中分别单元中分别存放着两个存放着两个8 8位无符号二进制位无符号二进制数数,要求找出其中的大数并存入,要求找出其中的大数并存入ST3ST3单元中。单元中。START: CLR C ;START: CLR C ;进位位清进位位清“0”0” MOV DPTR, #ST1 ; MOV DPTR, #ST1 ;设置数据指针设置数据指针 MOVX A, DPTR ;MOVX A, DPTR ;取第一个数取第一个数 分支结构是通过转移指令实现的,又分为单分支结构分支结构是通过转移指令实现的,又分为单分支结构和多分支结构。和多分支结构。 1.1.单分支结构单分支结构 20222022年年6

9、 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件9 9 MOV R2, A ; MOV R2, A ;第一个数存第一个数存R2 R2 INC DPTR ; INC DPTR ;数据指针加数据指针加1 1 MOVX A, DPTR ; MOVX A, DPTR ;取第二个数取第二个数 SUBB A, R2 ;SUBB A, R2 ;两数比较两数比较 JNC BIG1 ;JNC BIG1 ;第二个数大则转第二个数大则转BUG1BUG1 XCH A, R2 ; XCH A, R2 ;第一个数大则整字节交第一个数大则整字节交 换

10、,然后继续执行程序换,然后继续执行程序BIG0: INC DPTRBIG0: INC DPTR MOVX DPTR, A ; MOVX DPTR, A ;存大数存大数20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1010 RET RETBIG1: MOVX A, DPTRBIG1: MOVX A, DPTR SJMP BIG0 SJMP BIG020222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件11112

11、.2.多分支结构多分支结构 YesNo20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1212YesYesNoNoCJNE20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1313例:例:某温度控制系统,采集的温度值某温度控制系统,采集的温度值(Ta)(Ta)放在累加器放在累加器A A中。此外,在内部中。此外,在内部RAM RAM 54H54H单元存放控制温度下限值单元存放控制温度下限值(T54)(T54)

12、,在,在55H55H单元存放控制温度上限值单元存放控制温度上限值(T55)(T55)。若。若TaT55TaT55,程序转向,程序转向JWJW(降温处理程序);若(降温处理程序);若TaT54Ta55Ta55 转降温处理程序转降温处理程序 CJNE A, 54H, LOOP2 ;TaT54CJNE A, 54H, LOOP2 ;TaT54则转向则转向LOOP2LOOP2 AJMP FH ;Ta=T54 AJMP FH ;Ta=T54则返回主程序则返回主程序LOOP2: JC SW ;LOOP2: JC SW ;若若(CY)=1(CY)=1则表明则表明 TaT54TaT54,转升温处理程序。,转升

13、温处理程序。FH: RETFH: RET20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件16162 2)用查地址表方法实现多分支程序转移用查地址表方法实现多分支程序转移关键是建立一个差值表,并将各分支入口地址与该表首地址的差关键是建立一个差值表,并将各分支入口地址与该表首地址的差值按顺序排列其中,差值表首地址送入值按顺序排列其中,差值表首地址送入DPTRDPTR,分支序号值送入,分支序号值送入A A中,然后就可通过转移指令中,然后就可通过转移指令JMP A+DPTRJMP A+DPTR进行分支进行分

14、支。 (0AH0BH0CH0DHAAABBBCCCDDD20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件17173 3)其他)其他方法实现多分支方法实现多分支程序转移(自学)程序转移(自学)地址表、堆栈等地址表、堆栈等20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件18184.2.3 4.2.3 循环程序结构循环程序结构 循环是为了重复执行一个程序段。循环是为了重复执行一个程序段。 与高级语言不同,汇编语

15、言中没有专用的循环指与高级语言不同,汇编语言中没有专用的循环指令,但可以使用条件转移指令通过条件判断来控令,但可以使用条件转移指令通过条件判断来控制循环。制循环。 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件1919 在程序运行时,有时需要连续重复执行某段在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部程序,可以使用循环程序。其结构包括四部分:分: 1 1、置循环初值、置循环初值 2 2、循环体(循环工作部分)、循环体(循环工作部分) 3 3、修改控制变量、修改控制变

16、量 4 4、循环控制部分、循环控制部分 其组织方式如下图所示。其组织方式如下图所示。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2020置初值循环体循环修改循环控制退出循环未完未完完完(a)置初值循环体循环修改循环控制退出循环未完未完完完(b)循环组织方式流程图循环组织方式流程图20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件21211 1、置循环初值、置循环初值 对于循环程序中所使用的工作单元,在循

17、环开始时对于循环程序中所使用的工作单元,在循环开始时应置初值。应置初值。 例如,工作寄存器设置计数初值,累加器例如,工作寄存器设置计数初值,累加器A A清清0 0,以,以及设置地址指针、长度等。及设置地址指针、长度等。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件22222 2、循环体(循环工作部分)、循环体(循环工作部分) 重复执行的程序段部分,分为循环工作部分和循环重复执行的程序段部分,分为循环工作部分和循环控制部分。控制部分。 循环控制部分循环控制部分每循环一次,检查结束条件每循环一次,检查

18、结束条件,当满足,当满足条件时,就停止循环,往下继续执行其他程序条件时,就停止循环,往下继续执行其他程序20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件23233 3、修改控制变量、修改控制变量 在循环程序中,不许给出循环结束条件。在循环程序中,不许给出循环结束条件。 常见的是计数循环,当循环了一定的次数后,就停止循环。常见的是计数循环,当循环了一定的次数后,就停止循环。 在单片机中,在单片机中,一般用一个工作寄存器一般用一个工作寄存器RnRn作为计数器作为计数器,对该计,对该计数器赋初值作为循环次

19、数。每循环一次,数器赋初值作为循环次数。每循环一次,计数器的值减计数器的值减1 1,即,即修改循环控制变量,当计数器的置件为修改循环控制变量,当计数器的置件为0 0时,就停止循环。时,就停止循环。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件24244 4、循环控制部分、循环控制部分 根据循环结束条件,判断是否结束循环。根据循环结束条件,判断是否结束循环。 89C5189C51可采用可采用DJNZDJNZ指令来自动修改控制变量并能结束循环。指令来自动修改控制变量并能结束循环。20222022年年6

20、 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2525例:例:设有一字符串以回车符为结束标志,并存放在内部设有一字符串以回车符为结束标志,并存放在内部RAMRAM从从40H40H单元开始的连续存储单元中,编写测试字符串长度的程序。单元开始的连续存储单元中,编写测试字符串长度的程序。思路:思路:1.1.逐个字符与回车符(逐个字符与回车符(0DH0DH)比较;)比较; 2.2.设置一个字符串指针;设置一个字符串指针; 3.3.设置一个长度计数器。设置一个长度计数器。 MOV R2,#0FFH ;MOV R2,#0FFH ;

21、设置长度计数器初值设置长度计数器初值 MOV R0,#3FH ;MOV R0,#3FH ;设置字符串指针初值设置字符串指针初值LOOP: INC R2LOOP: INC R2 INC R0 INC R0CJNE R0, #0DH,LOOPCJNE R0, #0DH,LOOP RET RET20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件262620222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2727202

22、22022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件2828一、分析问题一、分析问题 对需要解决的问题进行分析,以求对问题由对需要解决的问题进行分析,以求对问题由正确的理解。如,正确的理解。如, 解决问题的任务是什么?解决问题的任务是什么? 工作过程?工作过程? 现有的条件,已知数据,对运算的精度和速现有的条件,已知数据,对运算的精度和速度方面的要求?度方面的要求? 设计的硬件结构是否方便编程?设计的硬件结构是否方便编程?20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电

23、学院单片机应用系统设计单片机应用系统设计教学课件教学课件2929二、确定算法二、确定算法 算法就是如何将实际问题转化成程序模块来处理。算法就是如何将实际问题转化成程序模块来处理。 在编程以前,先要对几种不同的算法进行分析、比在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法较,找出最适宜的算法20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3030三、画程序流程图三、画程序流程图 程序流程图是用各种图形、符号、有向线段等来说明程序设程序流程图是用各种图形、符号、有向线段等来说明程序设计

24、过程的一种直观的表示。计过程的一种直观的表示。 流程图划分得越细致,编写程序是也越方便。流程图划分得越细致,编写程序是也越方便。 画流程图是程序结构设计的一种重要手段。画流程图是程序结构设计的一种重要手段。 一个系统软件包括总流程图和局部流程图。一个系统软件包括总流程图和局部流程图。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3131流程图常采用的图形和符号:流程图常采用的图形和符号:椭圆框椭圆框或桶形框或桶形框:表示程序的:表示程序的开始开始或或结束结束。矩形框矩形框:表示要进行的工作。:表示

25、要进行的工作。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3232流程图常采用的图形和符号:流程图常采用的图形和符号:菱形框菱形框:表示要判断的事情,菱形框内:表示要判断的事情,菱形框内的表达式表示要判断的内容。的表达式表示要判断的内容。圆圈圆圈:表示连接点:表示连接点指向线指向线:表示程序的流向:表示程序的流向20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3333四、编写程序四、编写程序 用用89

26、C5189C51汇编语言编写的源程序。汇编语言编写的源程序。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件343420222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3535编程的方法和技巧编程的方法和技巧一、模块化的程序设计方法一、模块化的程序设计方法二、编程技巧二、编程技巧20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学

27、课件教学课件3636一、模块化的程序设计方法一、模块化的程序设计方法1 1、程序功能模块化的优点、程序功能模块化的优点2 2、划分模块的原则、划分模块的原则20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件37371 1、程序功能模块化的优点、程序功能模块化的优点 单个模块结构的程序单个模块结构的程序功能单一功能单一,易于编写易于编写、调试调试和和修改修改。 便于便于分工分工,从而可使多个程序员同时进行程序的编写和调试,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。工作,加快软件研

28、制进度。 程序程序可读性好可读性好,便于,便于功能扩充功能扩充和和版本升级版本升级。 对程序的修改可局部进行对程序的修改可局部进行,其它部分可以保持不变。,其它部分可以保持不变。 对使用频繁的子程序对使用频繁的子程序建立子程序库建立子程序库,便于多模块调用。,便于多模块调用。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件38382 2、划分模块的原则、划分模块的原则 每个模块应具有每个模块应具有独立的功能独立的功能,能产生一个明确的结果,即单,能产生一个明确的结果,即单模块的功能高内聚性。模块的功

29、能高内聚性。 模块之间的模块之间的控制耦合应尽量简单控制耦合应尽量简单,数据耦合应尽量少数据耦合应尽量少,即模,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。交换频繁程度。 模块长度适中。模块长度适中。2020条条100100条的范围较合适。条的范围较合适。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件3939二、编程技

30、巧二、编程技巧1 1、尽量、尽量采用采用循环结构循环结构和和子程序子程序。2 2、尽量、尽量少用少用无条件转移无条件转移指令。指令。3 3、对于通用的子程序,考虑到其通用性,除了用于存放子程、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),即保护现场。应压入堆栈(返回前再弹出),即保护现场。4 4、在中断处理程序中,除了要保护处理程序中用到的寄存器、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。外,还要保护标志寄存器。5 5、用累加器

31、传递入口参数或返回参数比较方便用累加器传递入口参数或返回参数比较方便,子程序中,子程序中,一般不必把累加器内容压入堆栈。一般不必把累加器内容压入堆栈。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件40404.3 80C514.3 80C51单片机汇编语言程序设计举例单片机汇编语言程序设计举例 本节课本上的例题以自学为主。本节课本上的例题以自学为主。大部分程序没用,重点看查表程序。大部分程序没用,重点看查表程序。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电

32、学院单片机应用系统设计单片机应用系统设计教学课件教学课件4141 ORG 1000H ORG 1000H ONE DATA 30H ONE DATA 30H TWO DATA 31H TWO DATA 31H MAX DATA 32H MAX DATA 32H CLR C CLR C MOV A MOV A ,ONE ONE SUBB A SUBB A ,TWO TWO JZ XMAXJZ XMAX JB ACCJB ACC7 7,NEGNEG JB OVJB OV,YMAXYMAX SJMP SJMP XMAXXMAX NEG NEG: JB OVJB OV,XMAXXMAX YMAX YM

33、AX: MOV A MOV A ,TWOTWO SJMP RMAXSJMP RMAX XMAX XMAX: MOV A MOV A ,ONEONE RMAX RMAX: MOV MAXMOV MAX,A A SJMP $ SJMP $ END END 例例 ONE ONE和和TWOTWO单元中的两个带符号数比较大小,将较大者存入单元中的两个带符号数比较大小,将较大者存入MAXMAX单元中。两数相等则任一个存入单元中。两数相等则任一个存入MAXMAX即可。即可。若若X XY Y为负,则为负,则OV=0OV=0,XYXYXY若若X XY Y为正,则为正,则OV=0OV=0,XYXY OV=1 OV

34、=1,XY XY 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4242 ORG 0000H ORG 0000HZero: Zero: movmov R0, #30H R0, #30H movmov R7,#10 R7,#10 movmov A,#00H A,#00HLoop: Loop: movmov R0, A R0, A inc R0 inc R0 djnzdjnz R7,Loop R7,Loop sjmpsjmp $ $ END END30H30HR0R023H23H98H98H0A8H0

35、A8H0FDH0FDH0 00 00 00 00 00 020222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4343例例 将两个半字节数合并成一个一字节数将两个半字节数合并成一个一字节数。 设内部设内部RAM 40H#, 41HRAM 40H#, 41H单元中分别存放着单元中分别存放着 8 8 位二进制数位二进制数, , 要求取出要求取出两个单元中的低半字节两个单元中的低半字节, , 并成一个字节后并成一个字节后, , 存入存入50H50H单元中。单元中。 程序如下程序如下: : START: MOV

36、 R1, START: MOV R1, 40H ; 40H ; 设置设置R1R1为为数据指针数据指针 MOV A, R1 ; MOV A, R1 ; 取出第一个单元中取出第一个单元中的内容的内容 ANL A, ANL A, 0FH ; 0FH ; 取第一个数的低取第一个数的低半字节半字节 SWAP A SWAP A ; ; 移至高移至高半字节半字节 INC R1 INC R1 ; ; 修改修改数据指针数据指针 XCH A, R1 XCH A, R1 ; ; 取第二个单元中取第二个单元中的内容的内容 ANL A, ANL A, 0FH ; 0FH ; 取第二个数的低取第二个数的低半字节半字节 O

37、RL A, R1 ; ORL A, R1 ; 拼字拼字 MOV 50H, A MOV 50H, A ; ; 存放结果存放结果 RET RET 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4444 0BH + 90H 9BH + 66H 101H 40H + 1 42H 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件45454.4 4.4 单片机汇编语言源程序的编辑和单片机汇编语言源程序的编辑和汇编(

38、自学)汇编(自学) 汇编汇编汇编汇编20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件46464.5 80C514.5 80C51单片机汇编语言伪指令单片机汇编语言伪指令汇编程序汇编程序 软件软件 工具工具工具软件工具软件:将程序员将程序员用汇编语言编写的程序用汇编语言编写的程序翻译成机器码翻译成机器码 ( (真真) )指令指令: :告诉告诉计算机计算机如何操作以及做何种操作如何操作以及做何种操作用汇编语言编写的程序用汇编语言编写的程序在此被称为在此被称为应用程序应用程序伪指令:伪指令:告诉告诉汇编程

39、序汇编程序在翻译应用程序时在翻译应用程序时有何具有何具体约定体约定。伪指令不进行具体的操作,那是真指令伪指令不进行具体的操作,那是真指令的事。的事。比如:比如:从何处开始,何处结束,某些编程者自己从何处开始,何处结束,某些编程者自己规定的表述代表什么意思规定的表述代表什么意思 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4747ORGORG addr16addr16ASM51ASM51程序中一定要写!程序中一定要写!规定编译后的机器代码存放的规定编译后的机器代码存放的起始位置起始位置。ENDEN

40、D ASM51ASM51程序中一定要写!程序中一定要写!表示翻译到此表示翻译到此结束结束,其后的任何内容不予理睬。,其后的任何内容不予理睬。符号名称符号名称 EQUEQU 表达式表达式将表达式的值赋予符号名称。程序中凡出现该将表达式的值赋予符号名称。程序中凡出现该符符号名称号名称就就等同于等同于该该表达式表达式。$ $ “当前当前PCPC值值”也叫也叫位置计数器位置计数器代表正在执行的指令所在位置。代表正在执行的指令所在位置。20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4848符号名称符号名称

41、BITBIT 位地址位地址将位地址的值赋予符号名称。程序中凡出现该将位地址的值赋予符号名称。程序中凡出现该符号名称符号名称就就代表代表该该位地址位地址。DWDW 双字节数据双字节数据 或双字节数据组或双字节数据组 将将双字节数据双字节数据 或双字节数据组或双字节数据组 顺序顺序存放在存放在此此后的后的存储单元中存储单元中。占据相应存储空间。占据相应存储空间。DBDB 8 8位数据位数据 或或8 8位数据组位数据组 将将8 8位数据位数据 或或8 8位数据组位数据组 顺序顺序存放在存放在此后的此后的存存储单元中储单元中。占相应数量的存储空间。占相应数量的存储空间。20222022年年6 6月月2

42、 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件4949汇编起始伪指令汇编起始伪指令 格式:格式: ORG ORG 功能:功能:指定汇编源程序编译成机器语言程序指定汇编源程序编译成机器语言程序 的起始地址的起始地址例如:例如: ORGORG 0000H 0000H LJMP 0100H LJMP 0100H ORGORG 0100H 0100H Start: MOV A,#5AH Start: MOV A,#5AH SJMP $ SJMP $ END END20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武

43、汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件5050汇编结束伪指令汇编结束伪指令 格式:格式:END END 起始地址起始地址 功能:停止汇编功能:停止汇编 仍用上例:仍用上例: ORG 0000H ORG 0000H LJMP 0100H LJMP 0100H ORG 0100H ORG 0100HStart: MOV A,#5AhStart: MOV A,#5Ah SJMP $ SJMP $ ENDEND20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系统设计单片机应用系统设计教学课件教学课件5151定义字节伪

44、指令定义字节伪指令 格式:格式: DB DB 功能:功能:把把项或项表的数值存入从标号开始的项或项表的数值存入从标号开始的连续单元,其中项或项表可以是一个字节、数连续单元,其中项或项表可以是一个字节、数或以引号括起来的字符串。或以引号括起来的字符串。 ORG 1000HORG 1000HDat: DB Dat: DB 11h,-111h,-1, ,A,BCDA,BCD END END 该指令只能为程序存储器赋初该指令只能为程序存储器赋初值,不能为其他存储器赋初值,尤其不值,不能为其他存储器赋初值,尤其不能为内部数据存储器赋初值。能为内部数据存储器赋初值。1000H1000H11H11HFFHFFH41H41H42H42H程序存储器程序存储器43H43H44H44H补码补码ASCIIASCII码码 20222022年年6 6月月2 2日星期四日星期四武汉理工大学机电学院武汉理工大学机电学院单片机应用系

温馨提示

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

评论

0/150

提交评论