《嵌入式系统概论-单片机基础》单片机之汇编语言1

上传人:宝路 文档编号:47858528 上传时间:2018-07-05 格式:PPT 页数:35 大小:411.64KB
返回 下载 相关 举报
《嵌入式系统概论-单片机基础》单片机之汇编语言1_第1页
第1页 / 共35页
《嵌入式系统概论-单片机基础》单片机之汇编语言1_第2页
第2页 / 共35页
《嵌入式系统概论-单片机基础》单片机之汇编语言1_第3页
第3页 / 共35页
《嵌入式系统概论-单片机基础》单片机之汇编语言1_第4页
第4页 / 共35页
《嵌入式系统概论-单片机基础》单片机之汇编语言1_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《《嵌入式系统概论-单片机基础》单片机之汇编语言1》由会员分享,可在线阅读,更多相关《《嵌入式系统概论-单片机基础》单片机之汇编语言1(35页珍藏版)》请在金锄头文库上搜索。

1、 嵌入式系统概论单片机基础汇编语言程序设计n教学目的:熟悉80C51系列单片机的汇 编语言,能够熟练编写汇编语言源程序 。n教学重点:常用汇编语言程序设计方法 。n教学难点: 分支程序、散转程序与子 程序的设计程序设计语言n机器语言n是一种用二进制代码“0”和“1”表示指令和数据最原始的程序设计 语言,是计算机唯一能够识别和执行的语言。计算机能够快速识别立 即执行。n汇编语言n是用助记符表示的面向机器程序设计语言,比机器语言直观、易懂、 易用且便于记忆。汇编语言在交由计算机执行之前,必须将其翻译成 机器语言,这一翻译过程称为“汇编”。n高级语言n是一种面向过程且独立于计算机硬件结构的通用计算机

2、语言。高级语 言同样需要翻译成机器语言,这一过程称为“编译”或“解释”,这 一编译或解释的程序称为“编译程序”或“解释程序”。高级语言功 能强,但用较多的存储空间,执行时间长,故不适用于高速实时控制 。汇编语言规范n汇编语言由四部分组成n 标号 :操作码 , 操作数 ;注释n标号段:以字母开头的1-8个字母和数字串组成,不能用助 记符、伪指令和寄存器名,标号只有在需要时才设置。n操作码段:是指令或伪指令助记符,用来表示指令的操作性 质,在指令中是必不可少的。n操作数段:给出参加运算(或其它操作)的数据或数据地址 。可使用二(B)、十(D)、十六(H)进制码.也可用标号 及表达式表示。n注释段:

3、是本指令执行目的和所起作用的说明。它不参加汇 编。n例 HY1:MOV A , #08H ; #08H A (表示将立即数08H 送到累加器A中)标号段标号段 : LABELLABEL操作码段操作码段 OPCODEOPCODE, ,操作数段操作数段 OPRANDOPRAND;注释段;注释段 COMMENTCOMMENT80C51汇编程序设计中常用的伪指令n在汇编程序对汇编语言编写的源程序进行汇编时,有一些控 制汇编用的特殊指令不属于指令系统,不产生机器代码,称 为“伪指令”。为编程提供方便。n1、ORG (Origin) 汇编起始指令 :用于规定目的程序在程序 存储器中存放的起始地址。格式如下

4、:n标号 操作码 操作数n ORG 表达式(exp) 注 exp必须是16位的地 址值n2、END 汇编结束指令:表示程序已结束。n3、EQU (Equate) 赋值指令:把操作数段中的地址或数据赋 值给标号,格式如下:n标号 操作码 操作数n字符名称 EQU 数或汇编符号n例 AA EQU R1 ;R1与AA等值n则 MOV A, AA 指令与 MOV A,R1指令结果相同。80C51汇编程序设计中常用的伪指令n4、DB (Define Byte)定义字节(* 8bit )指令:定义程序存储器中存放的若干个 字节的数值或ASCII码字符,每个数或字符之间用(,)隔开,表示ASCII码时需 用

5、()或(“”)表示8位常数表,格式如下: n操作码 操作数nDB 字节常数或ASCII字符n例 ORG 1000Hn DB 76H,73,C,B,OACH n则 (1000H)76H (1001H)49H (1002H)43H (1003H)42H ( 1004H)0ACH n5、DW (Define Word)定义字(* 16bit )指令:定义程序存储器中存放的若干个字 (16位:先存高8位(PC低地址),后存低8位(PC高地址)的数据或ASCII码字符 ,格式如下: n操作码 操作数n DW 字常数或ASCII字符n例 ORG 2200Hn DW 1246H,7BH,10n则(2200H

6、)12H (2201H)46H (2202H)00H (2203H)7BH(2204H) 00H (2205H)0AH80C51汇编程序设计中常用的伪指令n6、BIT 定义位地址指令:功能是把位地址赋予所规定的字符名称。格式如下:n 标号 操作码 操作数n 字符名称 BIT 位地址n例 ABC BIT P1.0 Q4 BIT P2.2n则汇编后,位地址P1.0,P1.2分别赋给变量ABC和Q4。n7、DATA 定义标号数值伪指令:将表达式指定的数据地址赋予规定的字符名称, 该指令与EQU指令相似,只是,可先使用后定义,放于程序开头、结尾均可。其功 能是给标号段中的标号赋予数值,格式如下:n 标

7、号 操作码 操作数n 字符名称 DATA 表达式n例 MN DATA 2000Hn汇编后,MN的值为2000Hn8、DS 定义存储空间指令 :其功能是从指定地址开始保留DS之后表达式的值所规 定的存储单元以备使用,格式如下:n 操作码 操作数n DS 表达式n例 ORG 500Hn DS 10Hn DB 4BH,FDHn汇编后,从500H开始保留16个单元不赋值,然后从511H开始给存储器赋值,( 511H)=4BH,(512H)=FDH.汇编可分成两种:人工汇编机器汇编机器汇编是用机器自动把汇编语言源程序翻译成可以运行的目 标代码程序,即二进制程序的过程,它是一种用机器来代替人脑的 汇编,完

8、成这一汇编过程的软件称为“汇编程序”。汇编机器语言目标程序汇编语言源程序汇编程序汇编机器语言目标程序汇编语言源程序人工查指令机器码表汇编语言及汇编过程顺序程序设计n顺序结构程序是基本程序。程序按编写的顺序 依次往下执行每一条指令,直到最后一条。它 能够解决某些实际问题,或成为复杂程序的子 程序。n例:将20H单元的两个BCD码拆开并变成ASCII码 ,存入21H、22H单元。注意ASCII码09为30H 39H。n解:采用先把20H中低4位BCD码交换出来加以转 换、存放,然后再把高4位BCD码交换至低4位加 以转换、存放。 语句 3语句 2顺序结构 入口语句 1出口BCDASCIIBCDAS

9、CIIBCDASCII0 30H 4 34H 8 38H1 31H 5 35H 9 39H2 32H 6 36H 3 33H 7 37H 顺序程序设计n源程序如下: n地址 机器码 周期数 源程序 .n ORG 0000H 22Hn0000H 02 02 00 3 LJMP MAIN 21Hn MAIN: 20H n200H 78 22 1 MOV R0,22H .n202H 76 00 1 MOV R0,00H .n204H E5 20 1 MOV A,20H R0 22Hn206H D6 1 XCHD A, R0 ;A和R0的低4位互换n207H 43 22 30 3 ORL 22H,#3

10、0Hn20AH C4 1 SWAP A ;A的高低4位互换n20BH 44 30 1 ORL A,30Hn20DH F5 21 1 MOV 21H,An20FH 80 FE 2 SJMP $ ;循环等待n ENDRAMn将20H单元的两个BCD码拆开并变成ASCII码,存 入21H、22H单元。注意ASCII码09为30H39H。循环程序设计n处理实际事务时,有时会遇到多次重复处理的问题,用循 环程序的方法来解决就比较合适。循环程序中的某些指令 可以反复执行多次。采用循环程序,使程序缩短,节省存 储单元。n循环初态:(初始条件)是设置循环过程中工作单元的初 值,例如,设循环次数计数器、地址指针

11、置初值等。n循环体:循环体是指重复执行的程序段,完成主要的计算 和操作任务。同时包括对指针的修改。n循环控制部分:循环控制部分用于控制循环的执行和结束 。根据循环次数计数器的状态或循环条件,检查循环是继 续循环或退出循环。n若在循环体中还包含有循环程序,这种现象叫“循环嵌套 ”,这样的程序称为“多重循环程序”。在多重循环程序 中,只允许外重循环嵌套内重循环,不允许循环体交叉; 也不允许从循环程序外部跳入循环程序中。顺序程序设计n已知:80C51单片机经常使用的晶振为12MHz,要求设计一 个软件延时程序,延时时间为10ms。n解:延时程序的延时时间主要与两个因素有关,一个是所 用晶振,一个是延

12、时程序中的循环次数。一旦晶振确定之 后,则主要是如何设计与计算需给定的延时循环次数。在 本题中已知晶振为12MHz,则可知一个机器周期为1s,可 预计采用单重循环是有可能实现1ms的延时的。现根据题 意编写源程序如下:P1P2S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6机器周期1s状态周期1/6 s时钟周期1/12 s循环程序设计n周期数 源程序 注释n1 MOV R0,0AH;10毫秒数R0n1 DL2: MOV R1,MT ;1ms延时的预定值MTR1(MTFAH)n1 DL1: NOPn1 NOPn2 DJNZ R1,DL1 ;lms延时循环n2 DJNZ R0,DL

13、2 ;毫秒数减1,不等于0,继续循环,等于n 0结束n内层循环 DL1 机器周期个数为(1+1+2),每个机器周期为1s,内 层循环一次需4s。若内层循环延时 lms,需1000/4=250次,十六进 制数为FAH循环程序设计n ORG 200Hn CLR A ;清A作为初始 最大值n MOV R2,20H ;数据个数初值n MOV R1,22H ;数据存放区 首地址n LP: CLR C ;清进位n SUBB A,R1 ;初始最大值 减队列中的数n JNC NEXT ;小于初始最 大值继续n MOV A, R1 ;大于初始最大 值,则用此值作为最大值n SJMP NEXT1nNEXT:ADD A, R1 ;小于初始最大值, 则恢复原最大值nNEXT1:INC R1 ;修改地址指针n DJNZ R2,LP ;依次重复比较 ,直至R20n MOV 21H ,A ;最大值存入 21H单元从22H单元开始有一个无符号数 据块,其长度在20H单元。求出 数据块中最大值,并存入21H单 元多重循环设计如果在一个循环程序中嵌套了其他的循环程序,称为多重 循环程序。在用软件实现延时时显得特别有用。设计50ms秒 延时子程序,使用12MHz晶振时,一个机器周期的时间为1 s,执行一条DJNZ指令的时间为2 s ,我们可以采用双

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号