




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理及应用MCS-51单片机第七章汇编语言程序设计程序设计语言简介程序设计的步骤和方法转移指令和分支程序循环程序子程序及其调用程序设计举例机器语言计算机唯一能够识别和执行的语言汇编语言“符号语言”,用指令助记符代表机器语言指令高级语言面向算法、过程、对象,类似自然语言,可移植性好,须经解释或翻译后才能被执行程序设计语言简介汇编机器语言目标程序汇编语言源程序程序设计的步骤分析课题,确定算法和思路根据算法和思路画出流程图根据流程图编写程序上机调试,排除错误流程图图例起止框处理框判断框连线开始结束XX+1YY-1F>5?YN程序设计的方法结构化设计模块化设计开发方法自底向上开发先底层开发自顶向下开发先顶层开发混合方法汇编起始伪指令格式:ORG<起始地址>功能:指定汇编源程序编译成机器语言程序 的起始地址例如:ORG0000Hljmp0100HORG0100HStart:movA,#5Ahsjmp$END汇编结束伪指令格式:END[起始地址]功能:停止汇编示例:ORG0000Hljmp0100HORG0100HStart:movA,#5Ahsjmp$END movA,#0A5h定义字节伪指令格式:<标号:>DB<项或项表>功能:把项或项表的数值存入从标号开始的连续单元,其中项或项表可以是一个字节、数或以引号括起来的字符串。
ORG1000HDat:DB11h,22h,’A’,”BCD”END定义位伪指令格式:<符号>BIT<位地址>功能:定义位变量地址UBIT20H.0VBIT20H.1WBIT20H.2XBIT20H.3YBIT20H.4ZBIT20H.5QBIT20H.6赋值伪指令格式:<符号>EQU<变量值>功能:定义符号变量值
XEQU05HYEQU06H汇编语言格式指令格式:标号:助记符
参数,参数;注释伪指令格式:名字定义符参数,…,参数;注释转移指令和分支程序控制转移类指令无条件转移指令条件转移指令比较转移指令循环转移指令分支程序用cjne实现三分支用jmp@A+DPTR实现多分支无条件转移指令绝对无条件转移指令长转移指令短转移指令间接转移指令格式:ajmpaddr11;功能:无条件转向指令中提供的11位地址。
转移范围:2K,PC15~11不变例:ajmpStart绝对无条件转移指令a10a9a800001a7a6a0短转移指令格式:sjmprel;(PC)(PC)+2,(PC)(PC)+rel功能:相对转向指令,rel为一字节补码形式的相对偏移量.转移范围:-128~+127例:sjmpLoop
sjmp$间接转移指令(散转)格式:jmp@A+DPTR;(PC)(A)+(DPTR)功能:根据A与DPTR的内容转移,转移的目标地址可变.例:movDPTR,JMP_TBLjmp@A+DPTRJMP_TBL:ajmpLable1ajmpLable2..
条件转移指令判零转移指令判位变量转移指令判位变量并清零转移指令判布尔累加器C转移指令判位变量转移指令格式:jbbit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,
IF(bit)=1THEN(PC)(PC)+relELSEgo
on格式:jnbbit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,
IF(bit)=0THEN(PC)(PC)+relELSEgo
on判位变量并清零转移指令格式:jbcbit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,
IF(bit)=1THEN(PC)(PC)+reland(bit)=0ELSEgo
on判布尔累加器C转移指令格式:jcrel;rel:8位相对偏移量功能:(PC)(PC)+2,
IF(C)=1THEN(PC)(PC)+relELSEgo
on格式:jncrel;rel:8位相对偏移量功能:(PC)(PC)+2,
IF(C)=0THEN(PC)(PC)+relELSEgo
on循环转移指令格式:djnzRn,rel;rel:8位相对偏移量功能:(PC)(PC)+2,(Rn)(Rn)-1
IF(Rn)0THEN(PC)(PC)+relELSEgo
on格式:djnzdirect,rel;rel:8位相对偏移量功能:(PC)(PC)+3,
IF(direct)0THEN(PC)(PC)+relELSEgo
on用cjne实现三分支
cjneR0,#0,MP1movR1,#0sjmpMP3MP1:movA,R0jnbACC.7,MP2movR1,#0FFhsjmpMP3MP2:movR1,#01hMP3:sjmp$y=开始结束y0y-1y+1x=0?x<0?YYNNR0xR1y用jmp@A+DPTR实现多分支KeyB5:movDPTR,#JMPTBLclrCsubbA,#0AhrlAJMP@A+DPTRJMPTBL:ajmpAAAajmpBBBajmpCCCajmpDDD循环程序循环程序结构单循环程序例1:多字节求和例2:内部数据区清零多重循环程序例3:50ms延时程序循环程序结构循环初始化:循环控制变量的初始化、数据变量的初始化循环工作部分:循环主体,重复执行的计算循环控制部分:循环变量的修改、终止控制例1:多字节求和ORG0000HSUM:movR3,#0movR4,#0movR0,#50HmovR2,#5Loop:movA,R4addA,@R0movA,R4incR0clrAaddcA,R3movR3,AdjnzR2,Loopsjmp$END例2:内部数据区清零
ORG0000HZero:movR0,#30HmovR7,#10movA,#00HLoop:mov@R0,AincR0djnzR7,Loopsjmp$END例3:50ms延时程序Delay:movR7,#200Del1:movR6,#123nopDel2:djnzR6,Del2djnzR7,Del1sjmp$;1us;1us;1us;2us;2us子程序及其调用子程序调用与返回指令子程序设计方法子程序的调用过程与子程序嵌套调用过程中的参数传递通过寄存器传递通过堆栈传递通过数据指针(DPTR)传递子程序调用与返回指令绝对调用指令acalladdr11;(PC)(PC)+2,(SP)(SP)+1((SP))(PC0~7),(SP)(SP)+1,((SP))(PC8~15),(PC0~10)addr11,(PC11~15)
不变lcalladdr16返回指令ret;(PC8~15)((SP)),(SP)(SP)-1(PC0~7)((SP)),(SP)(SP)-1举例:子程序调用与返回指令举例ORG0000HStart:movA,#0acallSub1movA,#0lcallSub2sjmpSub1:incAretSub2:decAretEND子程序设计方法格式:;子程序名;子程序功能:;入口参数:;出口参数:;占用资源:子程序名:...子程序的调用过程与子程序嵌套主程序要使用子程序时通过call指令子程序执行完后通过ret指令返回防止自然进入子程序和自然退出子程序子程序嵌套正在执行主程序CPU正在执行子程序SubACPU正在执行子程序SubB通过寄存器传递方法简单、参数有限例:
ORG0000HMain:movR0,#40hmovR7,#10HlcallZerosjmp$;子程序名:Zero;功能:对内部数据区清零;入口参数:R0内部数据区;R7内部数据区长度;出口参数:无;占用资源:A,R0,R7Zero:clrALoop:mov@R0,AincR0djnz,R7,Loopret通过堆栈传递ORG0000HMain:mov70H,#40hmov71H,#10Hpush70hpush71hlcallZerosjmp$;子程序名:Zero;功能:对内部数据区清零;入口参数:70内部数据区地址;71h内部数据区长度;出口参数:无;占用资源:A,R0,R7,70h,71hZero:popDPHpopDPLpop07h;R7pop00h;R0clrALoop:mov@R0,AincR0djnz,R7,LooppushDPLpushDPHret通过数据指针(DPTR)传递将待传递参数紧跟在调用指令之后
ORG0000HMain:nopacallPrintDB:”THISISANEXAMPLE”DB:0AH,0DH,00HNext:nopsjmp$ENDPrint:popDPHpopDPLPPP1:movA,#00hmovcA,@A+DPTRincDPTRjzPPPEndPPP2:movP1,AsjmpPPP1PPPEnd:jmp@A+DPTR程序设计举例算术运算程序•多字节加法•多字节BCD码减法逻辑运算程序
•数据的拼装•
ASCII码二进制查表程序
•以PC为指针•以DPTR为指针散转程序•转移指令表•地址偏移量表•转向地址表多字节加法2F5BA7C3H(43424140)H+14DF35B8H(53525150)H
ORG0000HJia:movR0,#40hmovR1,#50hmovR2,#4
clrCJia1:movA,@R1addcA,@R0mov@R0,AincR0incR1
djnzR2,Jia1movF0,Csjmp$END多字节BCD码减法99887766H(43424140)H-44556677H(53525150)H
ORG0000HJia:movR0,#40hmovR1,#50hmovR2,#4
clrCJia1:movA,#9AhsubbA,@R1addA,@R0mov@R0,A
incR0incR1
djnzR2,Jia1movF0,Csjmp$END数据的拼装x7x6x5x4x3x2x1x0(20H)y7y6y5y4y3y2y1y0(21H)y2y0y0x4x3x2x1x0(30H)
ORG0000HStart:mov30h,20hanl30h,#00011111bmovA,21hswapArlAanlA,#11100000borl30h,Asjmp$ENDASCII码二进制
ORG0000HAtoH:movA,#’A’clrCsubbA,#30hcjneA,#0Ah,NEQsjmpBIGNEQ:jcAENDBIG:subbA,#07hAEND:sjmp$END
ORG0000HHtoA:movA,#0BhaddA,#90hdaAaddcA,#40hdaAsjmp$END以PC为指针查表程序TB1:movA,R2addA,R2movR3,AaddA,#06HmovcA,@A+PCxchA,R3addA,#03HmovcA,@A+PCmovR4,Asjmp$TAB1:DW1520,3721,4264DW7850,3483,32657DW883,9943,1000DW4051,6785,8931DW4468,5871DW13284,27808END以DPTR为指针查表程序LTB2:movDPTR,#TAB2movA,R3clrCrlcAmovR3,AxchA,R2rlcAxchR2,AaddA,DPLmovDPL,AmovA,DPHaddcA,R2movDPH,AclrAmovcA,@A+DPTRmovR2,AclrAincDPTRmovcA,@A+DPTRmovR3,AretTAB2:DW......使用转移指令表的散转程序
ORG0000HmovR2,#2Main:movDPTR,#TAJ1movA,R2addA,R2jncNADDincDPTRNADD:jmp@A+DPTRTBJ1:ajmpPRG0ajmpPRG1ajmpPRG2ajmpPRG3sjmp$PRG0:movA,#0sjmpHaltPRG1:movA,#1sjmpHaltPRG2:movA,#2sjmpHaltPRG3:movA,#3Halt:sjmp$END使用地址偏移量表的散转程序JMP3:movR2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区慢病管理方法
- 2025年德育个人工作方案幼儿园演讲稿
- 护理学休克病人的急救护理
- 合同履行监督与评估指南
- 术后谵妄护理个案
- 保育员培训配合教育活动
- 神达电脑人力资源机构组织
- 滨州职业学院《功能高分子》2023-2024学年第二学期期末试卷
- 内蒙古鸿德文理学院《电视演播室》2023-2024学年第二学期期末试卷
- 安徽卫生健康职业学院《形势与政策Ⅲ》2023-2024学年第一学期期末试卷
- 2025陕西核工业工程勘察院有限公司招聘(21人)笔试参考题库附带答案详解
- 2025年山东、湖北部分重点中学高中毕业班第二次模拟考试数学试题含解析
- 2025-2030中国集装箱化和模块化数据中心行业市场发展趋势与前景展望战略分析研究报告
- 2025-2030中国防腐新材料行业市场深度调研及发展策略与投资前景预测研究报告
- 2025年超高功率大吨位电弧炉项目发展计划
- 2025年护工考试试题及答案
- 2024年四川省高等职业教育单独考试招生文化素质考试中职英语试卷
- 全国第9个近视防控月活动总结
- 人教A版必修第二册高一(下)数学6.3.2-6.3.3平面向量正交分解及坐标表示【课件】
- 2025至2030年中国快速换模系统数据监测研究报告
- 航空业劳动力安全保障措施
评论
0/150
提交评论