南昌大学单片机(微机原理)课件第5章(10).ppt_第1页
南昌大学单片机(微机原理)课件第5章(10).ppt_第2页
南昌大学单片机(微机原理)课件第5章(10).ppt_第3页
南昌大学单片机(微机原理)课件第5章(10).ppt_第4页
南昌大学单片机(微机原理)课件第5章(10).ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理与接口技术 第五章 汇编语言程序设计,第五章 汇编语言程序设计,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,1、机器语言 2、汇编语言 3、高级语言,5.1.1 程序设计语言,汇编语言源程序的格式 标号:操作码 操作数,操作数;注释 在书写汇编语句时,上述各部分应该严格地用定界符加 以分离。定界符包括空格符、冒号、分号、逗号等。,5.1.2 汇编语言的规范,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(1)、标号段:标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。 标号是由字母开始的1 8个字母或数字串组成。 注:不能用指令助记符、伪指令或寄

2、存器名来作标号名。,(2)、操作码段:是指令或伪指令的助记符,用来表示指令的性质。,(3)、操作数段:给出的是参加运算(或其他操作)的数据或数据的地址。,(4)、注释段:为便于今后阅读和交流,对本指令执行的目的和所起作用所做的说明。,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(1)、ORG ( origin ) 这是一条程序汇编起始地址定位伪指令,用来规定汇编 语言程序进行汇编时,目的程序在程序存储器中存放的起 始地址,它的格式如下: 标号操作码操作数 ORG表达式(exp),(2)、END 汇编语言程序结束伪指令,用在程序的末尾,表示程序已结束。汇编程序对 END 以后的指

3、令不再汇编。,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(3)、EQU ( EQUATE ) 赋值(也称等值)伪指令,它的作用是把操作数段中的地址或数据赋值给标号字段中的标号。它的格式如下: 标号(字符名称) EQU 数或汇编符号 例1、AA EQU R1; R1 与 AA 等值 则“ MOV A , AA ”与“ MOV A , Rl ”等值。 例2、K1 EQU 40 DL EQU 0FA4CH MOV A, K1 ; 40 A LJMP DL ; FA4CH PC,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(

4、4)、DB ( Define Byte ) 定义字节伪指令,它的功能是从指定单元开始定义(存储)若干个字节的数值或 ASCll 码字符。常用于定义数据常数表。它的格式如下: 操作码操作数 DB字节常数或 ASCII字符 例3、ORG1000H DB 76H, 73, C, B, ;在表示 ASCll 字符时需要用括号 DB 0ACH 则 ( 1000H ) = 76H ( 1001H ) = 49H ( 1002H ) = 43H ( 1003H ) = 42H ( 1004H ) = 0ACH,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(5)、DW (

5、 Define Word ) 定义字伪指令,它的功能是从指定单元开始定义(或存储)若干个字的数据或 ASCll 码字符。它的格式如下: 操作码操作数 DW字常数或 ASCII 字符 例4、ORG 2200H DW 1246H, 7BH, 10 则( 2200H ) = 12H ( 2201H ) = 46H ( 2202H ) = 00 ( 2203H ) = 7BH ( 2204H ) = 00 ( 2205H ) = 0AH,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(6)、BIT 位地址符号伪指令,它的功能是把位地址赋予所规定的字符名称。它的格式如

6、下: 字符名称操作码操作数 BIT 位地址 例5、 ABCBITP1.0 Q4BITP2.2 则汇编后,位地址P1.0、P1.2 分别赋给变量 ABC和Q4。,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(7)、DATA 定义标号数值伪指令,它的功能是给标号段中的标号赋以数值。它的格式如下: 标号操作码操作数 字符名称 DATA表达式 例6、MN DATA 3000H 汇编后 MN 的值为 3000H。 DATA 与 EQU 的区别在 于:用 DATA 定义的标识符汇编时作为标号登记在符号表中,所以可以先使用后定义;而 EQU 定义的标识符必须先定义后使用

7、,因后者不登记在符号表中。,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,(1)、熟悉和分析工作任务,明确任务要求、工作目的和技术指标等。 (2)、确定解决问题的工作方法和工作步骤。 (3)、画工作流程图。 (4)、分配内存工作单元,确定程序与数据区存放地址。 (5)、按流程图编写源程序。 (6)、上机调试、修改及最后确定源程序。,5.1.3 汇编语言程序设计步骤,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,汇编有两种方法:手工汇编、机器汇编。,源程序 (汇编语言程序),汇编程序 (完成把源程序翻译成目的程序的工作),目的程序 (机器语言程序

8、),ORG 2000H 2000 90 MOV DPTR, #TAB 2003 E5 20 MOV A, 20H 2005 93 MOVC A, A+DPTR 2006 F5 21 MOV 21H, A 2008 22 RET 2100 00 01 04 TAB:DB 00H,01H,04H,09H,10H,19H 2103 09,10,19,微机原理与接口技术 第五章 汇编语言程序设计,5.2,顺序与循环程序设计,循环结构包括:循环初态、循环体、循环控制部分,顺序结构,微机原理与接口技术 第五章 汇编语言程序设计,5.2,顺序与循环程序设计,例1、将 20H 单元的两个 BCD 码拆开并变成

9、 ASCll 码,存入21H、22H单元。注意:ASCll码09为30H39H。,5.2.1 顺序程序设计,解:采用先把20H中低4位BCD码交换出来加以转换、存放,然后再把高4位BCD码交换至低4位加以转换、存放。,微机原理与接口技术 第五章 汇编语言程序设计,源程序如下: 地址 机器码 周期数 源程序 ORG 0000H 0000H 02 02 00 3 LJMP MAIN ORG 0000H 0200H 78 22 1 MAIN: MOV R0,22H 0202H 76 00 1 MOV R0,0 0204H E5 20 1 MOV A,20H 0206H D6 1 XCHD A, R0

10、 0207H 43 22 30 2 ORL 22H,#30H 020AH C4 1 SWAP A 020BH 44 30 1 ORL A,30H 020DH F5 21 1 MOV 21H,A 020FH 80 FE 2 SJMP $ END,5.2,顺序与循环程序设计,微机原理与接口技术 第五章 汇编语言程序设计,例3 已知:80C51单片机使用的晶振为6MHz,要求设计一个软件延时程序,延时时间为10ms。,5.2,顺序与循环程序设计,解:延时程序的延时时间主要与两个因素有关,一个是所用晶振,一个是延时程序中的循环次数。一旦晶振确定之后,则主要是如何设计与计算需给定的延时循环次数。在本题中

11、已知晶振为6MHz,则可知一个机器周期为2s,可预计采用单重循环是有可能实现1ms的延时的。现根据题意编写源程序如下:,5.2.2 循环程序设计,微机原理与接口技术 第五章 汇编语言程序设计,5.1,周期数 1 MOV R0,0AH ;毫秒数R0 1 DL2: MOV R1,MT ;1ms延时的预 定值MTR1 1 DL1: NOP 1 NOP 2 DJNZ R1,DL1 ;1ms延时循环 2 DJNZ R0,DL2 ;毫秒数减1,不等于0,继续循环,等于0结束。,5.2,顺序与循环程序设计,5.2.2 循环程序设计,微机原理与接口技术 第五章 汇编语言程序设计,5.2.2,循环程序设计,例1

12、、从22H单元开始有一无符号数据块,其长度在20H单元。求数据块中的最大数。,ORG 30H CLR A ;清A作为初始最大值 MOV R0,20H ;数据个数初值 MOV R1,#22H ;数据块首地址初值 LP: CLR C ;清进位 SUBB A,R1 ;最大值减队列中数 JNC NEXT ;小于最大值继续 MOV A,R1 ;大于最大值,则用此值代换 SJMP NEXT1 NEXT: ADD A,R1 ;小于最大值,则恢复 NEXT1: INC R1 ;修改地址指针 DJNZ R2,LP ;依次重复比较,直至R20 MOV 21H,A ;最大值存入21H单元 RET,微机原理与接口技术

13、 第五章 汇编语言程序设计,5.3,分支程序设计,5.3.1 分支程序设计综述 分支程序应用要点是正确使用转移指令,通常有如下3种指令。 1. 无条件转移 2. 条件转移 3. 散转,5.3 分支程序设计,微机原理与接口技术 第五章 汇编语言程序设计,5.3.2,例3 设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元。 Y= 3X , X 15,分支程序设计,5.3.2 无条件/条件转移程序,微机原理与接口技术 第五章 汇编语言程序设计,分支程序设计,ORG 200H MOV A, 5AH ADD A, 5AH ;2XA MOV R1, A MOV A, 5AH ;重新

14、把X装入A CJNE A, #10, L1 L1:JC L2 ;X15 CJNE A, #10H, L3 ;与16比 L3:JNC L4 ;X15转L4 MOV A,R1 ADD A,#10 ;10X15,Y2X10 MOV R0, A SJMP L4 L2:MOV A, R1 ADD A, 5AH ;X10,Y=3X MOV R0, A L4 : MOV 5BH, R0 ;存结果 SJMP $ RET,5.3.2,微机原理与接口技术 第五章 汇编语言程序设计,散转程序设计,5.3.3,例2 根据R3的内容,转向各个操作程序。 R30, 转入OPR0 R31, 转入OPR1 . R3n, 转入

15、OPRn 解:程序清单如下。 MOV DPTR,TAB1 ;跳转表首地址送数据指针 MOV A,R3 ;R32 A(修正变址值) ADD A,R3 JNC ROAD ;判有否进位 INC DPH ;有进位则加到高字节地址 ROAD: JMP ADPTR ;转向形成的散转地址入口 TAB1: AJMP OPR0 ;转移到OPR0 AJMP OPR1 . AJMP OPRn,微机原理与接口技术 第五章 汇编语言程序设计,查表程序设计,5.4.1,例1 设计一个将16进制数转换成ASCII码的子程序,设16进制数存放在R0的低4位,要求将转换后的ASCII码送回R0。 ORG 30H MOV A,R

16、0 ANL A,0FH ; 保留低4位 ADD A,2 ;变址调整 MOVC A,APC;查表获取ASCII码值 MOV R0,A RET TAB:DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H,41H,42H,43H,44H,45H,46H,微机原理与接口技术 第五章 汇编语言程序设计,5.5,子程序设计,子程序的结构与一般的程序并无多大区别,它的主要特点是,在执行过程中需要由其它程序来调用,执行完后又需要把执行流程返回到调用该子程序的主程序。,子程序调用时要注意两点: 1、现场的保护和恢复(保持栈平衡); 2、主程序与子程序的参数传递: 1)利用

17、累加器或寄存器 2)当传送的数据量比较大时,可以利用存储器实现参数的传递 3)利用堆栈传递,微机原理与接口技术 第五章 汇编语言程序设计,5.5,子程序设计,例1 用程序实现c a2b2。设a、b均小于10。a存在31H单元中,b存在32H单元,把c存入33H单元。 解:因本题二次用到平方值,所以在程序中采用把求平方的程序段编为子程序的方法。依题意编写主程序和子程序如下:,ORG 200H 200 75 81 3F MOV SP,3FH ;设堆栈指针 203 E5 31 MOV A,31H ;取a值 205 12 04 00 LCALL SQR ;求a2 208 F9 MOV R1,A ; a

18、2值暂存R1 209 E5 32 MOV A,32H ;取b值 20B 12 04 00 LCALL SQR ;求b2 20E 29 ADD A,R1 ;求a2 b2 20F F5 33 MOV 33H,A ;存入33H,微机原理与接口技术 第五章 汇编语言程序设计,5.5,子程序设计,; 子程序 地址 机器码 源程序 ORG 400H 400 04 SQR: INC A 401 83 MOVC A,APC 401 22 RET 0 1 4 9 16 TAB: DB 0,1, 4, 9,16 408 25 36 49 DB 25,36,49 40B 64,81 DB 64,81,微机原理与接口技术 第五章 汇编语言

温馨提示

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

评论

0/150

提交评论