MCS-51单片机汇编语言程序设计教材

上传人:xins****2008 文档编号:119792910 上传时间:2022-07-16 格式:PPTX 页数:45 大小:158.54KB
收藏 版权申诉 举报 下载
MCS-51单片机汇编语言程序设计教材_第1页
第1页 / 共45页
MCS-51单片机汇编语言程序设计教材_第2页
第2页 / 共45页
MCS-51单片机汇编语言程序设计教材_第3页
第3页 / 共45页
资源描述:

《MCS-51单片机汇编语言程序设计教材》由会员分享,可在线阅读,更多相关《MCS-51单片机汇编语言程序设计教材(45页珍藏版)》请在装配图网上搜索。

1、第第5 5章章 MCS-51MCS-51单片机汇编语单片机汇编语言程序设计言程序设计 程序设计:程序设计:指令的有序罗列。指令的有序罗列。两个方面两个方面:(1 1)选择某种语言;)选择某种语言;(2 2)解决问题的方法与步骤)解决问题的方法与步骤 -(算法)(算法)本章介绍汇编语言程序设计的基本问题,本章介绍汇编语言程序设计的基本问题,包括:包括:5 51 1 程序设计概述程序设计概述 5 52 2 基本的程序设计基本的程序设计 5 53 3 基本功能程序的设计基本功能程序的设计 5 54 4 数字滤波程序数字滤波程序5 51 1 程序设计概述程序设计概述 一、程序设计步骤一、程序设计步骤(

2、1 1)分析问题,确定问题的数学模型)分析问题,确定问题的数学模型(2 2)确定符合计算机运算的算法)确定符合计算机运算的算法(3 3)绘制流程图)绘制流程图(4 4)内存单元分配)内存单元分配(5 5)据流程图编写汇编语言程序)据流程图编写汇编语言程序(6 6)程序调试与修改)程序调试与修改二、程序设计技术二、程序设计技术 (1 1)模块化程序设计)模块化程序设计(2 2)自顶向下的程序设计)自顶向下的程序设计(3 3)软件的抗干扰技术)软件的抗干扰技术三、评价程序质量的标准三、评价程序质量的标准 程序的执行时间;程序的执行时间;程序所占用的内存字节数;程序所占用的内存字节数;程序的逻辑性、

3、可读性;程序的逻辑性、可读性;程序的兼容性、可扩展性;程序的兼容性、可扩展性;程序的可靠性。程序的可靠性。5 52 2 基本的程序设计基本的程序设计 在程序设计过程中,无论多复杂的在程序设计过程中,无论多复杂的程序结构都是由基本的程序结构组成的。程序结构都是由基本的程序结构组成的。一、一、顺序结构程序设计顺序结构程序设计 二、分支结构的程序设计二、分支结构的程序设计 三、循环结构的程序设计三、循环结构的程序设计一、顺序结构的程序一、顺序结构的程序 顺序结构程序是一种最简单、最基顺序结构程序是一种最简单、最基本的程序,按照程序编写的顺序逐条依本的程序,按照程序编写的顺序逐条依次执行,直到程序结束

4、。次执行,直到程序结束。这是程序的最基本的形式,任何程这是程序的最基本的形式,任何程序都离不开这种形式。序都离不开这种形式。例例5-15-1:编程将片内编程将片内RAM21HRAM21H单元的低单元的低3 3位和位和20H20H单元的低单元的低5 5位合并为一个字节送片内位合并为一个字节送片内RAM30HRAM30H,要求,要求21H21H的低的低3 3位放在高位上。位放在高位上。分析分析:(:(1 1)将将RAM20HRAM20H的高位屏蔽掉;的高位屏蔽掉;(2 2)将)将21H21H的高的高3 3位屏蔽掉,然位屏蔽掉,然后将其低后将其低5 5位移到高位移到高5 5位上;位上;(3 3)将以

5、上两者合并即可。)将以上两者合并即可。MOVMOV 30H 30H,20H20H ;20H20H中内容处理中内容处理ANL 30HANL 30H,#1FH#1FHMOV AMOV A,21H 21H ;21H21H中内容处理中内容处理SWAP ASWAP ARL ARL AANLANL A A,#0E0H#0E0HORLORL 30H 30H,A A ;两数合并;两数合并例例5-25-2:求内部求内部RAM20HRAM20H、21H21H中的中的4 4位压缩位压缩BCDBCD数与数与22H22H、23H23H中的中的4 4位压缩位压缩BCDBCD数的数的差,结果送差,结果送24H24H、25H

6、25H中。中。即即:(20H)(21H)20H)(21H)-(22H)(23H)=-(22H)(23H)=(24H)(25H)(24H)(25H).分析:分析:(9999H+1)-9999H+1)-(22H22H)()(23H23H)+(20H20H)(21H21H).CLRCLR C CMOVMOV A A,#9AH#9AH;用;用999AH-999AH-(22H22H)()(23H23H)SUBB ASUBB A,23H23HMOVMOV 25H 25H,A A;结果送;结果送24H24H和和25H25HMOVMOV A A,#99H#99HSUBB ASUBB A,22H22HMOVMO

7、V 24H 24H,A AMOVMOV A A,25H25H;(;(24H24H)()(25H25H)+(20H20H)()(21H21H)ADDADD A A,21H21HDADA A AMOVMOV 25H 25H,A A;结果存;结果存24H25H24H25HMOVMOV A A,24H24HADDC AADDC A,20H20HDADA A AMOVMOV 24H 24H,A A补充例题:补充例题:片外片外RAM1000HRAM1000H、1001H1001H分别存放两分别存放两个无符号数个无符号数10010001B10010001B和和1 10001010B0001010B,如,如果

8、果视其为视其为二进制数,编程完成其加法和二进制数,编程完成其加法和减法运算,结果放到片外减法运算,结果放到片外RAM1002HRAM1002H和和1003H1003H单元;如果单元;如果视其为视其为BCDBCD码,编程完码,编程完成其加法运算和减法运算,结果放到片成其加法运算和减法运算,结果放到片外外RAM1004HRAM1004H和和1005H1005H单元。单元。(框图框图)二、分支结构的程序二、分支结构的程序 分支结构程序是利用条件转移指分支结构程序是利用条件转移指令,使程序执行到某一指令时,根令,使程序执行到某一指令时,根据条件是否满足,来改变程序执行据条件是否满足,来改变程序执行的顺

9、序。的顺序。编写分支结构的程序主要在于编写分支结构的程序主要在于正确正确使用转移指令使用转移指令。编写分支结构的程序的关键是编写分支结构的程序的关键是确定确定好分支条件好分支条件 转移指令有三种:转移指令有三种:无条件转移无条件转移 条件转移条件转移 散转散转(1 1)无条件转移)无条件转移 它的程序转移方向是设计者事先安排的,它的程序转移方向是设计者事先安排的,与已执行程序的结果无关,使用时只需给出与已执行程序的结果无关,使用时只需给出正确的转移目标地址或偏移量即可,如:正确的转移目标地址或偏移量即可,如:ORG ORG0000H0000H LJMP LJMPMAINMAIN ORG ORG

10、0030H0030H MAINMAIN:(2 2)条件转移)条件转移 它是根据已执行程序对标志位或累加器它是根据已执行程序对标志位或累加器或对内部或对内部RAMRAM某位的影响结果,决定程某位的影响结果,决定程序的走向,形成各种分支。序的走向,形成各种分支。可用于分支结构的指令:可用于分支结构的指令:JZ/JNZJZ/JNZ、CJNECJNE、DJNZDJNZ、JC/JNCJC/JNC JB/JNBJB/JNB、JBCJBC程序框图程序框图:(:(a a、b b正确,正确,c c错误)错误)(3 3)散转)散转 它是根据某种已输入的或运算的结它是根据某种已输入的或运算的结果,使程序转向各个处理

11、程序中去,一果,使程序转向各个处理程序中去,一般单片机实现散转程序常用于逐次比较般单片机实现散转程序常用于逐次比较和算法处理的方法。这些方法一般比较和算法处理的方法。这些方法一般比较麻烦、易出错,麻烦、易出错,MCS-51MCS-51单片机具有一条单片机具有一条专门的散转指令专门的散转指令JMP A+DPTRJMP A+DPTR,可以使可以使它较方便地实现散转功能它较方便地实现散转功能。例例5-35-3:编制程序使编制程序使y y按下式赋值:按下式赋值:0,10,00,1xxxy VAR VAREQUEQU30H30H FUNC FUNCEQUEQU31H31H START:MOVSTART:

12、MOVA A,VARVAR;取;取x x JZJZCOMPCOMP;为;为0 0转转COMPCOMP JNB JNBACC.7ACC.7,POSIPOSI;00转转POSIPOSI MOV MOVA A,#0FFH#0FFH;0,-10,-1A A SJMP SJMPCOMP COMP POSI:MOVPOSI:MOVA A,#01H#01H COMP:MOVCOMP:MOVFUNCFUNC,A A RET RET例例5-45-4:设外部存储器单元设外部存储器单元 ST1ST1和和ST2ST2存放两个存放两个 不带符号的二进制不带符号的二进制 数,找出其中的大数,找出其中的大 数存入数存入ST

13、3ST3单元。单元。START1:CLR C ;进位位清;进位位清0 MOV DPTR,#ST1;设数据指针;设数据指针 MOVX A,DPTR;取第一个数;取第一个数 MOV R1,A;暂存第一个数;暂存第一个数 INC DPTR MOVX A,DPTR;取第二个数;取第二个数 MOV R2,A;暂存第二个数;暂存第二个数 SUBB A,R1;两数比较;两数比较 JNC BIG1 XCH A,R1;第一个数大;第一个数大 SJMP LBIG1:MOV A,R2L:INC DPTR MOVX DPTR,A;存大数;存大数例例5-55-5:空调机在制冷时,若排出空气比吸空调机在制冷时,若排出空气

14、比吸入空气温度低入空气温度低88,则认为工作正常,则认为工作正常,否则认为工作故障,并设置故障标志。否则认为工作故障,并设置故障标志。设片内设片内RAM40HRAM40H中存放吸入空气温度中存放吸入空气温度值,值,41H41H中存放排除空气温度值。中存放排除空气温度值。若若(40H)-(41H)(40H)-(41H)88,则空调机制冷,则空调机制冷正常正常,在,在42H42H单元中存放单元中存放“0 0”。否则在。否则在42H42H单元中存放单元中存放“FFHFFH”,以示故障(在,以示故障(在此此42H42H单元被设定为故障标志)。单元被设定为故障标志)。为了可靠地监控空调机为了可靠地监控空

15、调机 的工作情况,应做两次的工作情况,应做两次 减法,第一次减法减法,第一次减法(40H40H)-(41H41H),),若若C=1C=1,则肯定有故障;,则肯定有故障;第二次减法用两个温度的第二次减法用两个温度的 差值减去差值减去88,若,若C=1C=1,说,说 明温差小于明温差小于88,空调机也,空调机也 不正常工作。不正常工作。ORG 0000H ORG 0000HSTART:MOVSTART:MOV A A,40H40H;吸入温度值送;吸入温度值送A A CLR CLR C C SUBB A SUBB A,41H41H JC JC ERROR ERROR;C=1C=1有故障有故障 SUB

16、B A SUBB A,#8#8 JC JC ERROR ERROR;温差小于;温差小于88,有故障,有故障 MOV MOV 42H 42H,#0#0;工作正常标志;工作正常标志 SJMP EXIT SJMP EXITERROR:MOVERROR:MOV 42H 42H,#0FFH#0FFH;工作故障标志;工作故障标志EXIT:SJMP EXIT:SJMP$END END三、循环结构的程序三、循环结构的程序 循环程序是强制循环程序是强制CPUCPU重复执行某一指令重复执行某一指令序列的一种程序结构形式。序列的一种程序结构形式。循环结构的程序一般由循环结构的程序一般由5 5部分组成:部分组成:初初

17、始化,循环体(处理部分)、循环修改、始化,循环体(处理部分)、循环修改、循环控制循环控制(继续循环吗?)继续循环吗?)和和结束部分。结束部分。关键:关键:循环体(做什么)循环体(做什么)-变化量变化量-如如何变化何变化初始化、控制与判断初始化、控制与判断 例例5-105-10、5-115-11、5-125-12:1 1、工作单元清工作单元清0 0。2 2、多个单字节数据求和。多个单字节数据求和。3 3、设在设在DATDAT开始的片内开始的片内RAMRAM中存放中存放1010个个无符号字节数,找出最大值无符号字节数,找出最大值,并暂存在并暂存在A A中。中。实验实验3 3:1010个数,去掉一个

18、最大值、一个数,去掉一个最大值、一个最小值,求剩余个最小值,求剩余8 8个数的平均值。个数的平均值。例例5-15:多重循环:多重循环 设计软件延时:设计软件延时:12MHZ12MHZ,1ms1ms 冒泡程序冒泡程序5-16。注意循环结构:注意循环结构:5.3 5.3 基本功能程序的设计基本功能程序的设计 一、一、查表程序的设计查表程序的设计 二、子程序的设计二、子程序的设计 三、算术逻辑运算程序三、算术逻辑运算程序 四、数制转化程序四、数制转化程序一、查表程序一、查表程序 查表法是对一些复杂的函数运算如查表法是对一些复杂的函数运算如sinxsinx等,事先把其全部可能范围的函数值按等,事先把其

19、全部可能范围的函数值按一定的规律编成表格存放在计算机的程一定的规律编成表格存放在计算机的程序存储器中。当用户程序中需要用到这序存储器中。当用户程序中需要用到这些函数时,直接按编排好的索引值(或些函数时,直接按编排好的索引值(或程序号)寻找答案。程序号)寻找答案。在控制应用场合或智能仪器仪表中,经在控制应用场合或智能仪器仪表中,经常使用查表法。常使用查表法。例例5-175-17已知数据已知数据0 09 9的平方,设变量的平方,设变量x x的值在累加器的值在累加器A A中,查表后求中,查表后求x2x2的值放回累加器,试编制的值放回累加器,试编制程序。程序。X2:MOV DPTR,#X2TABX2:

20、MOV DPTR,#X2TAB MOVC A,A+DPTR MOVC A,A+DPTR RET RETX2TAB:DB X2TAB:DB 00H,01H,02H,64H,81H00H,01H,02H,64H,81H 例例5-185-18:设计一个将十六进制数转换成设计一个将十六进制数转换成ASCIIASCII码码的子程序。设十六进制数存放在的子程序。设十六进制数存放在R0R0的低的低4 4位,要求转换后的位,要求转换后的ASCIIASCII码送回码送回R0R0中中 DB 30HDB 30H,31H31H,。,。39H39H,41H41H,。,。46H46H 如果不用查表,应该怎样做:如果不用查

21、表,应该怎样做:例5-19:某智能化仪器的键盘程序中,根据命令的键某智能化仪器的键盘程序中,根据命令的键值(值(0 0、1 1、2 2、9 9)转换成相应的双字节)转换成相应的双字节1616位命令操作入口地址,其键值与对应入口位命令操作入口地址,其键值与对应入口地址关系如下:地址关系如下:键值(入口地址):键值(入口地址):0 0(0123H0123H););1 1(0186H0186H););2 2(0234H0234H););3 3(0316H0316H););4 4(0415H0415H););5 5(0520H0520H););6 6(0626H0626H););7 7(0710H07

22、10H););8 8(0818H0818H););9 9(0929H0929H)设键值存放在片内设键值存放在片内RAM20HRAM20H单元中,单元中,出口地址值存放在片内出口地址值存放在片内RAM22HRAM22H和和23H23H中。中。DB 01HDB 01H,23H23H DB 01HDB 01H,86H86H。DB 09HDB 09H,29H29H二、子程序设计二、子程序设计 在实际问题中,常常会遇到在一个程序在实际问题中,常常会遇到在一个程序中有许多相同的运算或操作。中有许多相同的运算或操作。因此在实际应用中,通常把这些多次使因此在实际应用中,通常把这些多次使用的程序段,按一定结构编

23、好,存放在用的程序段,按一定结构编好,存放在内存中,当需要时,程序可以去调用这内存中,当需要时,程序可以去调用这些独立的程序段。些独立的程序段。通常将这种可以被调用的程序段称为通常将这种可以被调用的程序段称为子子程序。程序。调用子程序的程序称为调用子程序的程序称为主程序。主程序。使用子程序的过程称为调用使用子程序的过程称为调用子程序;子程序;子程序执行完毕后返回主程序的过子程序执行完毕后返回主程序的过程称为程称为子程序返回。子程序返回。例例5-225-22、5-235-23:1 1、用程序实现用程序实现c=ac=a2+b2+b2。设。设a a、b b均小于均小于1010,a a存在片内存在片内

24、RAM31HRAM31H单元中,单元中,b b存在存在32H32H单元中,把单元中,把c c存入存入33H33H单元中。单元中。2 2、求两个无符号数据块中的最大值。求两个无符号数据块中的最大值。数据块的首地址分别为片内数据块的首地址分别为片内RAM60HRAM60H和和70H70H,每个数据块的第,每个数据块的第1 1个字节都存放数个字节都存放数据块的长度,结果存入据块的长度,结果存入5FH5FH单元。单元。三、算术逻辑运算程序三、算术逻辑运算程序 1 1、多字节二进制数加法、多字节二进制数加法 2 2、多字节压缩、多字节压缩BCDBCD码加法码加法 3 3、多字节求补、多字节求补 4 4、除以、除以2 2的倍数的处理的倍数的处理 5 5、双字节无符号数整数相乘、双字节无符号数整数相乘四、数制转换程序 1、二进制转换为十进制数 2、十进制数转换为二进制 3、二进制数转换为十六进制数的ASCII码 4、ASCII码字符串转换为十六进制数5.4 5.4 数字滤波程序数字滤波程序 程序判断滤波程序判断滤波 中值滤波中值滤波 算术平均值滤波算术平均值滤波 去极值滤波去极值滤波实验3设计3 片内片内RAM30H开始的开始的10个数,去掉一个个数,去掉一个最大值、一个最小值,求剩余最大值、一个最小值,求剩余8个数的个数的平均值。平均值。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!