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

    80C51单片机汇编语言程序设计(新).ppt

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

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

    80C51单片机汇编语言程序设计(新).ppt

    单片机原理与应用单片机原理与应用Principle&Application of MCUPrinciple&Application of MCU第第4 4章章 80C5180C51单片机汇编语言程序设计单片机汇编语言程序设计1 1教学内容及要求教学内容及要求n n教学内容教学内容教学内容教学内容n n汇编语言程序的基本结构形式、子程序结构形式汇编语言程序的基本结构形式、子程序结构形式汇编语言程序的基本结构形式、子程序结构形式汇编语言程序的基本结构形式、子程序结构形式n n80C5180C5180C5180C51单片机汇编语言伪指令单片机汇编语言伪指令单片机汇编语言伪指令单片机汇编语言伪指令n n80C5180C5180C5180C51单片机汇编语言程序设计举例单片机汇编语言程序设计举例单片机汇编语言程序设计举例单片机汇编语言程序设计举例n n教学要求教学要求教学要求教学要求n n掌握顺序结构程序、分支程序、循环程序和子程序等掌握顺序结构程序、分支程序、循环程序和子程序等掌握顺序结构程序、分支程序、循环程序和子程序等掌握顺序结构程序、分支程序、循环程序和子程序等结构程序的设计等结构程序的设计等结构程序的设计等结构程序的设计等n n熟悉单片机汇编程序常用的伪指令熟悉单片机汇编程序常用的伪指令熟悉单片机汇编程序常用的伪指令熟悉单片机汇编程序常用的伪指令n n了解汇编语言程序的格式了解汇编语言程序的格式了解汇编语言程序的格式了解汇编语言程序的格式2 2 2 2汇编语言源程序的编辑和汇编汇编语言源程序的编辑和汇编3 3 3 3机器机器编辑编辑交叉交叉汇编汇编串行传送串行传送4 4 4 4地址地址地址地址机器码机器码机器码机器码标号标号标号标号助记符指令助记符指令助记符指令助记符指令80008000800080007820782078207820SORT:SORT:SORT:SORT:MOV R0,#20HMOV R0,#20HMOV R0,#20HMOV R0,#20H80028002800280027F077F077F077F07MOV R7,#07HMOV R7,#07HMOV R7,#07HMOV R7,#07H*.ASM*.ASM编辑、汇编编辑、汇编n n编辑:编辑:编辑:编辑:n n编写编写编写编写程序的过程称为编辑。程序的过程称为编辑。程序的过程称为编辑。程序的过程称为编辑。n n机器编辑机器编辑机器编辑机器编辑指借助于指借助于指借助于指借助于微型机微型机微型机微型机进行单片机的程序设计,通常都是使用进行单片机的程序设计,通常都是使用进行单片机的程序设计,通常都是使用进行单片机的程序设计,通常都是使用编编编编辑软件辑软件辑软件辑软件进行源程序的编辑。进行源程序的编辑。进行源程序的编辑。进行源程序的编辑。n n编辑完成后,生成一个由汇编指令和伪指令构成的扩展名为编辑完成后,生成一个由汇编指令和伪指令构成的扩展名为编辑完成后,生成一个由汇编指令和伪指令构成的扩展名为编辑完成后,生成一个由汇编指令和伪指令构成的扩展名为”.ASM.ASM.ASM.ASM”的的的的ASCIIASCIIASCIIASCII码文件。码文件。码文件。码文件。n n汇编:汇编:汇编:汇编:n n汇编语言源程序汇编语言源程序汇编语言源程序汇编语言源程序不能在单片机中直接执行,必须将其不能在单片机中直接执行,必须将其不能在单片机中直接执行,必须将其不能在单片机中直接执行,必须将其“翻译翻译翻译翻译”为为为为用二进制代码(机器语言)表示的用二进制代码(机器语言)表示的用二进制代码(机器语言)表示的用二进制代码(机器语言)表示的目标程序目标程序目标程序目标程序才能执行。这个才能执行。这个才能执行。这个才能执行。这个“翻翻翻翻译译译译”过程称为汇编。过程称为汇编。过程称为汇编。过程称为汇编。n n机器汇编机器汇编机器汇编机器汇编指由指由指由指由计算机计算机计算机计算机通过通过通过通过汇编程序汇编程序汇编程序汇编程序完成从完成从完成从完成从汇编语言源程序汇编语言源程序汇编语言源程序汇编语言源程序到到到到机器机器机器机器语言目标程序语言目标程序语言目标程序语言目标程序的的的的“翻译翻译翻译翻译”工作。工作。工作。工作。n n交叉汇编交叉汇编交叉汇编交叉汇编指使用指使用指使用指使用一种计算机一种计算机一种计算机一种计算机(PC)(PC)(PC)(PC)的汇编程序为另一种计算机的汇编程序为另一种计算机的汇编程序为另一种计算机的汇编程序为另一种计算机(单片单片单片单片机机机机)的源程序进行汇编的源程序进行汇编的源程序进行汇编的源程序进行汇编n n即运行汇编程序进行汇编的是一种计算机,而汇编得到的目标程序是即运行汇编程序进行汇编的是一种计算机,而汇编得到的目标程序是即运行汇编程序进行汇编的是一种计算机,而汇编得到的目标程序是即运行汇编程序进行汇编的是一种计算机,而汇编得到的目标程序是另一种计算机用的。另一种计算机用的。另一种计算机用的。另一种计算机用的。5 5 5 580C5180C51单片机汇编语言伪指令单片机汇编语言伪指令n n汇编时,源程序须向汇编程序发出一些指示信息,协助完成汇编时,源程序须向汇编程序发出一些指示信息,协助完成汇编时,源程序须向汇编程序发出一些指示信息,协助完成汇编时,源程序须向汇编程序发出一些指示信息,协助完成汇编工作,这一工作是由伪指令来完成的。汇编工作,这一工作是由伪指令来完成的。汇编工作,这一工作是由伪指令来完成的。汇编工作,这一工作是由伪指令来完成的。n n汇编起始地址命令汇编起始地址命令汇编起始地址命令汇编起始地址命令ORG(Origin)ORG(Origin)ORG(Origin)ORG(Origin)n n定义字节命令定义字节命令定义字节命令定义字节命令DB(Define Byte)DB(Define Byte)DB(Define Byte)DB(Define Byte)n n定义数据字命令定义数据字命令定义数据字命令定义数据字命令DW(Define Word)DW(Define Word)DW(Define Word)DW(Define Word)n n预留存储区命令预留存储区命令预留存储区命令预留存储区命令DS(Define Storage)DS(Define Storage)DS(Define Storage)DS(Define Storage)n n位定义命令位定义命令位定义命令位定义命令BITBITBITBITn n赋值命令赋值命令赋值命令赋值命令EQU(Equate)EQU(Equate)EQU(Equate)EQU(Equate)n n数据地址赋值伪指令数据地址赋值伪指令数据地址赋值伪指令数据地址赋值伪指令DATADATADATADATAn n汇编终止命令汇编终止命令汇编终止命令汇编终止命令END(End of assembly)END(End of assembly)END(End of assembly)END(End of assembly)n n注注注注意意意意!伪伪伪伪指指指指令令令令仅仅仅仅供供供供汇汇汇汇编编编编程程程程序序序序将将将将源源源源程程程程序序序序翻翻翻翻译译译译成成成成目目目目标标标标程程程程序序序序,本本本本身身身身并并并并不形成机器码。不形成机器码。不形成机器码。不形成机器码。6 6 6 6汇编起始地址命令汇编起始地址命令ORG(Origin)ORG(Origin)n n规定程序或数据的起始存放地址。规定程序或数据的起始存放地址。规定程序或数据的起始存放地址。规定程序或数据的起始存放地址。n n出现在每段源程序或数据块的开始出现在每段源程序或数据块的开始出现在每段源程序或数据块的开始出现在每段源程序或数据块的开始n n 项是项是项是项是16161616位绝对地址位绝对地址位绝对地址位绝对地址,或者标号,或者表达式。,或者标号,或者表达式。,或者标号,或者表达式。,或者标号,或者表达式。n n在一个汇编语言源程序中允许使用多条定位伪指令,但其在一个汇编语言源程序中允许使用多条定位伪指令,但其在一个汇编语言源程序中允许使用多条定位伪指令,但其在一个汇编语言源程序中允许使用多条定位伪指令,但其值应从小到大,并与前面的值应从小到大,并与前面的值应从小到大,并与前面的值应从小到大,并与前面的存放地址不重叠存放地址不重叠存放地址不重叠存放地址不重叠。n n如果程序的开始不放如果程序的开始不放如果程序的开始不放如果程序的开始不放ORGORGORGORG,则汇编程序将从,则汇编程序将从,则汇编程序将从,则汇编程序将从0000H0000H0000H0000H单元单元单元单元开始开始开始开始放目标程序代码。放目标程序代码。放目标程序代码。放目标程序代码。ORG ORG ORG ORG 7 7 7 7ORG 0000HORG 0000HORG 0000HORG 0000H;从从从从0000H0000H0000H0000H单元开始存放下面的指令单元开始存放下面的指令单元开始存放下面的指令单元开始存放下面的指令LJMP 0030HLJMP 0030HLJMP 0030HLJMP 0030HORG 0030HORG 0030HORG 0030HORG 0030H;从从从从0030H0030H0030H0030H单元开始存放下面的指令单元开始存放下面的指令单元开始存放下面的指令单元开始存放下面的指令MAIN:MAIN:MAIN:MAIN:MOV SP,#50HMOV SP,#50HMOV SP,#50HMOV SP,#50HORG 0040HORG 0040HORG 0040HORG 0040H;从从从从0040H0040H0040H0040H单元开始存放下面的数据单元开始存放下面的数据单元开始存放下面的数据单元开始存放下面的数据TABTABTABTAB:DB 23,89DB 23,89DB 23,89DB 23,89定义字节命令定义字节命令DB(Define Byte)DB(Define Byte)n n在程序存储器中在程序存储器中定义字节定义字节数据数据。n nXnXnXnXn可可可可以以以以是是是是一一一一字字字字节节节节常常常常数数数数;用用用用双双双双引引引引号号号号或或或或者者者者单单单单引引引引号号号号括括括括起起起起来来来来的的的的字符或字符串;各个数之间用逗号隔开。字符或字符串;各个数之间用逗号隔开。字符或字符串;各个数之间用逗号隔开。字符或字符串;各个数之间用逗号隔开。DBDBDBDBX1,X2,X1,X2,X1,X2,Xn,Xn,Xn8 8 8 8ORG 1000HORG 1000HA1:DB 01001010B,23A1:DB 01001010B,23o o,23,78H,23,78H,A2:DB A2:DB 5 5,”12AB12AB”,12D,-2,12D,-2(1000H)=01001010B=4AH,(1000H)=01001010B=4AH,(1001H)=23(1001H)=23o o=13H=13H,(1002H)=23=17H,(1002H)=23=17H,(1003H)=78H,(1003H)=78H,(1004H)=35H(5(1004H)=35H(5的的ASCIIASCII码码),),(1005H)=31H(1(1005H)=31H(1的的ASCIIASCII码)码),(1006H)=32H(2(1006H)=32H(2的的ASCIIASCII码码),),(1007H)=41H(A(1007H)=41H(A的的ASCIIASCII码)码),(1008H)=42H(B(1008H)=42H(B的的ASCIIASCII码码),),(1009H)=12D=0CH(1009H)=12D=0CH(100AH)=-2=0FEH(100AH)=-2=0FEH【例例例例】定义数据字命令定义数据字命令DW(DefineDW(DefineWord)Word)n n在程序存储器中在程序存储器中定义定义1616位的数据字位的数据字。n n存存存存放放放放时时时时,数数数数据据据据字字字字的的的的高高高高8 8 8 8位位位位在在在在低低低低地地地地址址址址,低低低低8 8 8 8位位位位在在在在后后后后高地址。高地址。高地址。高地址。n n通常,通常,通常,通常,DBDBDBDB用来定义数据,用来定义数据,用来定义数据,用来定义数据,DWDWDWDW用来定义地址用来定义地址用来定义地址用来定义地址。DWDWY1,Y2,YnDW DW DW DW“AAAAAAAA”;存入存入存入存入41H41H41H41H,41H41H41H41HDW DW DW DW“A A A A”;存入存入存入存入00H00H00H00H,41H41H41H41HDW DW DW DW“ABCABCABCABC”;不合法,因为超过了两个字节不合法,因为超过了两个字节不合法,因为超过了两个字节不合法,因为超过了两个字节DW 100H,1ACH,-804DW 100H,1ACH,-804DW 100H,1ACH,-804DW 100H,1ACH,-804;按顺序存入按顺序存入按顺序存入按顺序存入01H01H01H01H、00H00H00H00H、01H01H01H01H、0ACH0ACH0ACH0ACH、0FCH0FCH0FCH0FCH、0DCH0DCH0DCH0DCH9 9 9 9【例例例例】预留存储区命令预留存储区命令DS(Define Storage)DS(Define Storage)n n在程序存储器中保留指定数目的单元作为在程序存储器中保留指定数目的单元作为预留存储区预留存储区,供程序运行使用。,供程序运行使用。【例例】ADDRTAB:DS 20ADDRTAB:DS 20;从标号从标号ADDRTABADDRTAB代表的地址开始,预留代表的地址开始,预留2020个个;连续的地址单元。连续的地址单元。DS DS DBDB、DWDW、DSDS只能对于程序存储器使用只能对于程序存储器使用10101010位定义命令位定义命令BITBITn n把位地址赋给字符名称。把位地址赋给字符名称。【例例例例】:AQ BIT P1.0AQ BIT P1.0AQ BIT P1.0AQ BIT P1.0;把把把把P1.0P1.0P1.0P1.0的位地址赋给字符名的位地址赋给字符名的位地址赋给字符名的位地址赋给字符名AQAQAQAQ,在其后,在其后,在其后,在其后;的编程中的编程中的编程中的编程中AQAQAQAQ可以作为位地址使用。可以作为位地址使用。可以作为位地址使用。可以作为位地址使用。BIT BIT 11111111赋值命令赋值命令 EQU(Equate)EQU(Equate)n n给数或符号赋给给数或符号赋给字符字符n n 可以是常数、地址、标号或表达式。可以是常数、地址、标号或表达式。可以是常数、地址、标号或表达式。可以是常数、地址、标号或表达式。n n赋赋赋赋值值值值以以以以后后后后的的的的字字字字符符符符既既既既可可可可以以以以作作作作地地地地址址址址使使使使用用用用,也也也也可可可可以以以以作作作作立即数使用。立即数使用。立即数使用。立即数使用。【例例】CS EQU 0FFFFHCS EQU 0FFFFHA1 EQU R1A1 EQU R1A2 EQU 10H A2 EQU 10H DELAY EQU 0708HDELAY EQU 0708HA1A1A1A1可作为寄存器可作为寄存器可作为寄存器可作为寄存器R1R1R1R1来使用,来使用,来使用,来使用,A2A2A2A2可作为可作为可作为可作为8 8 8 8位直接地址或立即数使用,位直接地址或立即数使用,位直接地址或立即数使用,位直接地址或立即数使用,DELAYDELAYDELAYDELAY可作为可作为可作为可作为16161616位地址或者立即数使用。位地址或者立即数使用。位地址或者立即数使用。位地址或者立即数使用。字符名字符名字符名字符名 EQU EQU EQU EQU 数或汇编符号数或汇编符号数或汇编符号数或汇编符号12121212数据地址赋值伪指令数据地址赋值伪指令DATADATAn n将表达式的值赋给字符。将表达式的值赋给字符。n n表达式可以是一个数据或地址,也可以是一个表达式可以是一个数据或地址,也可以是一个表达式可以是一个数据或地址,也可以是一个表达式可以是一个数据或地址,也可以是一个包含所定义字符名在内的表达式,但不能是一包含所定义字符名在内的表达式,但不能是一包含所定义字符名在内的表达式,但不能是一包含所定义字符名在内的表达式,但不能是一个汇编符号(如个汇编符号(如个汇编符号(如个汇编符号(如R0R0R0R0R7R7R7R7)。)。)。)。n n与与与与EQUEQUEQUEQU的区别的区别的区别的区别:n nEQUEQUEQUEQU必须先定义后使用。必须先定义后使用。必须先定义后使用。必须先定义后使用。n nDATADATADATADATA无此限制,所以无此限制,所以无此限制,所以无此限制,所以DATADATADATADATA伪指令可以放在源程序的伪指令可以放在源程序的伪指令可以放在源程序的伪指令可以放在源程序的开头或末尾开头或末尾开头或末尾开头或末尾MOV R0,ADDRESSMOV R0,ADDRESSMOV R1,#ADDRESSMOV R1,#ADDRESSADDRESS DATA 31HADDRESS DATA 31H将将31H31H单元内容送单元内容送R0,(R1)=31HR0,(R1)=31H。字符名字符名字符名字符名 DATA DATA 表达式表达式表达式表达式13131313汇编终止命令汇编终止命令END(End of assembly)END(End of assembly)n n用用于于终终止止源源程程序序的的汇汇编编工工作作,在在一一个个源源程程序序中中只只能能有有一一条条ENDEND命命令令,并并且且位位于于程程序序的的最后最后。n n如如果果ENDEND命命令令出出现现在在程程序序中中间间,则则其其后后面面的的源程序将不予处理。源程序将不予处理。14141414一般汇编调试工具要求的汇编格式一般汇编调试工具要求的汇编格式n n一般用汇编语言编写的程序,要求指出该程序存一般用汇编语言编写的程序,要求指出该程序存一般用汇编语言编写的程序,要求指出该程序存一般用汇编语言编写的程序,要求指出该程序存放于放于放于放于内存地址的位置内存地址的位置内存地址的位置内存地址的位置,并且将用到的数据和需要,并且将用到的数据和需要,并且将用到的数据和需要,并且将用到的数据和需要预留存放数据的空间用伪指令定义好预留存放数据的空间用伪指令定义好预留存放数据的空间用伪指令定义好预留存放数据的空间用伪指令定义好n n然后编写程序代码然后编写程序代码然后编写程序代码然后编写程序代码n n最后用最后用最后用最后用原地踏步或返回起始位置循环原地踏步或返回起始位置循环原地踏步或返回起始位置循环原地踏步或返回起始位置循环作为结束。作为结束。作为结束。作为结束。ORGORGSJMP$SJMP$ENDEND【例例】程序格式如下:程序格式如下:15151515汇编语言程序的基本结构形式汇编语言程序的基本结构形式16161616分支结构分支结构n n使用条件转移指令使用条件转移指令对程序的执行结果进行判断对程序的执行结果进行判断n nJZJZJZJZ、JNZJNZJNZJNZ、CJNECJNECJNECJNE、DJNZDJNZDJNZDJNZn nJCJCJCJC、JNCJNCJNCJNC、JBJBJBJB、JNBJNBJNBJNB、JBCJBCJBCJBC17171717【例例例例】二分支。在外部二分支。在外部二分支。在外部二分支。在外部RAMRAMRAMRAM中有中有中有中有ST1ST1ST1ST1、ST2ST2ST2ST2和和和和ST3ST3ST3ST3共共共共3 3 3 3个个个个连续单元,其中连续单元,其中连续单元,其中连续单元,其中ST1ST1ST1ST1和和和和ST2ST2ST2ST2单元中存放着两个无符号单元中存放着两个无符号单元中存放着两个无符号单元中存放着两个无符号二进制数,要求找出其中的大数并存入二进制数,要求找出其中的大数并存入二进制数,要求找出其中的大数并存入二进制数,要求找出其中的大数并存入ST3ST3ST3ST3单元中。单元中。单元中。单元中。18181818【例例】三分支三分支-多次二选一。设变量多次二选一。设变量x x存入存入30H30H单元,求得函数单元,求得函数y y存入存入31H31H单元。按下式要求单元。按下式要求给给y y赋值:赋值:x-1(x5)0(5x 10)x+1(x10)Y=要根据要根据x的大小来决定的大小来决定y值,在判断值,在判断x5和和y10时,采用时,采用CJNE和和JC以及以及CJNE和和JNC指令进行判断。指令进行判断。19191919ORG 1000HMOV A,30H;取取xCJNE A,#5,NEXT1;与与5比较比较NEXT1:JC NEXT3;x5,则转,则转NEXT3CJNE A,#10,NEXT2;与与10比较比较NEXT2:JNC NEXT4;x10,则转,则转NEXT4MOV R0,#0;5x 10,y=0SJMP NEXT5NEXT3:MOV R0,ADEC R0;x5,y=x-1SJMP NEXT5NEXT4:MOV R0,AINC R0;x10,y=x+1NEXT5:MOV 31H,R0;存结果存结果SJMP$END20202020多分支转移多分支转移n n使用使用变址寻址转移指令变址寻址转移指令(散转指令散转指令)n nJMP A+DPTR ;PC(A)+(DPTR)JMP A+DPTR ;PC(A)+(DPTR)JMP A+DPTR ;PC(A)+(DPTR)JMP A+DPTR ;PC(A)+(DPTR)n n数据表、转移指令表、堆栈操作数据表、转移指令表、堆栈操作数据表、转移指令表、堆栈操作数据表、转移指令表、堆栈操作21212121通过通过数据表数据表实现程序多分支实现程序多分支22222222MOV MOV A,#kA,#k;分支序号分支序号分支序号分支序号k k送送送送A AMOV DPTR,#BRTABMOV DPTR,#BRTAB;表首址表首址表首址表首址MOVC A,A+DPTRMOVC A,A+DPTR;查表后,查表后,查表后,查表后,(A)=BRk-BRTAB(A)=BRk-BRTABJMP A+DPTRJMP A+DPTR;散转指令散转指令散转指令散转指令,(PC)=BRk,(PC)=BRkBRTAB:BRTAB:DB DB BR0-BRTABBR0-BRTAB;数据表数据表数据表数据表,BRTAB+0,BRTAB+0DBDBBR1-BRTABBR1-BRTAB;分支入口地址与表首址之差分支入口地址与表首址之差分支入口地址与表首址之差分支入口地址与表首址之差,BRTAB+1,BRTAB+1DBDBBRn-BRTABBRn-BRTAB;BRTAB+n;BRTAB+nBR0:BR0:;各个分支程序各个分支程序各个分支程序各个分支程序BR1:BR1:BRn:BRn:通过通过转移指令表转移指令表实现程序多分支实现程序多分支23232323MOV A,#k;分支序号分支序号k送送ARL A;分支序号乘以分支序号乘以2MOV DPTR,#BRTAB;表首址表首址JMP A+DPTR;(PC)=BATAB+2kBRTAB:AJMP BR0;转分支程序转分支程序0,BRTABAJMP BR1;转分支程序转分支程序1,BRTAB+2AJMP BRn;转分支程序转分支程序n,BRTAB+2nBR0:BR0:;各个分支程序各个分支程序各个分支程序各个分支程序BR1:BR1:BRn:BRn:使用长转移指令使用长转移指令LJMPLJMP时,时,MOV A,#kRL AADD A,R3MOV DPTR,#BRTABJMP A+DPTRBRTAB:LJMP BR0;BRTABLJMP BR1;BRTA+3 LJMP BRn;BRTAB+3n24242424通过通过通过通过堆栈操作堆栈操作堆栈操作堆栈操作实现程序多分支实现程序多分支实现程序多分支实现程序多分支25252525MOV DPTR,#BRTAB;MOV DPTR,#BRTAB;分支程序入口地址表首址分支程序入口地址表首址分支程序入口地址表首址分支程序入口地址表首址MOV MOV A,#kA,#k;分支序号放入分支序号放入分支序号放入分支序号放入A A中中中中RL ARL A;分支序号值乘以分支序号值乘以分支序号值乘以分支序号值乘以2 2MOV R1,AMOV R1,A;暂存暂存暂存暂存A A值入值入值入值入R1R1INC AINC A;A;A指向低位地址指向低位地址指向低位地址指向低位地址MOVC A,A+DPTRMOVC A,A+DPTR;取低位地址取低位地址取低位地址取低位地址BRn 7-0BRn 7-0PUSH ACCPUSH ACC;低位地址入栈低位地址入栈低位地址入栈低位地址入栈MOV A,R1MOV A,R1;恢复恢复恢复恢复A A值值值值MOVC A,A+DPTRMOVC A,A+DPTR;取高位地址取高位地址取高位地址取高位地址BRn 15-8BRn 15-8PUSH ACCPUSH ACC;高位地址入栈高位地址入栈高位地址入栈高位地址入栈RETRET;分支入口地址装入分支入口地址装入分支入口地址装入分支入口地址装入PCPCBRTAB:BRTAB:DW BR0DW BR0;分支程序入口地址表分支程序入口地址表分支程序入口地址表分支程序入口地址表,BRTAB,BRTAB、BRTAB+1BRTAB+1DW BR1DW BR1;BRTAB+2;BRTAB+2、BRTA+3BRTA+3DW BRnDW BRn;BRTAB+2n;BRTAB+2n、BRTAB+2n+1BRTAB+2n+1RETRETPCPC15158 8(SP),SP(SP)-1(SP),SP(SP)-1PCPC7 70 0(SP),SP(SP)-1(SP),SP(SP)-1循环结构循环结构n n初始化部分初始化部分初始化部分初始化部分n n对于循环次数计数器、地址指针赋初值对于循环次数计数器、地址指针赋初值对于循环次数计数器、地址指针赋初值对于循环次数计数器、地址指针赋初值,对于使用到,对于使用到,对于使用到,对于使用到的寄存器或者存储单元赋初值,的寄存器或者存储单元赋初值,的寄存器或者存储单元赋初值,的寄存器或者存储单元赋初值,为循环作准备。为循环作准备。为循环作准备。为循环作准备。n n循环体部分循环体部分循环体部分循环体部分n n为下一次循环创造条件:为下一次循环创造条件:为下一次循环创造条件:为下一次循环创造条件:修改循环次数计数器、地址修改循环次数计数器、地址修改循环次数计数器、地址修改循环次数计数器、地址指针,避免死循环。指针,避免死循环。指针,避免死循环。指针,避免死循环。n n循环的判断与控制:判断循环的判断与控制:判断循环的判断与控制:判断循环的判断与控制:判断循环次数计数器循环次数计数器循环次数计数器循环次数计数器,或者检查,或者检查,或者检查,或者检查判断循环条件判断循环条件判断循环条件判断循环条件。n n可以直接由循环体内转到循环体外或外层循环;不能可以直接由循环体内转到循环体外或外层循环;不能可以直接由循环体内转到循环体外或外层循环;不能可以直接由循环体内转到循环体外或外层循环;不能从循环体外直接跳转到循环体内,只能从外层向内层从循环体外直接跳转到循环体内,只能从外层向内层从循环体外直接跳转到循环体内,只能从外层向内层从循环体外直接跳转到循环体内,只能从外层向内层一层层进入一层层进入一层层进入一层层进入。n n循环结束处理:循环结束处理:循环结束处理:循环结束处理:n n结果保存等。结果保存等。结果保存等。结果保存等。26262626【例例】单循环。编程实现把外部单循环。编程实现把外部RAMRAM中从中从8000H8000H开始的开始的100100个字节数据传送到个字节数据传送到8100H8100H开始开始的单元中。的单元中。MOV R7,#100MOV R7,#100MOV DPL,#00HMOV DPL,#00HLOOP:LOOP:MOV DPH,#80HMOV DPH,#80HMOVX A,DPTRMOVX A,DPTRMOV DPH,#81HMOV DPH,#81HMOVX DPTR,AMOVX DPTR,AINC DPLINC DPLDJNZ R7,LOOPDJNZ R7,LOOPMOV R0,#00MOV R0,#00LOOP:LOOP:MOV P2,#80HMOV P2,#80HMOVX A,R0MOVX A,R0MOV P2,#81HMOV P2,#81HMOVX R0,AMOVX R0,AINC R0INC R0CJNE R0,#100,LOOPCJNE R0,#100,LOOP或或27272727【例例例例】由循环内部跳出循环。把长度为由循环内部跳出循环。把长度为由循环内部跳出循环。把长度为由循环内部跳出循环。把长度为10H10H10H10H的字符串从内部的字符串从内部的字符串从内部的字符串从内部RAMRAMRAMRAM缓冲缓冲缓冲缓冲区区区区inbufinbufinbufinbuf向位于外部向位于外部向位于外部向位于外部RAMRAMRAMRAM的输出缓冲区的输出缓冲区的输出缓冲区的输出缓冲区outbufoutbufoutbufoutbuf传送,一直进行遇到回传送,一直进行遇到回传送,一直进行遇到回传送,一直进行遇到回车符车符车符车符CRCRCRCR或整个字符串传送完毕。或整个字符串传送完毕。或整个字符串传送完毕。或整个字符串传送完毕。START:START:MOV R7,#10H MOV R7,#10H MOV R0,#inbufMOV R0,#inbufMOV DPTR,#outbufMOV DPTR,#outbufLOOP:LOOP:MOV A,R0MOV A,R0CJNE A,#0D0H,CONTINUECJNE A,#0D0H,CONTINUESJMP FINISHSJMP FINISHCONTINUE:CONTINUE:MOVX DPTR,AMOVX DPTR,AINC R0INC R0INC DPTRINC DPTRDJNZ R7,LOOPDJNZ R7,LOOPFINISH:FINISH:SJMP$SJMP$ENDEND28282828子程序子程序n n在主程序中调用子程序在主程序中调用子程序n nLCALL/ACALL LCALL/ACALL LCALL/ACALL LCALL/ACALL 标号标号标号标号;调用子程序时,断点入栈保调用子程序时,断点入栈保调用子程序时,断点入栈保调用子程序时,断点入栈保存存存存n n由子程序返回主程序由子程序返回主程序n nRET;RET;RET;RET;子程序返回时,断点出栈从而回到主程序。子程序返回时,断点出栈从而回到主程序。子程序返回时,断点出栈从而回到主程序。子程序返回时,断点出栈从而回到主程序。n n子程序中,视情况进行现场保护和现场恢复子程序中,视情况进行现场保护和现场恢复n n1 1 1 1、使用堆栈:、使用堆栈:、使用堆栈:、使用堆栈:PUSH/POPPUSH/POPPUSH/POPPUSH/POPn n2 2 2 2、暂存到其它存储单元中,最终恢复即可、暂存到其它存储单元中,最终恢复即可、暂存到其它存储单元中,最终恢复即可、暂存到其它存储单元中,最终恢复即可29292929调用延时子程序调用延时子程序DELAYDELAY。n n主程序:主程序:主程序:主程序:n n子程序:子程序:子程序:子程序:n n该子程序根本该子程序根本该子程序根本该子程序根本不需要主程序提供入口参数不需要主程序提供入口参数不需要主程序提供入口参数不需要主程序提供入口参数,从进入子程序开,从进入子程序开,从进入子程序开,从进入子程序开始,到子程序返回,这个过程花费始,到子程序返回,这个过程花费始,到子程序返回,这个过程花费始,到子程序返回,这个过程花费CPUCPUCPUCPU一定的时长。一定的时长。一定的时长。一定的时长。n n循环体只能执行有限次,避免循环体只能执行有限次,避免循环体只能执行有限次,避免循环体只能执行有限次,避免“死循环死循环死循环死循环”。DELAY:DELAY:DELAY:DELAY:PUSH 06HPUSH 06HPUSH 06HPUSH 06HPUSH 07HPUSH 07HPUSH 07HPUSH 07HMOV R7,#100MOV R7,#100MOV R7,#100MOV R7,#100DLY0:DLY0:DLY0:DLY0:MOV R6,#98MOV R6,#98MOV R6,#98MOV R6,#98NOPNOPNOPNOPDLY1:DLY1:DLY1:DLY1:DJNZ R6,DLY1DJNZ R6,DLY1DJNZ R6,DLY1DJNZ R6,DLY1DJNZ R7,DLY0DJNZ R7,DLY0DJNZ R7,DLY0DJNZ R7,DLY0POP 07HPOP 07HPOP 07HPOP 07HPOP 06HPOP 06HPOP 06HPOP 06HRETRETRETRETLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAY3030303080C51单片机汇编语言程序设计举例n n定时程序定时程序n n查表程序查表程序n n求平方求平方n n极值查找程序极值查找程序n n查找关键字查找关键字n n扩展扩展n n阶乘计算阶乘计算n n压缩和解压程序压缩和解压程序n n算术运算:加、减、乘、除算术运算:加、减、乘、除n n数据排序数据排序n n数制与编码转换程序数制与编码转换程序n nLEDLED的简单控制的简单控制n nKEY+LEDKEY+LED的简单控制的简单控制31313131单循环定时程序单循环定时程序DELAY:DELAY:MOV R5,#TIMEMOV R5,#TIME;1;1LOOP:LOOP:NOPNOP;1;1NOPNOP;1;1DJNZ R5,LOOPDJNZ R5,LOOP;2;2RETRET;2;21+(1+1+2)*R5+2*1+(1+1+2)*R5+2*1+(1+1+2)*R5+2*1+(1+1+2)*R5+2*机器周期机器周期机器周期机器周期12M12M12M12M 机器周期机器周期机器周期机器周期=1us=1us=1us=1us定时时长为:定时时长为:定时时长为:定时时长为:32323232如何调整定时时长?如何调整定时时长?如何调整定时时长?如何调整定时时长?较长时间的定时程序较长时间的定时程序DELAY:DELAY:MOV R5,#TIME1MOV R5,#TIME1;1;1LOOP2:LOOP2:MOV R4,#TIME2MOV R4,#TIME2;1;1LOOP1:LOOP1:NOPNOP;1;1NOPNOP;1;1DJNZ R4,LOOP1DJNZ R4,LOOP1;2;2DJNZ R5,LOOP2DJNZ R5,LOOP2;2;2RETRET;2;21+1+(1+1+2)*R4+2*R5+2*1+1+(1+1+2)*R4+2*R5+2*1+1+(1+1+2)*R4+2*R5+2*1+1+(1+1+2)*R4+2*R5+2*机器周期机器周期机器周期机器周期33333333通过一个基本延时程序产生不同的定时通过一个基本延时程序产生不同的定时MOV R0,#05HMOV R0,#05H;5ms;5msLOOP1:LOOP1:LCALL DELAYLCALL DELAY;1ms;1msDJNZ R0,LOOP1DJNZ R0,LOOP1MOV R0,#OAHMOV

    注意事项

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

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




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

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

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

    收起
    展开