找回密码
 注册

QQ登录

只需一步,快速开始

查看: 667|回复: 0

大工20秋《单片机原理及应用》复习资料七

[复制链接]
发表于 2021-3-5 09:33:11 | 显示全部楼层 |阅读模式
单片机原理及应用辅导资料七主    题:课件第四章第1-2节
学习时间:2020年5月11日--5月17日
“不忘初心、牢记使命”主题理论学习:
每周文摘:忠诚是共产党人必须具备的优秀品格。“忠诚印寸心,浩然充两间”的坚毅,“砍头不要紧,只要主义真”的无畏,腹中满是草根而宁死不屈的气节,食指钉入竹签而永不叛党的坚贞,无数先烈用鲜血诠释了对党的忠诚。对党忠诚必须是纯粹的、无条件的,是政治标准、更是实践标准,鲜明体现在坚决贯彻答案决策部署上。
摘选自《在第十九届中央纪律检查委员会第二次全体会议上的讲话》课程内容:
我们这周主要学习课件第四章单片机的程序设计第1-2节的相关内容。希望通过下面的内容能使同学们加深对单片机相关知识的理解。一、学习要求
掌握汇编的基本概念;理解单片机常用伪指令的使用方法。二、主要内容
1.汇编语言程序设计概述
MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。?
汇编:将汇编语言源程序转换成机器语言目标程序的过程称为汇编。
汇编程序:能将汇编语言源程序转换成机器语言目标程序的系统软件称为汇编程序。
汇编的方法有两种:
手工汇编:
人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。
机器汇编:
用计算机中的汇编程序对用户源程序进行汇编。
用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。这些由伪指令指定。
1) 确定程序中每条汇编语言指令的指令机器码
2) 确定每条指令在存储器中的存放地址
3) 提供错误信息                               
4) 提供目标执行文件(*.OBJ/*.HEX)和列表文件(*.LST)
地址
机器码
源程序



               ORG  2000H

2000H
78 30         
MAIN:  MOV  R0,30H

2002H
E6
               MOV  A,@R0



        ……


2.源程序与伪指令
(1)源程序的编辑与汇编
①源程序的编辑
源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用的汇编命令(即伪指令),例如下面的程序段:
ORG   0040H
    MOV  A,#7FH
MOV  R1,#44H
END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程序的起止位置。编辑好的源程序应以“ . ASM”扩展名存盘,以备汇编程序调用。
②源程序的汇编
将汇编语言源程序转换为单片机能执行的机器码形式的目标程序的过程叫汇编。常用的方法有两种:
手工汇编时,把程序用助记符指令写出后,通过手工方式查指令编码表,逐个把助记符指令翻译成机器码,然后把得到的机器码程序(以十六进制形式)键入到单片机开发机中,并进行调试。
机器汇编是在常用的个人计算机PC上,使用交叉汇编程序将汇编语言源程序转换为机器码形式的目标程序。生成的目标程序由PC机传送到开发机上,经调试无误后,再固化到单片机的程序存储器ROM中。
源程序经过机器汇编后,形成的若干文件中含有两个主要文件,一是列表文件,另一个是目标码文件。因汇编软件的不同,文件的格式及信息会有一些不同。但主要信息如下:
列表文件:
地 址     目标码        汇编程序
                       ORG   0040H
0040H     747F         MOV   A,#7FH
0042H     7944         MOV   R1,#44H
                       END
目标码文件:
首地址    末地址     目标码
0040H     0044H     747F7944
(2)伪指令
伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。
起始地址设定伪指令 ORG
格式为:
ORG  表达式
该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。如:
ORG    8000H
START:MOV   A,#30H
            …  …
此时规定该段程序的机器码从地址8000H单元开始存放。
在每一个汇编语言源程序的开始,都要设置一条ORG伪指令来指定该程序在存储器中存放的起始位置。若省略ORG伪指令,则该程序段从0000H单元开始存放。在一个源程序中,可以多次使用ORG伪指令规定不同程序段或数据段存放的起始地址,但要求地址值由小到大依序排列,不允许空间重叠。
汇编结束伪指令 END
格式为:END
该指令的功能是结束汇编。汇编程序遇到END伪指令后即结束汇编。处于END之后的程序,汇编程序将不处理。
③字节数据定义伪指令 DB
格式为:
[标号:] DB  字节数据表
功能是从标号指定的地址开始,在ROM中定义字节数据。该伪指令将字节数据表中的数据根据从左到右的顺序依次存放在指定的存储单元中。
一个数据占一个存储单元。例如:DB  “how  are  you?” 把字符串中的字符以ASCII码的形式存放在连续的ROM单元中。又如:DB   -2,-4,-6,8,10,18。 把6个数转换为十六进制表示(FEH,FCH,FAH,08H,0AH,12H),并连续地存放在6个ROM。该伪指令常用于存放数据表格。如要存放显示用的十六进制的字形码,可以用多条DB指令完成:
DB  0C0H,0F9H,0A4H,0B0H
DB  99H,92H,82H,0F8H
DB  80H,90H,88H,83H
DB  0C6H,0A1H,86H,84H
字数据定义伪指令 DW
格式为:[标号:] DW 字数据表
功能是从标号指定的地址单元开始,在程序存储器中定义字数据。该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。
应特别注意:16位的二进制数,高8位存放在低地址单元,低8位存放在高地址单元。例如:
ORG   1400H
DATA:DW   324AH,3CH
              …  …
汇编后,(1400H)=32H,(1401H)= 4AH,(1402H)=00H,(1403H)=3CH。
空间定义伪指令 DS
格式为:[标号:] DS  表达式
功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。例如:
ORG  3000H
BUF:DS  50
          …  …
汇编后,从地址3000H开始保留50个存储单元作为备用单元。
赋值伪指令 EQU
格式为:
符号名  EQU  表达式
功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。例如:
LEN  EQU  10
SUM  EQU  21H
BLOCK  EQU  22H
      CLR   A
      MOV  R7,#LEN
      MOV  R0,#BLOCK
LOOP:ADD  A,@R0
      INC   R0
      DJNZ  R7,LOOP
      MOV  SUM,A
      END
该程序的功能是,把BLOCK单元开始存放的10个无符号数进行求和,并将结果存入SUM单元中。
位地址符号定义伪指令 BIT
格式为:
符号名BIT 位地址表达式  
功能是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。例如:
ST    BIT   P1.0
将P1.0的位地址赋给符号名ST,在其后的编程中就可以用ST来代替P1.0。三、习题
(简答题)
1.80C51单片机汇编语言有何特点?
答:汇编语言的源程序结构紧凑、灵活,汇编成的目标程序具有效率高,占存储空间少、运行速度快、实时性强等优点。但因为是面向机器的语言,所以它缺乏通用性,编程复杂繁琐,但应用相当广泛。2.什么是伪指令?常用的伪指令功能如何?
答:伪指令是汇编程序能够识别的汇编命令。它不是单片机执行的指令,没有对应的机器码,仅是用来对汇编过程进行某种控制。
常用的伪指令及功能:
起始地址设定伪指令 ORG
该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址。
汇编结束伪指令 END
该指令的功能是结束汇编。
③字节数据定义伪指令 DB
该指令的功能是从标号指定的地址开始,在ROM中定义字节数据。
④字数据定义伪指令 DW
该指令的功能是从标号指定的地址单元开始,在程序存储器中定义字数据。
⑤空间定义伪指令 DS
该指令的功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。
⑥赋值伪指令 EQU
该指令的功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。
⑦位地址符号定义伪指令 BIT
该指令的功能是将位地址赋给指定的符号名。转载注明  无忧答案网  QQ 761296021

QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-4 10:19

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表