第四章汇编语言程序设计ppt课件.ppt
《第四章汇编语言程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计ppt课件.ppt(55页珍藏版)》请在三一办公上搜索。
1、1,2,第一章 微型计算机基础,2022/11/14,3,4.1 程序编制的方法,4.1.1程序编制的步骤,一、任务分析,二、进行算法的优化,三、程序总体设计及流程图绘制,2022/11/14,4,4.1.2 汇编语言的语句格式,语句行由四个字段组成 : 标号:操作码 操作数 ;注释,括号内的部分可以根据实际情况取舍。每个字段之间要用分隔符分隔,可以用作分隔符的符号有空格、冒号、逗号、分号等。如:LOOP:MOV A,# 7FH ;A7FH,4.1 程序编制的方法,2022/11/14,5,一、标号,标号是语句地址的标志符号,用于引导对该语句的非顺序访问。有关标号的规定为:,二、操作码、操作数
2、由指令助记符表示形式决定。,由18个ASCII字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其他特定字符; 不能使用已经定义了的符号作为标号。如指令助记符、寄存器符号名称等;后边必须跟冒号。,4.1 程序编制的方法,2022/11/14,6,三、注释 注释只是对语句的说明。注释字段可以增加程序的可读性。注释字段必须以分号“;”开头,长度不限,当一行书写不下时,可以换行书写,新行开头也要使用分号“;”。,四、数据的表示形式数据可以有以下几种表示形式:二进制数,末尾以字母 B 标识。如:1000 1111B;十进制数,末尾以字母 D 标识或将字母D省略。如:88D,66;十六进制数,末
3、尾以字母 H 标识。如:78H,0A8H(但应注意的是,十六进制数以字母AF开头时应在其前面加上数字“0”)ASCII码以单引号括起来标识。如:AB,1245,4.1 程序编制的方法,2022/11/14,7,4.2 源程序的编辑和汇编,一、源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用的汇编命令(即伪指令),例如下面的程序段: ORG 0040H MOV A,#7FH MOV R1,#44H END 这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程序的起止位置。编辑好的源程序应以“ . ASM”扩展名存盘,以备汇编程序调用。,4.2.1 源程序的
4、编辑与汇编,2022/11/14,8,二、源程序的汇编,将汇编语言源程序转换为单片机能执行的机器码形式的目标程序的过程叫汇编。常用的方法有两种:,手工汇编:通过手工方式查指令编码表,逐个把助记符指令翻译成机器码。,机器汇编:使用交叉汇编程序将汇编语言源程序转换为机器码形式的目标程序。,4.2 源程序的编辑和汇编,2022/11/14,9,伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。,4.2.2 伪指令,一、起始地址设定伪指令 ORG格式为: ORG 表达式 该指令的功能是向汇编程序说明下
5、面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。,4.2 源程序的编辑和汇编,2022/11/14,10,二、汇编结束伪指令 END格式为: END 该指令的功能是结束汇编。 汇编程序遇到END伪指令后即结束汇编。处于END之后的程序,汇编程序将不处理。,4.2 源程序的编辑和汇编,2022/11/14,11,源程序经过机器汇编后,形成的若干文件中含有两个主要文件,一是列表文件,另一个是目标码文件。但主要信息如下:,列表文件:地 址 目标码 汇编程序 ORG 0040H0040H 747F MOV A,#7FH0042H 7944 MOV R1,#44
6、H END目标码文件:首地址 末地址 目标码0040H 0044H 747F7944,4.2 源程序的编辑和汇编,2022/11/14,12,三、定义字节伪指令 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。,4.2 源程序的编辑和汇编,2022
7、/11/14,13,四、定义字伪指令 DW 标号: DW 字数据表 功能是从标号指定的地址单元开始,在ROM中定义字。该伪指令将字或字表中的数据按从左到右的顺序依次存放在指定的存储单元中。注意:高8位存放在低地址单元,低8位存放在高地址单元。例如:,ORG 1400HDATA:DW 324AH,3CH 汇编后,(1400H)=32H,(1401H)= 4AH,(1402H)=00H,(1403H)=3CH。,4.2 源程序的编辑和汇编,2022/11/14,14,五、空间定义伪指令 DS 标号: DS 表达式 功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为
8、备用的空间,并都填以零值。例如:,ORG 3000HBUF:DS 50 汇编后,从地址3000H开始保留50个存储单元作为备用单元。,4.2 源程序的编辑和汇编,2022/11/14,15,六、赋值伪指令 EQU符号名 EQU 表达式 功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。例如:,4.2 源程序的编辑和汇编,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单元开始
9、存放的10个无符号数进行求和,并将结果存入SUM单元中。,2022/11/14,16,七、位地址符号定义伪指令 BIT格式为:符号名 BIT 位地址表达式 功能是将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。,例如: ST BIT P1.0将P1.0的位地址赋给符号名ST,在其后的编程中就可以用ST来代替P1.0。,4.2 源程序的编辑和汇编,2022/11/14,17,4.3 基本程序结构,4.3.1 顺序程序 顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序进行的。 内部RAM的2AH2EH单元中存储的数据如图所示。试编写程序实现
10、图示的数据传送结果。,2022/11/14,18,方法一:MOV A,2EH ;2字节,1个机器周期MOV 2EH,2DH ;3字节,2个机器周期MOV 2DH,2CH ;3字节,2个机器周期MOV 2CH,2BH ;3字节,2个机器周期MOV 2BH,#00H ;3字节,2个机器周期,4.3 基本程序结构,2022/11/14,19,方法二:CLR A ;1字节,1个机器周期XCH A,2BH ;2字节,1个机器周期XCH A,2CH ;2字节,1个机器周期XCH A,2DH ;2字节,1个机器周期XCH A,2EH ;2字节,1个机器周期 以上两种方法均可以实现所要求的传送任务。方法一使用
11、14个字节的指令代码,执行时间为9个机器周期;方法二仅用了9个字节的代码,执行时间也减少到了5个机器周期。实际应用中应尽量采用指令代码字节数少、执行时间短的高效率程序,即注意程序的优化。,4.3 基本程序结构,2022/11/14,20,例 有一变量存放在片内RAM的20H单元,其取值范围为:00H05H。要求编制一段程序,根据变量值求其平方值,并存入片内RAM的21H单元。,4.3 基本程序结构,程序如下: ORG 1000HSTART:MOV DPTR,#2000H MOV A,20H MOVC A,A+DPTR MOV 21H,A SJMP $ ORG 2000HTABLE:DB 00,
12、01,04,09,16,25 END。,20,2022/11/14,21,例 双字节无符号数加法。 设被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。,4.3 基本程序结构,21,2022/11/14,22,程序段如下:MOV R0,50H ;被加数的低字节地址MOV R1,60H ;加数的低字节地址MOV A,R0 ;取被加数低字节ADD A,R1 ;加上加数低字节MOV R0,A ;保存低字节相加结果INC R0 ;指向被加数高字节INC R1 ;指向加数高字节MOV A,
13、R0 ;取被加数高字节ADDC A,R1 ;加上加数高字节(带进位加)MOV R0,A ;存高字节相加结果MOV 00H,C ;保存进位 。,4.3 基本程序结构,22,2022/11/14,23,4.3.2 分支程序,分支结构可以分成单分支、双分支和多分支几种情况 :,4.3 基本程序结构,2022/11/14,24,一、单分支程序例 求双字节补码。设在内部RAM的addr1和addr1+1单元存有一个双字节数(高位字节存于高地址单元)。编写程序将其读出取补后再存入addr2和addr2+1单元。,4.3 基本程序结构,方法:首先对低字节取补,然后判其结果是否为全“0”。若是,则高字节取补,
14、否则高字节取反。,2022/11/14,25,START:MOV R0,#addr1 ;原码低字节地址送R0 MOV R1,#addr2 ;补码低字节地址送R1 MOV A,R0 ;原码低字节送A CPL A ;A内容取补 INC A MOV R1,A ;存补码低字节 INC R0 ;调整地址,指向下一单元 INC R1 JZ ZERO ;(A)=0时转ZERO MOV A,R0 ;原码高字节送A CPL A SJMP LOOP1 ZERO:MOV A, R0 ;高字节取补存入addr2+1单元 CPL A INC A LOOP1: MOV R1,A ;高字节反码存入addr2+1单元 SJM
15、P $,4.3 基本程序结构,2022/11/14,26,二、双分支程序例 设变量 x 以补码的形式存放在片内RAM的30H单元,变量 y 与 x 的关系是:当 x 大于0时,y =x;当 x =0时,y =20H;当 x 小于0时,y =x+5。编制程序,根据 x 的大小求y并送回原单元。程序段如下:,START:MOV A,30H JZ NEXT ANL A,#80H ;判断符号位 JZ LP MOV A,#05H ADD A,30H MOV 30H,A SJMP LP NEXT:MOV 30H,#20H LP:SJMP $,4.3 基本程序结构,2022/11/14,27,4.3.3 循
16、环程序,按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断和先判断后执行两种基本结构 :,4.3 基本程序结构,2022/11/14,28,一、先执行后判断例 50ms延时程序。若晶振频率为12MHz,则一个机器周期为1s。执行一条DJNZ指令需要2个机器周期,即 2s。采用循环计数法实现延时,循环次数可以通过计算获得,并选择先执行后判断的循环结构。程序段如下:,4.3 基本程序结构,DEL:MOV R7,#200 ;1 sDEL1:MOV R6,#123 ;1 s NOP ;1 sDEL2:DJNZ R6,DEL2 ;2s,计(2123)s DJNZ R7,DEL1 ;2s,
17、RET 共计 (21232 2)200+1 s,即50.001ms,2022/11/14,29,例 无符号数排序程序。在片内RAM中,起始地址为30H的8个单元中存放有8个无符号数。试对这些无符号数进行升序排序。数据排序常用的方法是冒泡排序法。设R7为比较次数计数器,初始值为07H,位地址00H为数据互换标志位。 程序如下:,4.3 基本程序结构,2022/11/14,30,START:CLR 00H ;互换标志清0 MOV R7,#07H ;各次冒泡比较次数 MOV R0,#30H ;数据区首址 LOOP:MOV A,R0 ;取前数 MOV 2BH,A ;暂存 INC R0 MOV 2AH,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 汇编语言 程序设计 ppt 课件

链接地址:https://www.31ppt.com/p-1361591.html