欢迎来到天天文库
浏览记录
ID:36875337
大小:535.00 KB
页数:99页
时间:2019-05-10
《C51单片微机的程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章80C51单片微机的程序设计南京邮电大学电气工程系OUTLINE4.1概述4.1.1汇编语言格式4.1.2伪指令语句4.280C51汇编语言程序设计4.2.1顺序结构程序设计4.2.2分支结构程序设计4.2.3循环结构程序设计4.2.4子程序设计4.2.5程序设计举例4.3本章小结4.1.1汇编语言格式计算机语言机器语言、汇编语言与高级语言程序与程序设计4.1概述⑴机器语言①助记符指令与机器指令一一对应用汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映计算机的实际运行情况,所以用汇编语言能编写出最优化的程序。
2、②汇编语言是“面向机器”的语言,编程比使用高级语言困难③能直接访问存储器、输入与输出接口及扩展的各种芯片(比如A/D、D/A等),也可直接处理中断,汇编语言能直接管理和控制硬件设备④通用性差⑵汇编语言特点汇编过程示意图80C51系列单片微机从1985年开始就有C语言编译器,简称C51。⑶高级语言⒉汇编语言①汇编语言语句的种类指令语句:汇编时产生1个目标代码,对应1种操作例如:MOVA,#0伪指令语句:为汇编语言服务的,在汇编时没有目标代码与之对应例如:ONEEQU1宏指令语句:用以代替汇编语言源程序中重复使用的程序段的1种语句,由
3、汇编程序在汇编时产生相应的目标代码②汇编语言语句的格式指令语句的格式:【标号(名字)】:助记符(操作码)【操作数(参数)】;【注释】伪指令语句的格式:名字定义符参数;注释各字段之间用1个空格或字段定界符分隔,常用的字段定界符有冒号“:”、逗号“,”和分号“;”。其中方括号括起来的是可选择部分。标号(名字)域:说明指令的地址;可以作为LJMP、AJMP、LCALL及ACALL等指令的操作数。在指令语句中,标号位于一个语句的开头位置,由字母和数符组成,字母打头,冒号“:”结束。标号中的字符个数一般不超过8个,若超过8个,则以前面的8个
4、为有效,后面字符不起作用。不能使用本汇编语言中已经定义了的符号作标号,比如指令助记符(如ADD)、伪指令(如END)一条语句可以有标号,也可以没有标号操作码域:是指令的助记符或定义符,用来表示指令的性质,规定这个指令语句的操作类型伪指令语句中的定义符规定这个指令语句的伪操作功能对于标号缺省的语句,操作码域作为一行的开始。但在书写时,应与上一行的操作码对齐操作数域:给出的是参与运算或进行其它操作的数据或这些数据的地址。操作数与操作码之间用空格“”分隔,若有两个操作数,这两个操作数之间必须用逗号“,”分开。对于常数:若采用十六进制数表
5、示,其末尾必须加“H”说明;若十六进制数以A、B、C、D、E、F开头,其前面必须添1个“0”进行引导说明。若采用二进制数表示,其末尾必须用“B”说明;若采用十进制数表示,可以不加后缀或加“D”说明例:把片外存储器2200H单元中的数送入片内70H单元中。标号域操作码域操作数域注释域BEGIN:MOVDPTR,#2200H;(DPTR)=2200HMOVR0,#70H;(R0)=70HMOVXA,@DPTR;(A)=((DPTR))MOV@R0,A;((R0))=(A)伪指令:为了便于编程和对汇编语言程序进行汇编,各种汇编程序都提供
6、一些特殊的指令由伪指令确定的操作称为伪操作。伪指令又称汇编程序控制译码指令。“伪”体现在汇编时不产生机器指令代码,不影响程序的执行,仅指明在汇编时执行一些特殊的操作4.1.2伪指令语句指令格式为:ORG<表达式>含义:向汇编程序说明,下述程序段的起始地址由表达式指明。表达式通常为16进制地址码。一般规定,在由ORG伪指令定位时,其地址应当由小到大,不能重叠。有效范围一直到下一条ORG伪指令出现为止跟在ORG伪指令后面的程序段或数据段是绝对地址还是浮动地址段依赖于ORG右边的表达式性质⒈ORG(ORiGIN)汇编起始地址伪指令ORG
7、1000HSTART:MOVA,#12H假定ORG右边的表达式是浮动程序段中定义的标号RELOCA,则ORGRELOCASUBROU:……表明SUBROU起始于RELOCA(它是相对地址)浮动地址的程序段。汇编结束伪指令一般有以下两种格式:主程序模块:<标号>END<表达式>子程序模块:<标号>END含义:通知汇编程序,该程序段汇编至此结束。END语句应设置在整个程序(包括伪指令在内)的后面。当源程序为主程序时,END伪指令中可有标号,这个标号应是主程序第一条指令的符号地址。若源程序为子程序,则在END伪指令中不需要带标号。⒉EN
8、D(ENDofassembly)汇编结束伪指令指令格式为:<标号>EQU<表达式>含义:把表达式赋值于标号,这里的标号和表达式是必不可少的。例如:LOOPEQU2002H是向汇编程序表明,标号LOOP的值为2002H。又如:LOOP1EQULOOP
此文档下载收益归作者所有