MCS51-5汇编程序设计._第1页
MCS51-5汇编程序设计._第2页
MCS51-5汇编程序设计._第3页
MCS51-5汇编程序设计._第4页
MCS51-5汇编程序设计._第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、80C51的汇编语言程序设计应用程序设计方法*程序编制的方法和技巧*源程序的编辑和汇编 基本程序结构 子程序及其调用*汇编语言,生成的目标程序占内存空间少、运 行速度快,具有效率高、实时性强M高级语言,对系统的功能描述与实现简单,程 序阅读.修改和移植方便,适合于编写复杂的 程序程序编制的方法和技巧*任务分析*明确任务:功能要求、技术指标 运行环境调研算法设计*将实际问题转化为计算机处理的程序算法*算法比较与优化(内存需求与运行速度)流程描述程序编制的方法和技巧开始或结束符号O工作任务符号程序流向符号开始初始化程序连接符号0程序流向符号循环扫描、处理程序编制的方法和技巧强化模块观念*程序模块(

2、主程序模块.各种子程序模块) 模块化优点:分块设计、便于阅读、调试方便:匚采用循环和子程序*使程序占用空间减少、结构清晰*循环初值和结束条件,避免“死机”现象*子程序的现场保护(注意栈平衡、寄存器内容)*汇编语言的语句格式标号:指令助记符操作数1,操作数2,操作数3,;注释标号(即符号地址)*非数字字符开头,后跟字母、数字、“? ” 等不能用已定义的保留字(指令助记符、伪指令等) 不能用已定义的保留字(指令助记符、伪指令等) *后跟英文冒号“广指令助记符,指令功能的英文缩写程序编制的方法和技巧操作数注释,英文分号“;”开头 数据:二进制(B)十进制3或省略0)1245十六进制(H),注意A一F

3、开头时要加“0” ASCII码,如符号:符号名、标号或“$”(PC的当前值) 表达式:由运算符和数据构成(见表41)I 7曲I4 、V 1XOR与、或、异或45H AND 0FH即05HV、 、=、 Vs =比较运算符MOVA,X8;若XX为真,则为MOV A,01H若X8为假,则为MOV A,OOH源程序的编辑和汇编汇编源文件.ASMFLELORB目标文件(浮动地址).OBJC源文件C库文件.LIB调试目标文件(绝对地址)无扩展名可烧写目标文件 HEX:川:、写入芯片阿映屈S仿真调试l!L0RGOOOOHLJMPMAIN0RG0040HMAIN:MOVR7, #16MOVRO,#60HMOV

4、A. #55HLOOP:MOVR0, AINCRODJNZR7, LOOPSJMP$END源程序的编辑和汇编源程序的编辑依据汇编语言规则 用好伪指令 符号不用中文SJMP $用于调试 以ASMx存盘*基本程序结构基本程序结构不影响标志寄存器PSW的状态 传送类指令有两大类 一般传送(MOV )特殊传送MOVCMOVXPUSH. POPXCH. XCHDSWAP顺序程序,无分支、无循环分支程序,单分支、双分支.多分支 循环程序子程序及其调用多分支程序:4根据R7的内容X (转 移序号)转向相应的 处理程序。设R7内容为04,对 应的处理程序入口地 址分别为PP0PP4+ 炖I 闰+.铲| I披罪

5、 I般宇I阪严I多分支程序START: MOV R7,#3;以转移序号3为例ACALL JPNUMAJMP STARTJP NUM: MOVMOVADDMOVnPTR,#TAB ;置分支入口地址表首址 A,R7调整偏移A,R7 ;乘2,R3,A;取地址高字节,暂存于R3Move A,A+DPTR取地hH氏字节;处理g序入口地址低8位送DPL ;处理程序入口地址高8位送DPHXCH A,R3 INC AMove A,A+DPTR MOV DPL,A MOV DPH.R3 CLR A JMP A+DPTR循环程序多分支程序TAB:DWDWDWDWDWPPO PPI PP2 PP3 PP4PPO:M

6、OVRETPP1:MOVRETPP2:MOVRETPP3:MOVRETPP4:MOVRET30H,#030H,#230H,#330H, #4循环程序;转移序号为0时置功能号“(T于3()H单元;转移序号为1时置功能号于30H单元;转移序号为2时置功能号“2于3()H单元;转移序号为3时芋置功能号“3于30H单元;转移序号为4时置功能号“4”于30日单元将内部RAM的30H至3FH单元初始化为OOHMAIN: MOVMOVMOVLOOP: MOVR0,#30H ;置初值 A,#00H ;R7,#16 ;R0,A ;循环处理INC RO ;DJNZ R7,LOOP ;循环修改,判结束 SJMP $

7、;结束处理将内部RAMM始地址为60H的数据串传送到外部RAM中起始地址为1000H的存储区域,直到发现 邓,字符停止传送循环程序MAIN:LOOPO:LOOP1:MOVMOVMOVCJNE SJMPR0,#60H;置初值DPTR,#1000HA,R0;取数据A,#24H,LOOP1 ;循环结束? DONE ;是;循环处理MOVX DPTR,A INC ROINC DPTR SJMP LOOPO;循环修改DONE: SJMP DONE;继续循环;结束处理*子程序及其调用完成通用功能、反复使用的程序设计成子程序。 使应用程序结构清晰紧凑,便于阅读和调试 执行要由其它程序来调用,执行完后要返回到

8、调用程序结构上仍然采用一般程序的3种结构调用时注意现场的保护和恢复;主程序与子程序间的参数传递现场保护与恢复PUSHPSWPUSHACCPUSHBMOVPSW, #10H POPBPOPACCPOPPSWRET恢复现场SUB1: 器组号);保护现场(含当前工作寄存切换当前工作寄存器组内含当前工作寄存器组切换参数传递-寄存器参数传递寄存器实现两个8位的十六进制无符号数求和的 子程序*利用累加器或寄存器(简单、快速,但参数个 数不多):利用存储器利用堆栈入口: (R3)二加数;出口:(R3)二和的高字节;(R4)我加数。(R4)=和的低字节。SADD:MOVA. R3;取加数(在R3中)CLRCA

9、DDA, R4;被加数(在R4中)加AJCPP1MOVR3. #00H;结果小于255时,高字节R3内容为00HSJMPPP2PPI:MOVR3. #01H;结果大于255时,高字节R3内容为0伯PP2:MOVR4. A;结果的低字节在R4中RET参数传递-存储器将内部RAM中两个4字节无符号整数相加, 和的高字节由R0指向。数据釆用大端模 式存储岀口: (R0)二和的高字节起始地址。入口: (R0)二加数低字节地址. (RD二被加数低字节地址。参数传递存储器NADD:MOVR7, #4;字节数4送计数器CLRCNADD1:MOVA, R0;利用指针,取加数低字节ADDCA. R1;利用指针,

10、被加数低宇节加AMOVR0. ADECRODECR1DJNZR7, NADD1INCRO;调整指针,指向出口RET参数传递堆栈将内部RAM中20H单元中的1个字节十六进 制数转换为2位ASCII码,存放在R0指示 的两个单元中入口:预转换数据(低半字节)在桟顶出口:转换结果(ASCII码)在桟顶参数传递堆栈ASCTABiDB DB;借用R1为堆栈指针HEASC:MOVRhSPDECR1DECR1XCHA, R1ANLA,#OFHADD 己节戲A, #2H sotMoveA, A+PCXCHA, R1RET参数传递堆栈;弹出栈顶结果于ACC中 ;存转换结果高字节;修改指针MAIN:MOVSWAPPUSHACALLPOPMOVINCPUSH 20H ACALL POP MOVSJMP;弹出栈顶结果于ACC中 ;存转换结果低字节M指向被转换数据 取被转换数据 取一位十六进制致 偏移调整,所加值为MOVC与DB间;查表字节指令

温馨提示

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

评论

0/150

提交评论