第四章汇编语言程序设计优秀PPT.ppt
《第四章汇编语言程序设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计优秀PPT.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 汇编语言程序设计第一页,本课件共有103页4.1.1 MCS-51汇编语言伪指令汇编语言伪指令 伪伪指指令令不不属属于于指指令令系系统统,汇汇编编后后不不会会产产生生机机器器码码,只只用用来来对对汇汇编编过过程程进进行行控控制制或或提提供供某某些些汇汇编编信信息息。如如:规规定定汇汇编编生生成成的的目目标标代代码码在在内内存存种种的的存存放放区区域域,给给源源程程序序中中的的符符号号和和标标号号赋赋值值以以及及指指示示汇汇编编的的结结束束等等。但但它它不不会会令令计计算算机机做做任任何何操操作作,没没有有对对应应的的机机器器语语言言代代码码,由由于于它它有有指指令令的的形形式式而而无无
2、指指令令的的实实质质,所所以以称称“伪伪”指令。指令。4.1 汇编语言程序设计方法汇编语言程序设计方法第二页,本课件共有103页4.1.3 MCS-51汇编语言伪指令汇编语言伪指令 1ORG(Origin)汇编起始地址命令汇编起始地址命令 功能:用于规定目标程序的起始地址。功能:用于规定目标程序的起始地址。格式:格式:标号:标号:ORG 地址地址 地址项:地址项:16位绝对地址,也可以用标号或表达式表示。位绝对地址,也可以用标号或表达式表示。如果不用如果不用ORG规定,则汇编得到的目标程序将从规定,则汇编得到的目标程序将从0000H开始。开始。第三页,本课件共有103页一个源程序中,可多次使用
3、一个源程序中,可多次使用ORG指令以规定不同程序段的起指令以规定不同程序段的起始位置。地址应从小到大顺序排列,不允许重叠。始位置。地址应从小到大顺序排列,不允许重叠。例如:例如:ORG 0000HLJMP MAINORG 4200HMAIN:MOV A,30H 第四页,本课件共有103页2DB(Define Byte)字节定义伪指令)字节定义伪指令 功能:用于从指定的地址单元开始,在程序存储器中定义字节数据。功能:用于从指定的地址单元开始,在程序存储器中定义字节数据。格式:格式:标号:标号:DB 8位数表位数表 例如例如:DB “how are you?”常常使使用用本本命命令令存存放放数数据
4、据表表格格,例例如如存存放放数数码码管管显显示示的的十十六六进进制制数数的的字形码,可使用多条字形码,可使用多条DB命令定义:命令定义:DB C0H,F9H,A4H,B0HDB 99H,92H,82H,F8H DB80H,90H,88H,83H DBC6H,A1H,86H,84H第五页,本课件共有103页 3DW(Define Word)字定义伪指令字定义伪指令 功能:用于从指定地址开始,在程序存储器单元中定义功能:用于从指定地址开始,在程序存储器单元中定义16位的数据字。位的数据字。格式:格式:标号:标号:DW 16位数表位数表 存放规则:高存放规则:高8位在前(低地址),低位在前(低地址)
5、,低8位在后(高地址)。位在后(高地址)。例:例:DW 100H,1ACH,-814 ;按顺序存;按顺序存01H,00H,01H,ACH,D2H,FCH DW“AA”;存入;存入41H,41H DW“A”;存入;存入00H,41H DW “ABC”;不合法,因是两个字节;不合法,因是两个字节 第六页,本课件共有103页查表时,为确定数据区的起始位置,可采用两种方法:查表时,为确定数据区的起始位置,可采用两种方法:(1)根据)根据DB命令前一条指令的地址确定。命令前一条指令的地址确定。例:例:8100H MOV A,#49H (1字节)字节)TAB:DB C0H,F9H,A4H,B0H (2)使
6、用)使用ORG 指令专门规定指令专门规定例:例:ORG 8100H TAB:DB C0H,F9H,A4H,B0H 定义的数码管字形码从定义的数码管字形码从8100地址开始存放。地址开始存放。第七页,本课件共有103页 注意:注意:DB和和DW定义的数表,数的个数不得超过定义的数表,数的个数不得超过80个。个。如果数据的数目较多时,可使用多个定义命令。如果数据的数目较多时,可使用多个定义命令。在在 MCS-51程序设计应用中,常以程序设计应用中,常以DB定义数据,以定义数据,以DW定义地址。定义地址。第八页,本课件共有103页4DS(Define Storage)定义存储区伪指令定义存储区伪指令
7、 功功能能:用用于于从从指指定定地地址址开开始始,保保留留指指定定数数目目的的字字节节单单元元为为存存储储区区,供供程序运行使用。汇编时对这些单元不赋值。程序运行使用。汇编时对这些单元不赋值。格式:格式:标号:标号:DS 16位数表位数表 例:例:ADDRTABL:DS 20 例:例:ORG 8100H DS 08H注注意意:对对MSC-51单单片片机机来来说说,DB、DW、DS命命令令只只能能对对程程序序存存储储器使用,不能对数据存储器使用。器使用,不能对数据存储器使用。第九页,本课件共有103页5EQU(Equate)赋值伪指令赋值伪指令 功功能能:用用于于给给字字符符名名称称赋赋予予一一
8、个个特特定定值值。赋赋值值以以后后,其其值值在在整整个过程中有效。个过程中有效。格式:格式:字符名称字符名称 EQU 赋值项赋值项 “赋值项赋值项”:可以是常数、地址、标号或表达式。:可以是常数、地址、标号或表达式。8位位或或16位位二二进进制制数数。赋赋值值以以后后的的字字符符名名称称即即可可作地址使用,也可作立即数使用。作地址使用,也可作立即数使用。PA8155 EQU 8001H给标号给标号PA8155赋值赋值8001H。第十页,本课件共有103页6BIT 定义位地址符号伪指令定义位地址符号伪指令 功能:功能:用于给字符名称赋以位地址。用于给字符名称赋以位地址。格式:格式:字符名称字符名
9、称 BIT 位地址位地址 例如:例如:AAA BIT 40HBBB BIT 50H 其中其中“位地址位地址”可以是绝对地址,也可以是符号地址。可以是绝对地址,也可以是符号地址。第十一页,本课件共有103页7END(END of assembly)汇编终止命令)汇编终止命令 功能:用于终止源程序的汇编工作。功能:用于终止源程序的汇编工作。END之后的指令,汇编程序不予处理。之后的指令,汇编程序不予处理。格式:格式:标号:标号:END 表达式表达式 只只有有主主程程序序模模块块才才有有“表表达达式式”项项,且且“表表达达式式”的的值值等等于于该该程程序序模模块块的的入入口口地地址址。而而其其他他程
10、程序序模模块块就就没没有有“表表达达式式”项项。“标号:标号:”也是选择项。也是选择项。一个源程序只能有一个一个源程序只能有一个END命令。命令。第十二页,本课件共有103页 4.1.2 程序的设计步骤与方法程序的设计步骤与方法 汇编和高级语言程序设计的过程:汇编和高级语言程序设计的过程:首首先先对对问问题题进进行行分分析析,然然后后确确定定算算法法,再再根根据据算算法法流程编写程序,最后是调试程序。流程编写程序,最后是调试程序。汇编语言程序设计的汇编语言程序设计的独特点独特点在于:在于:(1)用用汇汇编编语语言言进进行行程程序序设设计计时时,对对数数据据的的存存放放、寄寄存存器器和和工工作作
11、单单元元的的使使用用等等要要由由设设计计者者安安排排。而而高高级级语语言言程程序序设设计计时时,这这些些工工作都由计算机软件安排,程序设计者不必考虑。作都由计算机软件安排,程序设计者不必考虑。第十三页,本课件共有103页(2)汇编语言程序设计要求设计人员必须对所使用的汇编语言程序设计要求设计人员必须对所使用的计计算机的硬件结构有较为详细的了解算机的硬件结构有较为详细的了解。特别是对。特别是对各类寄存各类寄存器、端口、定时器器、端口、定时器/计数器、中断等计数器、中断等内容要熟悉,以便在内容要熟悉,以便在程序设计时能熟练使用。程序设计时能熟练使用。第十四页,本课件共有103页汇编语言程序的设计步
12、骤:汇编语言程序的设计步骤:(1)分析问题,抽象出描述问题的数学模型)分析问题,抽象出描述问题的数学模型(2)确定解决问题的算法)确定解决问题的算法(3)根据算法绘制流程图)根据算法绘制流程图(4)分配存储空间及工作单元)分配存储空间及工作单元(5)编写源程序)编写源程序(6)上机调试)上机调试第十五页,本课件共有103页程序质量的判断标准:程序质量的判断标准:程序的执行时间短;占用的内存单元少;程序的语句行数程序的执行时间短;占用的内存单元少;程序的语句行数少。少。第十六页,本课件共有103页4.1.3 汇编语言源程序的编辑和汇编汇编语言源程序的编辑和汇编1.汇编语言源程序的编辑汇编语言源程
13、序的编辑编辑好的源程序应以“.ASM”扩展名存盘 2.汇编语言源程序的汇编汇编语言源程序的汇编源程序经机器汇编之后,若无语法错误,一般将生成两个新文件,它们的扩展名分别是.OBJ和.LST。第十七页,本课件共有103页例例4-1 将内部将内部RAM从从30H开始的开始的10个单元的内容个单元的内容相加,其和保存于相加,其和保存于A(假设其和仍为(假设其和仍为8位数)。位数)。列表文件(列表文件(.LST)信息如下:)信息如下:地址地址 机器码机器码汇编语言源程序汇编语言源程序 注释注释 ORG2000H ;定义程序起始地址;定义程序起始地址2000 7830 START:MOVR0,#30H;
14、初始地址送;初始地址送R02002 7A0A MOVR2,#10;循环初始值送;循环初始值送R22004 7400 MOVA,#00H;累加和初始值送;累加和初始值送A2006 26 LOOP:ADDCA,R0;完成累加;完成累加2007 08 INCR0 ;修改地址;修改地址2008 DAFC DJNZR2,LOOP;循环判断;循环判断200A 80FE SJMP$;暂停;暂停 END ;程序结束;程序结束INCLUDE IN HASHTABSTART:2000LOOP:2006目标文件(目标文件(.OBJ)信息如下:)信息如下:2000200C78307A0A74002608DAFC80F
15、E 第十八页,本课件共有103页方方法法一一:用用逻逻辑辑指指令令将将高高、低低半半字字节节分分开开,对对数数字字09加加上上30H即即可可得得到到所所对对应的应的ASCII码码30H39H。ORG2000HMOVA,40H;取数;取数ANLA,#0FH;分离出低半字节;分离出低半字节ADDA,#30H;变为;变为ASCII码码MOV42H,A;保存;保存MOVA,40H;重新取数;重新取数SWAPA;高、低半字节交换;高、低半字节交换ANLA,#0FH;分离出高半字节;分离出高半字节ADDA,#30H;变为;变为ASCII码码MOV41H,A;保存;保存END例例4-2 将将40H单元的高、
16、低半字节的两个单元的高、低半字节的两个BCD码拆开并变码拆开并变成其成其ASCII码,并分别存入码,并分别存入41H和和42H单元单元 第十九页,本课件共有103页汇编语言程序共有四种结构形式:汇编语言程序共有四种结构形式:顺序结构、循环结构、分支结构顺序结构、循环结构、分支结构和子程序结构。和子程序结构。第二十页,本课件共有103页方法二:采用方法二:采用BCD数除以数除以10H的方法,可把处于高、低半字节的两个的方法,可把处于高、低半字节的两个BCD码分别移到码分别移到A和和B的低的低4位,然后再各自与位,然后再各自与30H相相“或或”即变为即变为ASCII码。参考程序如下:码。参考程序如
17、下:ORG2000HMOVA,40H;取数;取数MOVB,#10H;送被除数;送被除数DIVAB;分离高、低半字节;分离高、低半字节ORLB,#30H;低;低4位调整为位调整为ASCII码码MOV42H,BORLA,#30H;高;高4位调整为位调整为ASCII码码MOV41H,AEND例例4-2 将将40H单元的高、低半字节的两个单元的高、低半字节的两个BCD码拆开并变成其码拆开并变成其ASCII码,并分别存入码,并分别存入41H和和42H单元单元 第二十一页,本课件共有103页例例 求两个求两个8位无符号数的和。位无符号数的和。设设两两个个8位位无无符符号号数数分分别别存存放放在在内内部部R
18、AM 20H和和21H单单元元,所所求求和和(不不超超过过255)存存放放在在22H单元。单元。ORG 2000HSTART:MOV R0,#20HMOVA,R0INCR0ADDA,R0INC R0MOVR0,ASJMP$END第二十二页,本课件共有103页4.2.5 循环程序设计循环程序设计 循环初态循环初态第二十三页,本课件共有103页 循环程序一般由四个主要部分组成循环程序一般由四个主要部分组成:(1)初初始始化化部部分分:为为循循环环程程序序做做准准备备,如如规规定定循循环环次次数数、给给各各变变量和地址指针预置初值。量和地址指针预置初值。(2)处处理理部部分分:为为反反复复执执行行的
19、的程程序序段段,是是循循环环程程序序的的实实体体,也也是是循循环环程序的主体。程序的主体。(3)循循环环控控制制部部分分:这这部部分分的的作作用用是是修修改改循循环环变变量量和和控控制制变变量量,并判断循环是否结束并判断循环是否结束,直到符合结束条件时直到符合结束条件时,跳出循环为止。跳出循环为止。(4)结束部分结束部分:这部分主要是对循环程序的结果进行分析、这部分主要是对循环程序的结果进行分析、处理和存放。处理和存放。第二十四页,本课件共有103页循环:单重循环循环:单重循环 多重循环(二重以上)循环嵌套。多重循环(二重以上)循环嵌套。在在多多重重循循环环程程序序中中,只只允允许许外外重重循
20、循环环嵌嵌套套内内重重循循环环程程序序,而而不不允允许许循循环环体体互互相相交交叉叉,另另外外,也也不不允允许许从从循循环环程程序序的的外外部部跳跳入入循循环环程程序的内部。序的内部。第二十五页,本课件共有103页例例4-3 把外部把外部RAM 5000H50FFH单元的内容清零。单元的内容清零。ORG 2000HSTART1:MOVDPTR,#5000H;循环初始化;循环初始化MOVR0,#00HMOVA,#00HLOOP1:MOVX DPTR,A;循环体;循环体INCDPTRINCR0CJNE R0,#00H,LOOP1;循环控制;循环控制END第二十六页,本课件共有103页例例4-4 将
21、内部将内部RAM从从40H开始连续单元的数据传送到外部开始连续单元的数据传送到外部RAM从从2000H开始的连开始的连续单元中,当所传送的数据为续单元中,当所传送的数据为0FFH时,传送停止。时,传送停止。解:解:ORG2000H MOV R0,#40H ;循环初始化;循环初始化MOVDPTR,#2000HLOOP:MOVA,R0 CJNE A,#0FFH,LOOP1 ;循环控制;循环控制 SJMPNEXTLOOP1:MOVX DPTR,A;循环体;循环体 INC R0 INC DPTR SJMP LOOP NEXT:SJMP$END 第二十七页,本课件共有103页例例4-5 从从P1口重复口
22、重复256次读数并取平均值,平均值的整数和小数部分分别保存于内次读数并取平均值,平均值的整数和小数部分分别保存于内部部RAM的的30H和和31H单元中。单元中。解:假设将解:假设将R2 R3作为作为16位寄存器以保存连续位寄存器以保存连续 256次读数的累加和次读数的累加和 ORG 4000HINTEGER EQU30HDECIMAL EQU31HAVR:MOV R2,#0;循环初始化;循环初始化 MOV R3,#0 MOV R4,#0;累加次数为;累加次数为256AVR1:MOV A,P1;循环体;循环体 ADD A,R3;累加至低;累加至低 8位位 JNC AVR2;无进位则暂存结果;无进
23、位则暂存结果 INC R2;有进位则高;有进位则高8位加增位加增 1AVR2:MOV R3,A ;暂存低;暂存低 8位位 DJNZ R4,AVR1;循环控制;循环控制 MOV INTEGER,R2MOVDECIMAL,R3END第二十八页,本课件共有103页例例 设设单单片片机机外外部部数数据据存存储储器器起起始始地地址址为为3000H的的数数据据块块中中有有100个个补补码码,要要求求逐逐一一检检查查,若若为为负负数数则则求求补补后后放放回回,正正数数则则不不变。变。ORG 1000HSTART1:MOVR7,#64H;设设置循置循环环初始初始值值MOVDPTR,#3000HLOOP1:MO
24、VX A,DPTR JNBACC.7,LOOP2CPLAINCAMOVX DPTR,ALOOP2:INCDPTR;外部;外部RAM单单元加元加1DJNZ R7,LOOP1END第二十九页,本课件共有103页例例 有有10个个无无符符号号数数依依次次存存放放在在内内部部RAM 30H开开始始的的单单元元中中,求求其其和和,并并将将结结果果放放在在R2和和R3中。中。ORG 2000HMOVR0,#30HMOVR2,#00HMOVR3,#00HMOVR7,#0AHNEXT:MOVA,R0;设设置循置循环环初始初始值值ADDA,R3MOVR3,AMOVA,R2ADDCA,#00HMOVR2,AINC
25、R0DJNZR7,NEXTSJMP$END第三十页,本课件共有103页例例4.6 设设MCS-51单单片片机机的的时时钟钟频频率率为为fosc=12 MHz,试试设设计计延延时时50ms的延时程序。的延时程序。延延时时程程序序所所花花费费的的时时间间是是该该程程序序指指令令的的总总机机器器周周期期数数与与机机器周期的乘积。器周期的乘积。通常,延时程序采用通常,延时程序采用MOV和和DJNZ指令来实现。指令来实现。单循环延时程序,最大的循环次数位单循环延时程序,最大的循环次数位256,则程序段为:,则程序段为:MOV R0,#00H ;机器周期数为;机器周期数为1 DJNZ R0,$;机器周期数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四章 汇编语言程序设计优秀PPT 第四 汇编语言 程序设计 优秀 PPT
限制150内