欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新单片机第4章汇编语言程序设计知识1精品课件.ppt

    • 资源ID:24246464       资源大小:1.33MB        全文页数:55页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新单片机第4章汇编语言程序设计知识1精品课件.ppt

    单片机第单片机第4章汇编语言程序章汇编语言程序设计知识设计知识14.1.1汇编语言的构成汇编语言的构成n用用MCS-51汇编语言编写的源程序行(一条语句)汇编语言编写的源程序行(一条语句)包括四个部分,也叫四个字段:包括四个部分,也叫四个字段:标号:标号:操作码操作码操作数操作数;注释注释n 每个字段之间要用分隔符分隔,而每个字段内部不能使用分每个字段之间要用分隔符分隔,而每个字段内部不能使用分隔符。可以用作分隔符的符号:空格隔符。可以用作分隔符的符号:空格“ ”、冒号、冒号“:”、逗号逗号“,”、分号、分号“;”等。等。例:例:LOOP:MOV A,#00H;立即数;立即数00HAEQU 赋值命令赋值命令n格式:字符名称格式:字符名称 EQU 项(数或汇编符号)项(数或汇编符号)n功能:把功能:把“项项”赋给赋给“字符名称字符名称”。n注意:字符名称不等于标号(其后没有冒号);其注意:字符名称不等于标号(其后没有冒号);其中的项,可以是数,也可以是汇编符号。中的项,可以是数,也可以是汇编符号。EQU赋值赋值过的符号名可以用作数据、代码地址、位地址或一过的符号名可以用作数据、代码地址、位地址或一个立即数。可以是个立即数。可以是8位的,也可以是位的,也可以是16位的。位的。EQU 赋值命令赋值命令例例1:AA EQU R1 MOV A,AA;AA代表工作寄存器代表工作寄存器R1例例2: A10 EQU 10DELY EQU 07EBH MOV A,A10;A10作为片内的一个直接地址作为片内的一个直接地址 LCALL DELY;DELY作为一个作为一个16位子程序的入口地位子程序的入口地址址DB 定义字节命令定义字节命令n格式:格式:DB(项或项表)(项或项表)n功能:通知汇编程序从当前功能:通知汇编程序从当前ROM地址开始,保留一地址开始,保留一个字或字节串的存储单元,并存入个字或字节串的存储单元,并存入DB后的数据。后的数据。n注意:项或项表可以是一个字节,用逗号隔开的字注意:项或项表可以是一个字节,用逗号隔开的字节串或括在单引号中的节串或括在单引号中的ASCII字符串。字符串。n例如:例如:DB 定义字节命令定义字节命令 ORG 2000H DB 0A3HLIST:DB 26H,03H STR:DB ABC 经汇编后(经汇编后(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,(,(41H,42H,43H分别为分别为A,B,C的的ASCII码)码)DW 定义字命令定义字命令n格式:格式:DW 16位数据项或项表位数据项或项表n功能:把功能:把DW后的后的16位数据项或项表从当前地址连位数据项或项表从当前地址连续存放。每项数值为续存放。每项数值为16位二进制数,高位二进制数,高8位先放,位先放,低低8位后存放。位后存放。DW用于定义一个地址表。用于定义一个地址表。n例如:例如:DW 定义字命令定义字命令 ORG 1500HTABLE:DW 7234H,8AH,10H 经汇编后(经汇编后(1500H)=72H, (1501H)=34H, (1502H)=00H, (1503H)=8AH, (1504H)=00H, (1505H)=10H,DS 定义存储空间命令定义存储空间命令n格式:格式:DS 表达式表达式n功能:在汇编时,从指定地址开始保留功能:在汇编时,从指定地址开始保留DS之后表达式的值所之后表达式的值所规定的存储单元以备后用。规定的存储单元以备后用。n例如:例如:ORG 1000HDS 08HDB 30H,8AH汇编后,从汇编后,从1000H保留保留8个单元,然后从个单元,然后从1008H按按DB命令给内命令给内存赋值,即(存赋值,即(1008H)=30H (1009H)=8AHBIT 位地址符号命令位地址符号命令n格式:字符名格式:字符名 BIT 位地址位地址n功能:把功能:把BIT后的位地址值赋给字符名。其中字符名不是标后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。号,其后没有冒号,但字符名是必须的。n例如:例如:nA1 BIT P1.0nA2 BIT 02Hn汇编后,汇编后,P1口第口第0位的位地址位的位地址90H就赋给了就赋给了A1,而而A2的值则的值则为为02H。DATA 数据地址赋值命令数据地址赋值命令n格式:字符名称格式:字符名称 DATA 表达式表达式n功能:与功能:与EQU类似,但有以下差别:类似,但有以下差别:n1、EQU定义的字符名必须先定义后使用,而定义的字符名必须先定义后使用,而DATA定义的字定义的字符名可以后定义先使用。符名可以后定义先使用。n2、用、用EQU伪指令可以把一个汇编符号赋给一个名字,而伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。只能把数据赋给字符名。n3、DATA语句可以把一个表达式的值赋给字符名称,其中的语句可以把一个表达式的值赋给字符名称,其中的表达式应是可求值的。表达式应是可求值的。END 汇编结束指令汇编结束指令n格式:格式:ENDn功能:通知汇编程序结束汇编。在功能:通知汇编程序结束汇编。在END之后所有的之后所有的汇编指令均不予以处理。汇编指令均不予以处理。4.2 汇编语言源程序的编辑和汇编4.2.1 源程序编辑n在微型计算机上,借助编辑软件,编写或修在微型计算机上,借助编辑软件,编写或修改汇编语言源程序。如行编辑或屏幕编辑软改汇编语言源程序。如行编辑或屏幕编辑软件。件。4.2.2 源程序的汇编n汇编:将汇编语言源程序转换为机器码表示的目汇编:将汇编语言源程序转换为机器码表示的目标程序的过程。对单片机有:标程序的过程。对单片机有: 一、手工汇编一、手工汇编 二、机器汇编二、机器汇编 三、反汇编三、反汇编一、手工汇编一、手工汇编n通过手工方式查指令编码表,逐个把助记符指令通过手工方式查指令编码表,逐个把助记符指令“翻译翻译”成机器码,然后把得到的机器码程序键入成机器码,然后把得到的机器码程序键入单片机,进行调试和运行。单片机,进行调试和运行。n手工汇编的缺点:手工汇编的缺点: 1、偏移量的计算容易出错、偏移量的计算容易出错 2、程序的修改会引起后面指令地址的变化,转移、程序的修改会引起后面指令地址的变化,转移指令的偏移量也要重新计算。指令的偏移量也要重新计算。二、机器汇编二、机器汇编n机器汇编是在计算机上使用交叉汇编程序进行源程机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作由机器自动完成,最后得到以序的汇编。汇编工作由机器自动完成,最后得到以机器码表示的目标程序。机器码表示的目标程序。三、反汇编三、反汇编n将二进制机器语言程序翻译成汇编语言程序的过程将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。称反汇编。n汇编和反汇编的过程如图汇编和反汇编的过程如图4-3所示。所示。源程序(汇编语言)目标码(机器语言)汇编(汇编程序)反汇编(汇编程序)图4-3 汇编和反汇编过程4.3 编程的步骤、方法和技巧4.3.1 编程的步骤n一、分析问题一、分析问题n二、确定算法二、确定算法n三、画程序流程图三、画程序流程图n四、编写程序四、编写程序一、分析问题一、分析问题n对需要解决的问题进行分析,以求对问题由正确的对需要解决的问题进行分析,以求对问题由正确的理解。理解。n解决问题的任务是什么?解决问题的任务是什么?n工作过程?工作过程?n现有的条件,已知数据,对运算的精度和速度方面现有的条件,已知数据,对运算的精度和速度方面的要求?的要求?n设计的硬件结构是否方便编程?设计的硬件结构是否方便编程?二、确定算法二、确定算法n算法是如何将实际问题转化成程序模块来处理。算法是如何将实际问题转化成程序模块来处理。n在编程以前,先要对几种不同的算法进行分析、比在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法较,找出最适宜的算法三、画程序流程图三、画程序流程图n程序流程图是使用各种图形、符号、有向线段等来说明程序程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。设计过程的一种直观的表示。n流程图步骤分得越细致,编写程序是也越方便。流程图步骤分得越细致,编写程序是也越方便。n画流程图是程序结构设计是采用的一种重要手段。画流程图是程序结构设计是采用的一种重要手段。n一个系统软件有总的流程图(主程序框图)和局部的流程图。一个系统软件有总的流程图(主程序框图)和局部的流程图。n流程图常采用的图形和符号。流程图常采用的图形和符号。椭圆框椭圆框或桶形框或桶形框:表示程序的开始或结束。矩形框矩形框:表示要进行的工作。:表示要进行的工作。菱形框菱形框:表示要判断的事情,菱形框内:表示要判断的事情,菱形框内的表达式表示要判断的内容。的表达式表示要判断的内容。圆圈圆圈:表示连接点:表示连接点指向线指向线:表示程序的流向:表示程序的流向4.4 汇编语言程序的基本结构一、顺序程序一、顺序程序二、分支程序二、分支程序三、循环程序三、循环程序一、顺序程序一、顺序程序n顺序程序是最简单的程序结构,即顺序结构。顺序程序是最简单的程序结构,即顺序结构。n程序按顺序一条一条地执行指令程序按顺序一条一条地执行指令。例:请编写能把例:请编写能把20H单元内两个单元内两个BCD数变成相应的数变成相应的ASCII码并放在码并放在20H(高位)和(高位)和21H(低位)(低位)分析:根据分析:根据ACSII字符表,字符表,09的的BCD数和数和ASCII码相差码相差30H。所以,。所以,只要将只要将20H中两个中两个BCD数拆开,分别加数拆开,分别加30H程序如下:程序如下:ORG 1000HMOV R0, #22HMOV R0, #00HMOV A, 20HXCHD A, R0ORL 22H, #30HSWAP AORL A, #30HMOV 21H, ASJMP $END例例2:16位数求补。设位数求补。设16位二进制数在位二进制数在R1R0中,中,求补结果存于求补结果存于R3R2中。中。Back二、分支程序二、分支程序n程序分支是通过条件转移指令实现的,即根据条件对程序的程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。序执行程序。n分支程序又分为单分支和多分支结构。分支程序又分为单分支和多分支结构。n多分支程序是首先把分支程序按序号排列,然后按序号值进多分支程序是首先把分支程序按序号排列,然后按序号值进行转移。行转移。n在在MCS-51指令系统中,通过条件判断实现单分支程序转移指令系统中,通过条件判断实现单分支程序转移的指令有:的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态等。此外还有以位状态作为条件进行程序分支的指令,如作为条件进行程序分支的指令,如JC、JNC、JB、JNB、JBC等。使用这些指令可以完成等。使用这些指令可以完成0、1、正、负,以及相等、正、负,以及相等、不相等作为各种条件判断依据的程序转移。不相等作为各种条件判断依据的程序转移。例:片内例:片内RAM ONERAM ONE和和TWOTWO两个单元中存有两个无两个单元中存有两个无符号数,将两个数中的小者存入符号数,将两个数中的小者存入30H30H单元。单元。Back三、循环程序三、循环程序n在程序运行时,有时需要连续重复执行某段程序,在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分:可以使用循环程序。其结构包括四部分: 1、置循环初值、置循环初值 2、循环体(循环工作部分)、循环体(循环工作部分) 3、修改控制变量、修改控制变量 4、循环控制部分、循环控制部分n其组织方式如图其组织方式如图4-2所示。所示。1、置循环初值、置循环初值n对于循环程序中所使用的工作单元,在循环开始时对于循环程序中所使用的工作单元,在循环开始时应置初值。应置初值。n例如,工作寄存器设置计数初值,累加器例如,工作寄存器设置计数初值,累加器A清清0,以,以及设置地址指针、长度等。及设置地址指针、长度等。2、循环体(循环工作部分)、循环体(循环工作部分)n重复执行的程序段部分,分为循环工作部分和循环重复执行的程序段部分,分为循环工作部分和循环控制部分。控制部分。n循环控制部分每循环一次,检查结束条件,当满足循环控制部分每循环一次,检查结束条件,当满足条件时,就停止循环,往下继续执行其他程序条件时,就停止循环,往下继续执行其他程序3、修改控制变量、修改控制变量n在循环程序中,不许给出循环结束条件。在循环程序中,不许给出循环结束条件。n常见的是计数循环,当循环了一定的次数后,就停常见的是计数循环,当循环了一定的次数后,就停止循环。止循环。n在单片机中,一般用一个工作寄存器在单片机中,一般用一个工作寄存器Rn作为计数器,作为计数器,对该计数器赋初值作为循环次数。每循环一次,计对该计数器赋初值作为循环次数。每循环一次,计数器的值减数器的值减1,即修改循环控制变量,当计数器的置,即修改循环控制变量,当计数器的置件为件为0时,就停止循环。时,就停止循环。4、循环控制部分、循环控制部分n根据循环结束条件,判断是否结束循环。根据循环结束条件,判断是否结束循环。nMCS-51可采用可采用DJNZ指令来自动修改控制变量并能指令来自动修改控制变量并能结束循环。结束循环。置初值循环体循环修改循环控制退出循环未完完(a)置初值循环体循环修改循环控制退出循环未完完(b)图4-2 循环组织方式流程图 Back例例1:统计字串长度。内存从:统计字串长度。内存从STRING开始有开始有一字串,该字串以一字串,该字串以$结束,试统计该字串长度,结束,试统计该字串长度,结果存于结果存于NUM单元中。单元中。 例:已知内部例:已知内部RAM的的BLOCK单元开始有一无符号单元开始有一无符号数据块,块长在数据块,块长在LEN单元。请编写求数据块中各数单元。请编写求数据块中各数累加和并存人累加和并存人SUM单元的程序。单元的程序。 ORG 0200H LEN DATA 20H SUM DATA 21H BLOCK DATA 22H CLR A MOV R2,LEN ;块长送;块长送R2 MOV R1,#BLOCK ;块起始地址送;块起始地址送R1 INC R2 ;R2一块长一块长+1 SJMP CHECK LOOP:ADD A,R1 ;A-A+(R1) INC R1 ;修改数据块指针;修改数据块指针R1 CHECK:DJNZ R2,LOOP ;若未完则转;若未完则转LOOP MOV SUM,A ;存累加和;存累加和 SJMP $ END方法方法B由同学们课后自己处理。由同学们课后自己处理。查表程序 Back许多情况下,本来通过计算才能解决的问题,可以许多情况下,本来通过计算才能解决的问题,可以用查表来解决,并且简便得多。因此,在实际单片用查表来解决,并且简便得多。因此,在实际单片机程序中,经常会编写查表程序以缩减程序的长度机程序中,经常会编写查表程序以缩减程序的长度,提高执行效率。,提高执行效率。MOVC A, A+DPTRMOVC A, A+PC例:用查表法编一子程序,将例:用查表法编一子程序,将40H单元中的单元中的BCD码转换成码转换成ASCII码。码。 BackORG 2000HTAB: DB 30H 31H 32H 33H 34H 35H 36H 37H 38H 39Hstart: MOV A,40H MOV DPTR,#TAB MOVC A,A+DPTR MOV 40H,A end子程序设计 Back所谓子程序是指完成确定任务并能为其他程序反复所谓子程序是指完成确定任务并能为其他程序反复调用的程序段。调用子程序的程序叫做主程序或称调用的程序段。调用子程序的程序叫做主程序或称调用程序。例如代码转换、通用算术、函数计算调用程序。例如代码转换、通用算术、函数计算、延时等等都可以编成子程序。、延时等等都可以编成子程序。 Back传送子程序参数的方法通常有以下传送子程序参数的方法通常有以下4种:种: 1、利用寄存器或片内、利用寄存器或片内RAM传送子程序参数传送子程序参数2、利用寄存器传送子程序的参数、利用寄存器传送子程序的参数3、利用堆栈传递子程序参数、利用堆栈传递子程序参数4、利用位地址传递子程序参数、利用位地址传递子程序参数例1:用查表法编一子程序,将40H单元中的BCD码转换成ASCII码。入口:待转换数在(40H)出口:转换后的数(40H) BackORG 2000HTAB: DB 30H 31H 32H 33H 34H 35H 36H 37H 38H 39Hsub1: MOV A,40H MOV DPTR,#TAB MOVC A,A+DPTR MOV 40H,A ret若将若将30H单元单元BCD码转换成码转换成ASCII码,利用码,利用SUB1子子程序。程序。 ORG 1000H MOV 40H,30H LCALL SUB1 MOV 30H,40HBack在编写子程序时应注意以下同题:在编写子程序时应注意以下同题: (1)子程序的第一条指令地址称为子程序的起始地址或入口子程序的第一条指令地址称为子程序的起始地址或入口地址。该指令前必须有标号,标号应以子程序任务定名。地址。该指令前必须有标号,标号应以子程序任务定名。 (2)主程序调用子程序是通过安排在主程序中的调用指令实主程序调用子程序是通过安排在主程序中的调用指令实现的。子程序返回主程序必须执行子程序末尾的返回指令。现的。子程序返回主程序必须执行子程序末尾的返回指令。 (3)主程序调用于程序以及从子程序返回主程序后,计算机主程序调用于程序以及从子程序返回主程序后,计算机能自动保护并恢复主程序的断点地址。能自动保护并恢复主程序的断点地址。 (4)为使所编子程序可以放在为使所编子程序可以放在64KB内存的任何子域并能内存的任何子域并能被主程序调用子程序内部必须使用相对转移指令被主程序调用子程序内部必须使用相对转移指令 (5)子程序参数可以分为人口和出口两类参散:人口参数是子程序参数可以分为人口和出口两类参散:人口参数是指于程序需要的原始参数。由调用它的主程序通过约定的工指于程序需要的原始参数。由调用它的主程序通过约定的工作寄存器作寄存器R0R7带殊功能寄存器带殊功能寄存器SFR、内存单元或堆栈等预、内存单元或堆栈等预先传送给子程序使用;出口参数是由于程序根据入口参数执先传送给子程序使用;出口参数是由于程序根据入口参数执行程序后获得的结果参数,应由子程序通过约定的行程序后获得的结果参数,应由子程序通过约定的R0R7、SFR、内存单元或堆栈等传递给主程序使用。、内存单元或堆栈等传递给主程序使用。

    注意事项

    本文(最新单片机第4章汇编语言程序设计知识1精品课件.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开