第5章汇编语言程序设计.ppt

上传人:本田雅阁 文档编号:2979965 上传时间:2019-06-17 格式:PPT 页数:27 大小:645.01KB
返回 下载 相关 举报
第5章汇编语言程序设计.ppt_第1页
第1页 / 共27页
第5章汇编语言程序设计.ppt_第2页
第2页 / 共27页
第5章汇编语言程序设计.ppt_第3页
第3页 / 共27页
第5章汇编语言程序设计.ppt_第4页
第4页 / 共27页
第5章汇编语言程序设计.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第5章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章汇编语言程序设计.ppt(27页珍藏版)》请在三一文库上搜索。

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、 ORG 1000H DB 76H, 73, C, B, ;在表示 ASCll 字符时需要用括号 DB 0ACH 则 ( 1000H ) = 76H ( 1001H ) = 49H ( 1002H ) = 43H ( 1003H ) = 42H ( 1004H ) = 0ACH,2. 汇编语言伪指令,微机原理与接口技术 第五章 汇编语言程序设计,5.1,概述,

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

7、义;而 EQU 定义的标识符必须先定义后使用,因后者不登记在符号表中。,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 2009 00 01 04 TAB:DB 00H,01H,04H,09H,10H,19H 2012 09,10,19,微机原理与接口技术 第五章 汇编语言程序设计,5.2,顺序与循环程序设计,循环结构包括:循环初态、循环体、循环控制部分,顺序结构,微机原理与接口技术 第五章 汇编语言程序设计,5.2,顺序与循环程序设计,例1、

9、将 20H 单元的两个 BCD 码拆开并变成 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 0200H 0200H 78 22 1 MAIN: MOV R0,22H 0202H 76 00 1 MOV R0,0 0204H E5 20 1 MOV A,2

10、0H 0206H D6 1 XCHD A, R0 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 已知:89C51单片机使用的晶振为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 循环程序设计,微机原理与接口技术 第五章

12、汇编语言程序设计,5.2.2,循环程序设计,例1、从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 R0,LP ;依次重复比较,直至R20 MOV 21H,A ;

13、最大值存入21H单元 RET,微机原理与接口技术 第五章 汇编语言程序设计,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

14、MOV R1, A MOV A, 5AH ;重新把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, 转

15、入OPR0 R31, 转入OPR1 . R3n, 转入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位,要求将转换后的AS

16、CII码送回R0。 ORG 30H MOV A,R0 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、现场的保护和恢复(保持栈

17、平衡); 2、主程序与子程序的参数传递: 1)利用累加器或寄存器 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

18、 ;求a2 208 F9 MOV R1,A ; a2值暂存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 4

19、0B 64,81 DB 64,81,微机原理与接口技术 第五章 汇编语言程序设计,5.6,综合编程举例,例1 将R0所指出单元中的ASCII码转换成十六进制数,并把结果仍存于原单元中. 解:对于小于、等于 9的数,ASCII代码减去30H得一位十六进制数,对于大于9的ASCII代码减去37H,则恰好是“0AH0FH”的结果。 编程如下: HEX: MOV A,R0 ;取操作数 CLR C SUBB A,#30H ;09的转换 MOV R0,A ;暂存结果 SUBB A,#0AH ;结果是否大于9 JC SB2 ;小于、等于9,则返回 XCH A,R0 SUBB A,#07H ;大于9,则减37

20、H MOV R0,A ;存结果 SB2: RET,微机原理与接口技术 第五章 汇编语言程序设计,综合编程举例,5.6,例2 P1.0端口输出1kHZ和2kHZ的变频音调,每隔1S交替变换一次。,DLV: MOV R2,#08 ; 1kHZ的持续时间 DLV1: MOV R3 ,#0FAH DLV2: CPL P1.0 ; 输出1kHZ方波 LCALL D0.5ms ; 延时D0.5ms,省略 DJNZ R3, DLV2 DJNZ R2, DLV1 ; 持续1s DLV3: MOV R3, #0FAH DLV4: CPL P1.0 ;输出2kHZ方波 LCALL D0.25ms DJNZ R3, DLV4 DJNZ R2, DLV3 ;持续1s SJMP DLV ; 反复循环,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1