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

    【单片机应用课件】6.MCS-51 汇编语言程序设计.ppt

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

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

    【单片机应用课件】6.MCS-51 汇编语言程序设计.ppt

    第第章章汇汇编编语语言言程程序序设设计计 本章内容本章内容概述概述分支程序分支程序循环程序循环程序简单程序简单程序查表程序查表程序子程序子程序应用举例应用举例程序设计概述设计语言v最早人们只能用最早人们只能用机器语言机器语言(二进制)编写程序;(二进制)编写程序;v为了方便记忆,人们开始用助记符形式的汇编语言编写程为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为序,称为低级语言低级语言。然后再用汇编系统将其翻译成机器。然后再用汇编系统将其翻译成机器语言,该过程称为语言,该过程称为汇编汇编;v为了用更接近人的语言编写程序,程序设计师们发明了为了用更接近人的语言编写程序,程序设计师们发明了高高级语言级语言,如:,如:BASIC、FORTRAN、PASCAL、v C、JAVA 然后再用编译系统将其翻译成机器语言,该过程称为然后再用编译系统将其翻译成机器语言,该过程称为编编译译;v机器只能识别机器语言。所以必须用编译系统将高级语言机器只能识别机器语言。所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将用汇编语编写的源程序编译成机器语言,用汇编系统将用汇编语言编写的源程序汇编成机器语言;言编写的源程序汇编成机器语言;v由低级或高级语言构成的程序称为由低级或高级语言构成的程序称为源程序源程序,由机器语言构,由机器语言构成的程序称作成的程序称作目标程序目标程序;源程序 目标程序 低级语言机器语言汇编高级语言机器语言编译程序设计实例引入v实例实例假设一个班有假设一个班有50个人,个人,共有共有3门选修课:门选修课:计算机算法计算机算法服装服装CAD设计设计德语德语请找出:请找出:同时选了三门课的同学;同时选了三门课的同学;问题的解决问题的解决v第一步第一步 如何在计算机中表示选修某门课的所有如何在计算机中表示选修某门课的所有同学同学5122325225392939412252939计算机算法计算机算法 服装服装CAD设计设计德语德语选修这门人数选修这门人数学生的学号学生的学号这个过程实际上是设计数据结构的问题这个过程实际上是设计数据结构的问题这个过程实际上是设计数据结构的问题这个过程实际上是设计数据结构的问题问题的解决问题的解决v第二步第二步 设计思路:找出同时选了三门课的同学设计思路:找出同时选了三门课的同学这个过程实际上是设计算法的过程,既构建模型。这个过程实际上是设计算法的过程,既构建模型。这个过程实际上是设计算法的过程,既构建模型。这个过程实际上是设计算法的过程,既构建模型。计算机算法计算机算法CAD设计设计德语德语重复该过重复该过程程第第三三步步:设设计计流流程程找出第一个学生找出第一个学生他选了德语吗?他选了德语吗?他选了他选了CADCAD吗?吗?记录要找的人记录要找的人还有学生吗?还有学生吗?下一个学生下一个学生N NN NY YN NY YY Y结束结束他选计算机吗?他选计算机吗?N NY Y几点启示几点启示v整体构思;整体构思;v构建整体流程框图;构建整体流程框图;v结构合理,流程清晰,简单明了;结构合理,流程清晰,简单明了;v局部模块化;局部模块化;为什么要用流程图?为什么要用流程图?符合人进行逻辑思考的习惯符合人进行逻辑思考的习惯计算机从根本上来说,没有任何逻辑计算机从根本上来说,没有任何逻辑性,性,所以,你必须告诉它,先做什么,所以,你必须告诉它,先做什么,后做什么,遇到什么情况又该做什么,后做什么,遇到什么情况又该做什么,等等等等流程图设计本身是一个逐步求精的过流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器程,最终将任务划分为若干能由机器指令实现的小模块指令实现的小模块顺序程序设计顺序程序设计 例例 1 1 两个无符号双字节数相加。两个无符号双字节数相加。设设被被加加数数存存放放于于内内部部RAMRAM的的4040H H(高高位位字字节节),4141H H(低低位位字字节节),加加数数存存放放于于5050H H(高高位位字字节节),5151H H(低位字节)低位字节),和数存入和数存入 40 40H H和和4141H H单元中。单元中。程序如下:START:CLR C ;将将Cy清零清零 MOV R0,41H ;将被加数地址送数据指针将被加数地址送数据指针R0 MOV R1,51H ;将加数地址送数据指针将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入被加数低字节的内容送入AADD A,R1 ;两个低字节相加两个低字节相加MOV R0,A ;低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节指向被加数高位字节 DEC R1 ;指向加数高位字节指向加数高位字节 MOV A,R0 ;被加数高位字节送入被加数高位字节送入AADDC A,R1 ;两个高位字节带两个高位字节带Cy相加相加 MOV R0,A ;高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 例例 2 将两个半字节数合并成一个一字节数。将两个半字节数合并成一个一字节数。设设内内部部RAM 40H#,41H单单元元中中分分别别存存放放着着 8 位位二二进进制制数数,要要求求取取出出两两个个单单元元中中的的低低半半字字节节,并并成成一一个个字字节节后后,存存入入 50H单元中。单元中。程序如下程序如下:START:MOV R1,40H ;设置设置R1为数据指针为数据指针MOV A,R1 ;取出第一个单元中的内容取出第一个单元中的内容ANL A,0FH ;取第一个数的低半字节取第一个数的低半字节SWAP A ;移至高半字节移至高半字节INC R1;修改数据指针修改数据指针XCH A,R1 ;取第二个单元中的内容取第二个单元中的内容ANL A,0FH ;取第二个数的低半字节取第二个数的低半字节ORL A,R1 ;拼字拼字MOV 50H,A;存放结果存放结果RET 1.分支程序设计vv结构特点结构特点:不一定按指令的先后顺序依次运行程序,程序的流向有两个或两个以上分支,根据指定条件选择程序的流向。P3.4=0?点亮所有二极管N二极管交叉点亮Y2.分支程序的典型实例v实例:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。X+1,X0Y=0,X=01,X0v题意:根据X的不同,程序编写时有三个出口,即有三个分支!想一想:程序怎么编写?分支程序实例-三分支程序开始XAA=1A=A+1存结果结束YYNN程序框图:A0?A=0?分支程序实例-三分支程序源程序如下:ORG2000HMOVA,30HJZLP1;X=0,转LP1处理JNBACC.7,LP2;X0,转LP2处理MOVA,#0FFH;X0,则Y=1SJMPLP1LP2:ADDA,#01;X0,Y=X+1LP1:MOV31H,A;存结果SJMP$;循环等待,$表示转至本地址,此方法适用于一字节的偏移量最高位为符号位。例4.3 设内部RAM20H单元和30H 单元中分别存放了两个8位的无符号数 X、Y,若XY 则让P1.0管脚连接的LED亮;若XY,点亮P1.1X=Y,点亮P1.0XY?NY例4.4 程序清单 X DATA 20H Y DATA 30H;伪指令伪指令 ORG 0000H MOV A,X XRL A,Y ;X,Y进行异或进行异或 JB ACC.7,NEXT1 ;二者符号不同,跳转到二者符号不同,跳转到NEXT1 MOV A,X ;符号相同符号相同 CJNE A,Y,NEQUAL;X Y,跳转到跳转到NEQUAL CLR P1.0 ;X=Y,点亮点亮P1.0 SJMP FINISHNEQUAL:JC XXY ;X Y,转移到转移到XDYNEXT1:MOV A,X JNB ACC.7,XDY ;判断判断X的正、负,正则转移到的正、负,正则转移到XDYXXY:CLR P1.2 ;X Y,点亮点亮P1.1FINISH:SJMP$END3.散转程序设计v散转程序是指通过修改某个参数后,程序可以有三个以上的流向,多用于键盘程序。v常用的指令是JMP A+DPTR,该指令是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加,形成地址,装入程序计数器PC,形成散转的目的地址。DPTR+APCA中内容为8位无符号数16位地址数程序清单如下:JUMP1:MOVDPTR,JPTAB1;跳转表首送数据指针MOVA,R7ADDA,R7;R72A(修正变址值)JNCNOAD;判有否进位INCDPH;有进位则加到高字节地址NOAD:JMPA+DPTR;转向形成的散转地址人口JPTAB1:AJMPOPR0;直接转移地址表AJMPOPR1.AJMPOPRn例:根据R7的内容,转向各自对应的操作程序(R7=0,转入OPR0;R7=1,转入OPR1R7=n,转入OPRn)4.循环程序设计v结构特点:利用转移指令反复运行需要多次重复的程序结构特点:利用转移指令反复运行需要多次重复的程序段。段。v循环程序的组成:循环程序的组成:1.初始化部分初始化部分(设定循环次数等设定循环次数等)。2.循环体循环体(重复执行的部分重复执行的部分,用于完成实际操作用于完成实际操作)3.循环控制循环控制(不断修改和判别循环变量不断修改和判别循环变量,直至结束直至结束)。4.循环结束处理。循环结束处理。循循环环程程序序设设计计延时程序中延时时间的设定:延时程序中延时时间的设定:源程序:源程序:指令周期指令周期DELAY:MOV R3,#(X )H 2个个T机器机器 DEL2:MOV R4,#(Y )H 2个个T机器机器 DEL1:NOP 1个个T机器机器 NOP 1个个T机器机器 DJNZ R4,DEL1 2 个个T机器机器 DJNZ R3,DEL2 2个个T机器机器 RET指令周期、机器周期指令周期、机器周期T机器机器与时钟周期与时钟周期T时钟时钟的关系:的关系:T机器机器=12T时钟时钟=12 1/fosc=1s (假设晶振频率假设晶振频率fosc为为12M)延时时间的简化计算结果:延时时间的简化计算结果:(1+1+2)X Y 延时时间怎样计算?若想延时若想延时100ms,只需修改计数初始值,即只需修改计数初始值,即(1+1+2)125 200s=100ms#200#125循循环环程程序序设设计计1 1S S延时程序延时程序源程序:源程序:DELAY:MOV R2,#10 DEL3:MOV R3,#200DEL2:MOV R4,#125DEL1:NOP NOP DJNZ R4,DEL1 DJNZ R3,DEL2 DJNZ R2,DEL3 RET1.有如下程序段:MOV R0,#30H SETB C CLR A ADDC A,#00H MOV R0,A 执行结果是()。A.(30H)=00HB.(30H)=01HC.(00H)=00HD.(00H)=01H2.汇编语言表示的指令格式中,标号与操作码之间用()分开。A.冒号B.分号C.逗号D.井号3.8051汇编指令格式中,地址和数据的区别符号为()。A.冒号B.分号C.逗号D.井号4.散转指令是单片机指令系统中专为散转操作提供的无条件转移指令,指令格式如下:A.JMP A+DPTRB.LJMP 标号C.AJMP 标号D.SJMP 标号5.MCS-51系列单片机存储器结构的特点之一是存在着四种物理存储空间,即片内RAM、片外RAM、片内ROM和片外ROM,不同的物理存储空间之间的数据传送一般以()作为数据传输的中心。A.累加器AB.PSWC.PCD.RAM 6.分析下面程序段,累加器 A 中的内容为()。ORG 0000H MOV 30H,#45H MOV R0,#30H MOV A,#30H XCHD A,R0 SJMP$END A.45H B.35H C.30HD.34H7.分析下面程序段,累加器 A 中的内容为()ORG 0000H MOV 30H,#45H MOV R0,#30H MOV A,R0 ANL A,#0F0H SWAP A ORL A,#30H SJMP$END A.45HB.35HC.30HD.34H 8.分析下面程序的功能。X DATA 30H Y DATA 32H MOV A,X JNB ACC.7,DAYU CPL A ADD A,#01H DAYU:MOV Y,A SJMP$END A.比较X与Y大小B.求绝对值C.X与Y相加D.X与Y相乘循循环环程程序序设设计计例例4.6:编程实现:编程实现P1口连接的口连接的8个个LED显示方式如显示方式如下:从下:从P1.0到到P1.7的顺序,依次点亮其连接的顺序,依次点亮其连接的的LED。设循环次数设循环次数设循环次数设循环次数显示模式字送显示模式字送显示模式字送显示模式字送P1P1口口口口开始开始开始开始显示模式字左移显示模式字左移显示模式字左移显示模式字左移1 1位位位位设循环初值设循环初值设循环初值设循环初值次数1 10 0Y YN N ORG 0000HSTART:MOV R2,#08H ;设置循环次数设置循环次数 MOV A,#0FEH;送显示模式字送显示模式字NEXT:MOV P1,A ;点亮二极管点亮二极管 ACALL DELAY RL A ;左移一位,改变显示模式字左移一位,改变显示模式字 DJNZ R2,NEXT ;循环次数减循环次数减1,不为零,继续点亮,不为零,继续点亮 SJMP START ;下面一个二极管下面一个二极管 DELAY:MOV R3,#0FFH ;延时子程序开始延时子程序开始DEL2:MOV R4,#0FFHDEL1:NOP DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 查表程序v表格是事先存放在ROM中的,一般为一串有序的常数,例如平方表、字型码表等。v表格可通过伪指令DB来确定。v通过查表指令MOVC A,A+DPTR MOVC A,A+PC来实现。在在LED显示和键盘处理程序中将会用到。显示和键盘处理程序中将会用到。P152P152 MOVMOVDPTR,#BSDPTR,#BSRLRLA AMOVMOVR2,AR2,AMOVCMOVCA,A+DPTRA,A+DPTRPUSHPUSHA AINCINCA AMOVCMOVCA,A+DPTRA,A+DPTRMOVMOVDPH,ADPH,APOPPOPDPLDPLCLRCLRA AJMPJMPA+DPTRA+DPTRDBDBRK0LRK0LDBDBRKOHRKOHDBDBRK1LRK1LDBDBRK1H RK1H BS:BS:子程序设计v在实际问题中,常常会遇到在一个程序中多次用到相同的运算或操作,若每遇到这些运算或操作,都从头编起,将使程序繁琐、浪费内存。因此在实际中,经常把这种多次使用的程序段,按一定结构编好,存放在存储器中,当需要时,可以调用这些独立的程序段。通常将这种可以被调用的程序段称为子程序子程序。主要内容:主要内容:1.1.主程序与主程序与子程序的关系子程序的关系 2.2.子程序嵌套子程序嵌套 3.3.子程序的调用与返回子程序的调用与返回主程序与子程序的关系子程序SUB主程序MAIN返回 LCALLSUB调用子程序子程序入口地址RET子程序嵌套子程序嵌套是指在子程序执行过程中,还可以调用另一个子程序。子程序SUB1主程序MAINLCALLSUB1RET子程序SUB2RETLCALLSUB2子程序的调用与返回问题:问题:子程序调用、返回到主程序中的正确位置,并接着执行主程序中的后续指令呢?为了解决这个问题,我们采用了堆栈技术。子程序SUB1主程序MAINRET子程序SUB2RET20102013211021132100220020132013PC21131321堆栈指针SP堆栈LCALL SUB1LCALL SUB2子程序设计注意事项(1)要给每个子程序起一个名字,也就是入口地址入口地址的代号。(2)要能正确地传递参数。即首先要有入口条件入口条件,说明进入子程序时,它所要处理的数据放在何处(如:是放在A中还是放在某个工作寄存器中等)。另外,要有出口条件出口条件,即处理的结果存放在何处。(3)注意保护现场和恢复现场。在子程序使用累加器、工作寄存器等资源时,要先将其原来的内容保存起来,即保护现场保护现场。当子程序执行完毕,在返回主程序之前,要将这些内容再取出,送还到累加器、工作寄存器等原单元中,这一过程称为恢复现场恢复现场。程序名程序名 :查找最大值:查找最大值功能功能 :查找内部:查找内部RAMRAM中无符号数据块的最大值中无符号数据块的最大值入口参数:入口参数:R1R1指向数据块的首地址,数据块长度存放在工作指向数据块的首地址,数据块长度存放在工作 寄存器寄存器R2R2中中出口参数:最大值存放在累加器出口参数:最大值存放在累加器A A中中占用资源:占用资源:R1,R2,A,PSWR1,R2,A,PSWMAX:MAX:PUSH PSWPUSH PSWCLR CLR A A;清清A A作为初始最大值作为初始最大值LP:LP:CLR CLR C C;清进位位清进位位SUBB SUBB A,R1A,R1;最大值减去数据块中的数最大值减去数据块中的数JNCJNCNEXTNEXT;小于最大值,继续小于最大值,继续MOVMOVA,R1A,R1 ;大于最大值,则用此值作为最大值大于最大值,则用此值作为最大值SJMPSJMPNEXT1NEXT1NEXT:NEXT:ADDADDA,R1A,R1;恢复原最大值恢复原最大值NEXT1:INCNEXT1:INCR1R1;修改地址指针修改地址指针DJNZDJNZR2,LPR2,LPPOP POP PSWPSWRETRET1.MCS-51单片机的PSEN引脚是_选通信号外部程序存储器 2.寻址方式:说明下列指令中源操作数采用的寻址方式。MOVR5,R7MOVA,55HMOVA,55HJMPA+DPTRMOVA,R0MOVXA,R0 寄存器寻址方式直接寻址方式立即寻址方式变址寻址方式间接寻址方式间接寻址方式编程3.请将片外RAM20H-25单元清零MOVR0,#20HMOVR7,#06HCLRALOOP:MOVXR0,AINCR0DJNZR7,LOOP4.请将ROM3000H单元内容送R7MOVDPTR,#3000HCLRAMOVCA,A+DPTRMOVR7,A5.已知(31H)21H,(32H)04,H执行下列指令组后(31H)_(32H)_PUSH31HPUSH32HPOP31HPOP32H 6在3500H为首址的片外RAM区中,有20个补码表示的数,欲编程序,把其中正数传到20H为首址的片内RAM区中,负数不传送,请补全下列程序。MOVDPTR,3500HMOVR2,14HMOVR0,20HLOOP:MOVXA,DPTRJBACC.7,COMMOVR0,AINCR0COM:INCDPTR DJNZR2,LOOPHERE:SJMPHERE 伪伪 指指 令令 伪指令是对汇编过程伪指令是对汇编过程 起控制作用,但本身起控制作用,但本身并没有对应的机器代码的指令。并没有对应的机器代码的指令。一、一、汇编起始指令汇编起始指令 ORG指令格式为指令格式为:ORG nn 该该指指令令的的作作用用是是指指明明后后面面的的程程序序或或数数据据块块的的起起始始地地址址,它它总总是是出出现现在在每每段段源源程程序序或或数数据据块块的的开开始始。式式中中,nn为为 16 位位地地址址,汇汇编编时时nn确确定定了了此此语语句句后后面面第第一一条条指指令令或或第第一一个个数数据据的的地地址址,此此后后的的源源程程序序或或数数据据块块就就依依次次连连续续存存放放在在以以后后的的地址内地址内,直到遇到另一个直到遇到另一个ORG指指令为止。令为止。例例:ORG 2000H MOV R0,2FH MOV R2,0FFH ORG伪伪指指令令说说明明其其后后面面程程序序的的目目标标代代码码在在存存储储器器中中存存放放的的起始地址是起始地址是2000H,即即 存储器地址存储器地址 目标程序目标程序 2000H 78 2F 2002H 7A FF 二、等值指令二、等值指令EQU指令格式指令格式:字符名称字符名称 EQU 数字或汇编符号数字或汇编符号 例例:PA8155 EQU 8001H;即给标号即给标号PA8155赋值为赋值为8001H。功能功能:使指令中的字符名称等价于给定的数字或汇编符号。使指令中的字符名称等价于给定的数字或汇编符号。使使用用等等值值指指令令可可给给程程序序的的编编制制、调调试试、修修改改带带来来方方便便,如如果果在在程程序序中中要要多多次次使使用用到到某某一一地地址址,由由EQU指指令令将将其其赋赋值值给给一一个个字字符符名名称称,一一旦旦需需要要对对其其进进行行变变动动,只只要要改改变变EQU命命令令后后面面的的数数字字即即可可,而而不不需需要要对对程程序序中中涉涉及及到到该该地地址址的的所所有有指指令令逐逐句句进进行行修修改改。但但要要注注意意,由由 EQU等等值值的的字字符符名名称称必必须须先先赋赋值值后后使用使用,且在同一个源程序中且在同一个源程序中,同一个标号只能赋值一次。同一个标号只能赋值一次。三、三、定义字节指令定义字节指令DB指令格式指令格式:标号标号:DB 8位二进制数表位二进制数表 功功能能:把把 8 位位二二进进制制数数表表依依次次存存入入从从标标号号开开始始的的连连续续的的存储单元中。存储单元中。格格式式中中,标标号号区区段段可可有有可可无无,DB指指令令之之后后的的 8 位位二二进进制制数数表表是是字字节节常常数数或或用用逗逗号号隔隔开开的的字字节节串串,也也可可以以是是用用引引号号括括起起来来的的ASCII码码字字符符串串 (一一个个 ASCII字字符符相相当当于于一一个个字字节节)。例例:ORG 1000HBUF1:DB 38H,7FH,80HBUF2:DB 45H,66H ORG伪伪指指令令指指定定了了标标号号BUF1的的地地址址为为1000H,而而DB伪伪指指令令是是将将其其后后的的二二进进制制数数表表38H,7FH,80H依依次次存存放放在在1000H,1001H,1002H 3 个个连连续续单单元元之之中中,BUF2也也是是一一个个标标号号,其其地地址址与与前前一一条条伪伪指指令令连连续续,即即1003H,1004H地址单元中依次存放地址单元中依次存放 45H,66H。四、四、定义字指令定义字指令DW指令格式指令格式:标号标号:DW 16 位数据表位数据表 该该指指令令的的功功能能与与DB相相似似,区区别别仅仅在在于于从从指指定定地地址址开开始始存存放放的的是是指指令令中中的的 16 位位数数据据,而而不不是是字字节节串串。每每个个 16 位位数数据据要要占占两两个个存存储储单单元元,高高高高8 8 位位位位先先先先存存存存,低低低低 8 8 位位位位后后后后存存存存,这这和和MCS-51指指令令中中的的16位位数数据据存存放放顺顺序序是一致的。是一致的。五、五、汇编结束指令汇编结束指令END指令格式指令格式:标号标号:END 地址或标号地址或标号 格格式式中中标标号号以以及及END后后面面的的地地址址或或标标号号可可有有可可无无。功功能能:提提供供汇汇编编结结束束标标志志。汇汇编编程程序序遇遇到到 END后后就就停停止止汇汇编编,对对 END以以后后的的语语句句不不予予处处理理,故故 END应应放在程序的结束处。放在程序的结束处。1.子程序的返回和中断响应过程中的中断返回都是通过改变 PC的内容实现的,而PC内容的改变是()完成的。A通过POP命令 B通过MOV 指令 C通过RET或RETI指令 D自动2.在MCS-51单片机中,当有压入或弹出堆栈操作时,SP的内容将随之增大或减小;程序计数器PC的内容将始终指示下一条将要执行指令的地址,所以只要改变PC的内容将改变程序的运行路径。SP的内容与PC的内容()。A都是8位地址 B都是16位地址 C位数相同 D位数不同3.单片机复位后,累加器A、PC、PSW的内容为()AA=FFH PC=00H PSW=FFHBA=00H PC=0000H PSW=00HCA=07H PC=0000H PSW=FFHDA=00H PC=00H PSW=00H 4堆栈指针SP的作用是()。A 指示堆栈的栈底 B 指示堆栈的栈顶 C 指示下一条将要执行指令的地址 D 指示中断返回的地址5下列指令中,不影响堆栈指针的指令是()。A RET B JB bit,relC LCALL addr16 D RETI6使用单片机开发系统调试程序时,对原程序进行汇编的目的是()。A 将源程序转换成目标程序 B 将目标程序转换成源程序C 将低级语言转换成高级语言 D 连续执行键7.定时/计数器的定时是指 ,定时/计数器的计数是指 。A对时间计数 B外部事件定时 C内部事件计数 D外部事件计数 E对内部时钟计数8CPU允许接受相应中断,当INTO申请中断时,程序计数器PC的内容被自动修改为()地址;当有定时器T1申请中断时,程序计数器 PC的内容被自动修改为()地址。A、0003H B、000BH C、0013H D、001BH E、0023H程序存储器程序存储器ROMROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH 9.在程序运行过程中执行PC=0200H的一条指令LCALL addr16,该调用子程序的返回指令是(),实施该调用指令时,压入堆栈保存的程序地址是()。A、RETI B、RET C、ENDD、2000H E、0102H F、0203H10当MCS-51单片机接有外部存储器,P2口可作为()。A数据输入口 B。数据的输出口 C准双向输入输出口 D输出高8位地址11.设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?MOV R0,#30H MOV A,R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV A,P1 MOV 40H,#20H MOV 30H,40H最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。将下面的程序段填写完整,以实现要求的功能。12.内部RAM中以51H单元为首地址,存放着6个字节的无符号数。统计其中0的个数,并存放在50H单元中。源程序如下:CONT0:MOVR1,#51H MOVR2,MOV50H,LOOP:MOVA,R1 NEXT INC50HNEXT:INC DJNZR2,RET将下面的程序段填写完整,以实现要求的功能。13.将内部RAM中首地址为30H的一个数据块传送到外部RAM首地址为3000H的区域,遇到传送的数据为零时停止。源程序如下:MI_O:MOVR1,MOVDPTR,#3000H LOOP:MOVA,JZ MOVXDPTR,AINC INC SJMPLOOPPRET:RET14片内RAM30H开始的单元中有10个二进制数,请编程求它们之和(和256)和存放在29H单元 ADDIO:MOV R0,30H MOV R7,#9 MOV A,R0 LOOP:INC R0 ADD A,R0 DJNZ R7,LOOP MOV 29H,A RET 15.编程题 请编制两字节(16位)无符号数减法程序。其中被减数的高位数据存放在单片机片内RAM的21H单元、低位数据存放在20H单元中,减数的高位数据存放在23H单元、低位数据存放在22H单元,差值的高位和低位数据分别存放到片外扩展RAM的3001H和3000H地址单元中,程序以RET指令结束(程序名和程序中要使用的标号可以自行定义)。SUIDATA:MOV DPTR,#3000HCLR CMOV A,20HSUBB A,22HMOVX DPTR,AMOV A,21HSUBB A,22HINC DPTRMOVX DPTR,ARET注意:程序编制中要先减低位,后减高位数据,由于是从地址单元中取被减数和减数,地址单元前面都不能加#号,而差值单元由于是在片外扩展的3000H和3001H地址单元,间址寄存器应为DPTR。

    注意事项

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

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




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

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

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

    收起
    展开