ImageVerifierCode 换一换
格式:PPT , 页数:43 ,大小:2.86MB ,
文档编号:6895197      下载积分:20 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-6895197.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(刘殿科)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(语言程序设计课件.ppt)为本站会员(刘殿科)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

语言程序设计课件.ppt

1、第四章 汇编语言程序设计提要程序设计概述汇编语言源程序的编辑和汇编汇编语言程序设计2020年年3月月25日日2第1节 程序设计概述1、程序设计语言简介2、汇编语言程序设计初步2020年年3月月25日日31、程序设计语言简介常用的编程语言是常用的编程语言是汇编语言汇编语言和和高级语言高级语言。1 1汇编语言汇编语言用英文字符来代替机器语言,这些英文字符被称为用英文字符来代替机器语言,这些英文字符被称为助记符汇助记符汇编语言:编语言:用助记符表示的指令。用助记符表示的指令。汇编语言源程序:汇编语言源程序:用汇编语言编写的程序。用汇编语言编写的程序。优点:优点:用汇编语言编写程序效率高,占用存储空间

2、小,运行用汇编语言编写程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序。速度快,能编写出最优化的程序。缺点:缺点:可读性差,离不开具体的硬件,是面向可读性差,离不开具体的硬件,是面向“硬件硬件”的语的语言通用性差。言通用性差。2020年年3月月25日日41、程序设计语言简介2 2高级语言高级语言不受具体不受具体“硬件硬件”的限制,的限制,优点:优点:通用性强,直观、易通用性强,直观、易懂、易学,可读性好。懂、易学,可读性好。目前多数的目前多数的51单片机用户单片机用户使用使用C语言(语言(C51)来进行程来进行程序设计,已公认为高级语言中高效简洁而又贴近序设计,已公认为高级语言中高

3、效简洁而又贴近51单片机单片机硬件的编程语言。硬件的编程语言。将将C语言向单片机上移植,始于语言向单片机上移植,始于20世纪世纪80年代的中后年代的中后期。期。汇编语言设计步骤(1)分析题意,明确要求(2)确定算法(3)画程序流程图(4)分配内存工作单元(5)编写源程序(6)程序优化(7)上机调试、修改和最后确定源程序4.2 汇编语言源程序的编辑和汇编伪指令源程序的编辑和汇编1、伪指令(1 1)指令语句)指令语句已在第已在第3 3章介绍。每一指令语句在汇编时都产生一个指令代码(机器代码章介绍。每一指令语句在汇编时都产生一个指令代码(机器代码),执行该指令代码对应着机器的一种操作。),执行该指令

4、代码对应着机器的一种操作。(2 2)伪指令语句)伪指令语句是控制汇编(翻译)过程的一些是控制汇编(翻译)过程的一些控制命令控制命令。在汇编时。在汇编时没有机器代码没有机器代码与之对与之对应。应。下面介绍伪指令语句。下面介绍伪指令语句。1、伪指令1ORG(ORiGin)汇编起始地址命令)汇编起始地址命令源程序的开始,用一条源程序的开始,用一条ORG伪指令规定伪指令规定程序的起始地程序的起始地址址。如果不用如果不用ORG,则汇编得到的目标程序,则汇编得到的目标程序将从将从0000H地址开始。例如:地址开始。例如:ORGSTART:MOV2000HA,#00H即规定标号即规定标号START代表地址为

5、代表地址为2000H开始。开始。在一源程序中,可多次用在一源程序中,可多次用ORG指令,规定不同的程序段的指令,规定不同的程序段的起始地址。但是,起始地址。但是,地址必须由小到大排列,且不能交叉、地址必须由小到大排列,且不能交叉、重叠。重叠。例如:例如:ORGORGORG现了交叉。ORGORGORG2500H2000H2500H3000H这种顺序是正确的。若按下面顺序的排列则是错误的,因为地址出2000H3000H1、伪指令2.2.END(END of Assembly)END(END of Assembly)汇编终止命令汇编终止命令源程序源程序结束标志结束标志,终止源程序的汇编工作。终止源程

6、序的汇编工作。整个源程序整个源程序中只能有一条中只能有一条ENDEND命令,且命令,且位于程序的最后位于程序的最后。如果。如果ENDEND出现出现在程序中间,其后的源程序,将不进行汇编处理。在程序中间,其后的源程序,将不进行汇编处理。1、伪指令3DB(Define Byte)定义数据字节命令)定义数据字节命令格式:格式:标号:标号:DB 8位字节数据表位字节数据表用于从(标号)指定的地址开始,在程序存储器连续单用于从(标号)指定的地址开始,在程序存储器连续单元中定义字节数据。例如:元中定义字节数据。例如:ORG 1000HDB-2,-4,100,30H,C ,A1、伪指令4、DW(Define

7、 Word)定义字数据命令)定义字数据命令该命令用于从指定的地址开始,在程序存储器的连该命令用于从指定的地址开始,在程序存储器的连续单元中定义续单元中定义16位的字数据。例如:位的字数据。例如:ORG 2000HDATA:DW 1246H,7BH,10汇编后(2000H)=12H(2002H)=00H(2004H)=00H(2001H)=46H(2003H)=7BH(2005H)=0AH;第1个字;第2个字;第3个字1、伪指令5DS(Define Storage)定义存储区命令)定义存储区命令从指定地址开始,保留指定数目的字节单元作为存储区从指定地址开始,保留指定数目的字节单元作为存储区,供程

8、序运行使用。,供程序运行使用。例如:例如:TABEL:DS10表示从表示从TABEL代表的地址开始,保留代表的地址开始,保留10个连续的地址个连续的地址单元。单元。又例如又例如:ORGDS2000H10 H表示从表示从2000H地址开始,保留地址开始,保留16个连续地址单元。个连续地址单元。2020年年3月月25日日141、伪指令6 6EQUEQU(EQUateEQUate)标号赋值命令)标号赋值命令用于用于给标号赋值给标号赋值。赋值后,标号值在整个程序有效。赋值后,标号值在整个程序有效。例如:例如:TESTTEST:EQU 2000HEQU 2000H表示表示TEST=2000HTEST=2

9、000H,汇编时,凡是遇到,汇编时,凡是遇到TESTTEST时,均以时,均以2000H2000H来代替。来代替。2020年年3月月25日日152、源程序的编辑和汇编1、源程序的编辑2、源程序的汇编2020年年3月月25日日164.3 汇编语言程序设计顺序结构分支结构循环结构子程序结构2020年年3月月25日日174.3.1 顺序结构例:两个无符号双字节数相加。设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入 40H和41H单元中。2020年年3月月25日日18程序如下:START:CLR C ;将Cy?MOV R0,4

10、1H ;将被加数地址送数据指针R0?MOV R1,51H ;将加数地址送数据指针R1AD1:MOV A,R0 ;被加数低字节的内容送入A?ADD A,R1 ;?MOV R0,A ;?DEC R0 ;?DEC R1 ;?MOV A,R0 ;被加数高位字节送入A?ADDC A,R1 ;两个高位字节带Cy?MOV R0,A ;2020年年3月月25日日194.3.2 分支程序设计(a)单分支流程单分支流程;2020年年3月月25日日(b)多分支流程多分支流程20例 设变量X存放在内部RAM 30H单元,函数值Y存入内部RAM 31单元。试编程,按照下式的要求给赋值。2020年年3月月25日日21开始

11、开始AXA=0YNA0NA=-1A=1Y存结果存结果结束结束2020年年3月月25日日22,;,:,:,2020年年3月月25日日234.3.3 循环程序设计2020年年3月月25日日24循环的组成循环程序一般由四个主要部分组成:(1)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。(2)处理部分:为反复执行的程序段,是循环程序的实体,也是循环程序的主体。(3)循环控制部分:这部分的作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止。(4)结束部分:这部分主要是对循环程序的结果进行分析、处理和存放。2020年年3月月25日日25例:编写

12、多字节无符号数加法程序设有两个多字节无符号数分别存放在内部RAM的DAT1和DAT2开始的区域中(低字节先存),字节个数放在R2中,求它们的和,并将结果存放在DAT1开始的区域中。2020年年3月月25日日26开始开始循环初始化循环初始化指向下一个被加数和加数指向下一个被加数和加数读取被加数读取被加数N全部相加完毕全部相加完毕两数相加两数相加Y处理高字节进位处理高字节进位传送部分和到目的单元传送部分和到目的单元结束结束2020年年3月月25日日27ORG 0400HMOV R0,#DAT1MOV R1,#DAT2CLR CLOOP:MOV A,R0ADDC A,R1MOV R0,AINC R0

13、INC R1DJNZ R2,LOOPCLR AADDC A,#0MOV R0,AEND2020年年3月月25日日28多重循环例例5 秒延时程序。延时程序与 MCS-51 执行指令的时间有关,如果使用 12 MHz晶振,一个机器周期为 1 s,计算出一条指令以至一个循环所需要的执行时间,给出相应的循环次数,便能达到延时的目的。5 秒延时程序如下:2020年年3月月25日日29?DELAY:MOV R5,50DEL0:?MOV R6,200#4990153 9980306?DEL1:DEL2:?MOV R7,248DJNZ R7,$;DEL2DJNZ R6,DEL1?DJNZ R5,DEL0RET

14、 2020年年3月月25日日304.3.4 子程序设计子程序的概念子程序的概念通常把那些基本操作功能编制为一个独立夫人程序段,这些就是可供不同程序或同一程序反复调用的子程序。在程序中需要执行这种操作的地方放置一条调用指令,当程序执行到调用指令,就转到子程序中完成规定的操作,并返回到原来的程序继 续执行下去。2020年年3月月25日日31子程序结构与设计注意事项子程序中必须有一条子程序返回指令(RET),其功能是当子程序执行完后能自动返回到主程序中去。注意事项:?(1)子程序名?(2)明确入口条件、出口条件?(3)注意保护现场和恢复现场2020年年3月月25日日32子程序的调用与返回调 用 子

15、程 序 的 指 令 有“ACALL”和“LCALL”,“LCALL”:16位入口地址“ACALL”:11位入口地址,另5位由PC提供执行调用指令时,先将程序地址指针 PC改变(“ACALL”加2,“LCALL”加 3),然后 PC值压入堆栈,用新的地址值代替。执行返回指令时,再将 PC值弹出。2020年年3月月25日日33子程序调用中,主程序应先把有关的参数存入约定的位置,子程序在执行时,可以从约定的位置取得参数,当子程序执行完,将得到的结果再存入约定的位置,返回主程序后,主程序可以从这些约定的位置上取得需要的结果,这就是参数的传递。子程序的调用涉及到堆栈,在主程序中必须要正确设置堆栈指针。子

16、程序嵌套是指在子程序执行过程中,还可以调用另一个子程序。2020年年3月月25日日34例4-13 用程序实现C=A*A+B*B。设A和B均小于10,A存在内部RAM31H单元,B存在内部RAM 32H,把C存入内部RAM 33H单元。解:本题中包含2个求平方值,把求平方设计为子程序。子程序名称:SQR功能:求小于10的数的平方(查表法)入口参数A,出口参数A2020年年3月月25日日35主程序:ORG 0800HMOV SP,#60HMOV A,31HLCALL SQRMOV R1,AMOV A,32HLCALL SQRADD A,R1MOV 33H,ASJMP$2020年年3月月25日日36

17、ORG 0900HSQR:ADD A,#01HMOVC A,A+PCRETTAB:DB 0,1,4,9,16DB 25,36,49,64,81END堆栈变化:画图说明2020年年3月月25日日37The End习题:4-6试编程将内部RAM 40H-60H单元内容传送到外部RAM以2000H为首地址的存储区中4-7在外部RAM首地址为DATA的存贮器中,有10个字节的数据,试编程将每个字节的最高位无条件置“1”4-8 编写程序将外部RAM 3000H开始的13个单元中的数据隔一个传送到内部RAM30H开始的区域4-9编程将外部RAM地址为1000H-1030H的数据块全部搬迁到内部RAM 30

18、H-60H中,并将原来数据全部清零。4-18设在外部RAM 2000H-2004H单元中,存放有5个压缩BCD码,试编程将它们转换成ASCII码,存放到以2005H为首地址的外部RAM中。4-21 根据图3-10,设计灯亮移位程序,要求8个发光二极管每次亮1个,点亮40ms。顺次循环右移点亮,循环不止。4-22 根据图3-10,设计亮灯程序,要求8个发光二极管间隔分成2组,每组4个,2组交叉点亮,变换时间为100ms,反复循环不止。2020年年3月月25日日39该单片机系统的晶振频率为该单片机系统的晶振频率为12MHz2020年年3月月25日日403-14 已知(A)=5Bh,(R1)=40H

19、,(40H)=C3H,(PSW)=81H,试写出各条指令单独执行结果,并说明程序状态字的状态。(1)XCH A,R1 (2)XCHA,40H(3)XCHA,R1(4)XCHDA,R1(5)SWAPA(6)ADDA,R1(7)ADD A,40H(8)ADDA,#40H(9)ADDC A,40H(10)SUBBA,40H(11)SUBB A,#40H3-18 编程完成下列操作(1)将外部RAM 1000H单元的所有位取反(2)将外部RAM 60H单元的高2位清零,低2位取反,其它位保持不变。2020年年3月月25日日413-24 判断下列指令的正误,并说明原因(1)CLRA (2)CLRE0H(3

20、)CLRACC(4)CLRACC.0(5)CPL A(7)CPLACC(6)CPL E0H(8)CPL ACC.02020年年3月月25日日423-28 如图3-11所示,这是由89C51构建的系统,外部连接了4个按键S1S4及4个发光二极管LED1LED4,P1口的高4位用于接收按键的输入状态,低4位用于驱动发光二极管。请结合图示,编写程序,完成以下要求:(1)若S1闭合,则发光二极管LED1点亮;若S2闭合,则LED2点亮。以此类推,即发光二极管实时反映按键状态。(2)用4个发光二极管实现对按键键值的BCD编码显示。若S1闭合,键值为1,编码0001,LED1点亮;若S2闭合,键值为2,编码为0010,LED2点亮;若S3闭合,键值为3,编码0011,LED1、LED2同时点亮;若S4闭合,键值为4,编码0100,LED3点亮。2020年年3月月25日日43

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|