2012汇编语言程序典型结构实例ppt培训课件

上传人:aa****6 文档编号:57368203 上传时间:2018-10-21 格式:PPT 页数:91 大小:2.27MB
返回 下载 相关 举报
2012汇编语言程序典型结构实例ppt培训课件_第1页
第1页 / 共91页
2012汇编语言程序典型结构实例ppt培训课件_第2页
第2页 / 共91页
2012汇编语言程序典型结构实例ppt培训课件_第3页
第3页 / 共91页
2012汇编语言程序典型结构实例ppt培训课件_第4页
第4页 / 共91页
2012汇编语言程序典型结构实例ppt培训课件_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《2012汇编语言程序典型结构实例ppt培训课件》由会员分享,可在线阅读,更多相关《2012汇编语言程序典型结构实例ppt培训课件(91页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及应用,第 3 章 MCS-51 单片机指令系统,3.5 汇编语言程序典型结构实例,程序框架,ORG 0000HLJMP MAIN ;跳转至主程序ORG 0003HLJMP INT0_INT ;跳转至外部中断0的中断服务程序ORG 000BHLJMP T0_INT ;跳转至定时器0的中断服务程序ORG 0013HLJMP INT1_INT ;跳转至外部中断1的中断服务程序ORG 0030H MAIN: ;开始写主程序END,中断入口地址,主程序开始,NAME EQU R1 NUM DATA 30H P10 BIT P1.0ORG 0000HLJMP MAIN ;跳转至主程序ORG 0

2、003HLJMP INT0_INT ;跳转至中断服务程序ORG 0030H MAIN: ;开始写主程序SJMP $ PRO1: RET INT0_INT: RETI TAB: DB 00H, 01H, 02HDB 03H, 04HEND,变量定义,程序入口,主程序,子程序和中断子程序,数据表格,汇编语言程序的基本结构,顺序结构,分支程序结构,循环程序结构,典型程序实例,3.5.1 数据处理类程序 3.5.2 算术运算类程序 3.5.3 逻辑运算类程序 3.5.4 延时程序 3.5.5 文本处理类程序 3.5.6 程序控制类程序,例 3.5.1,将内部RAM 25h-45h 单元的数据依次复制到

3、55h-75h单元。,25h,56h,55h,45h,75h,26h,1. 使用 R0 和 R1寄存器 2. MOV 指令,间接寻址 3. 增加 R0 和 R1中的地址,Start,55h R1,Y,N,将 R0 的数传送到R1,R0 = 46h ?,结束,开始,25h R0,R0加1,R1加1,LOOP:,例 1,MOV R1, R0,ACC A 累加器,Direct 直接寻址,Ri 间接寻址,Rn 寄存器,#data 立即数,MOV ,可能的数据传送,Start,55h R1,Y,N,将 R0 的数传送到R1,R0 = 46h ?,结束,开始,25h R0,R0加1,R1加1,LOOP:,

4、例 1,MOV A,R0 MOV R1, A,START: MOV R0, #25hMOV R1, #55h LOOP: MOV A, R0MOV R1, AINC R0INC R1CJNE R0, #46h, LOOPSJMP $,例 1,若要求(25h)-(45h) 到 (55h)-(75h) 反向传送,程序如何改动?,(25h)-(45h) 到 (55h)-(75h) 反向传送:,55h,45h,75h,25h,MM,NN,PP,QQ,MM,NN,(25h)-(45h) 到 (55h)-(75h) 反向传送,55h,45h,75h,25h,MM,NN,PP,QQ,Start,75h R1

5、,Y,N,(R0) (R1),R0 = 46h ?,结束,开始,25hR0,R0加1,R1减1,LOOP:,START: MOV R0, #25hMOV R1, #75h LOOP: MOV A, R0MOV R1, AINC R0DEC R1CJNE R0, #46h, LOOPSJMP $,练习1:,给内部RAM 40h 到DFh单元全部赋初值3Bh。,练习2:,将内部RAM 40h-7Fh 单元的数据依次复制到外部RAM7000h开始的单元。,画流程图并编写程序,练习1:,3Bh (40h) (DFh),40h R0,Y,N,R0 = E0h ?,结束,开始,3Bh R0,R0加1,LO

6、OP:,MOV R0, #40h LOOP: MOV R0,#3BhINC R0CJNE R0, #0E0h,LOOPSJMP $,7000h,40h,7Fh,External RAM,Internal RAM,A,内部RAM40h-7Fh到外部RAM 7000h开始的单元,练习2:,R0 = 80h?,开始,40h R0,7000h DPTR,Data R0 to DPTR,R0加1,DPTR加1,结束,Y,N,LP:,内部RAM40h-7Fh到外部RAM 7000h开始的单元,40h,7Fh,External RAM,Internal RAM,7000h,A,MOV R0, #40hMOV

7、 DPTR, #7000h LP: MOV A, R0MOVX DPTR, AINC R0INC DPTRCJNE R0, #80h, LPSJMP $,练习2:,例2,找出内部RAM 20h-4Fh 中所存无符号数的最大值,并存入60h单元,20h,4Fh,21h,25,36,C5,77,4E,60h,25,36,C5,( R0) (60h),20h R0,结束,R0加1,开始,( R0) (60h),(R0) (60h) ?,R0 = 50h ?,Y,Y,N,N,LOOP:,例 2,CONT:,START: MOV R0, #20hMOV 60h, R0 LOOP: INC R0CJNE

8、R0, #50h, CONTSJMP $ ; Finish CONT: MOV A, R0CLR CSUBB A, 60h ; R0-(60h)JC LOOP ; if (60h)AMOV 60h, R0 ;R0 to 60hSJMP LOOP,例 2,典型程序实例,3.5.1 数据处理类程序 3.5.2 算术运算类程序 3.5.3 逻辑运算类程序 3.5.4 延时程序 3.5.5 文本处理类程序 3.5.6 程序控制类程序,例3: 多字节无符号数的加法,入口:DATA1=被加数的低位地址,DATA2=加数的低位地址,N字节相加 出口:DATA2=和数低位地址,MADD: MOV R0,#DA

9、TA1 ;置被加数 MOV R1,#DATA2 ;置加数 MOV R7,#N ;置字节数CLR C ;清进位 LOOP: MOV A,R0 ADDC A,R1 ;求和MOV R1,A ;存结果INC R0 ;修改指针INC R1 DJNZ R7,LOOP ;循环判断,例4:求变量X(0x10) 的平方,入口:X 值存放在片内RAM的 30H 单元 出口:X2 值存放在片内RAM的 31H 单元,ORG 0000H MAIN: MOV DPTR,#0200HMOV A,30HMOVC A,A+DPTRMOV 31H,ASJMP $ORG 0200H TABLE: DB 00,01,04,09,1

10、6,25DB 36,49,64,81,100END,200h,0000,00,01,04,09,Main,16,25,A = 4,例4:求变量X(0x10) 的平方,ORG 0000H MAIN: MOV DPTR,#2000HMOV A,30HADD A, # 04HMOVC A,A+PCMOV 31H,A ;占2个字节SJMP $ ; 占2个字节ORG 0200H TABLE: DB 00,01,04,09,16,25DB 36,49,64,81,100END,200h,0000,00,01,04,09,Main,16,25,另解:,A = 4,A = 8,例5:单字节压缩BCD码转换成二

11、进制码,入口:R2 = 待转换压缩BCD码 出口:R2 = 转换结果,MOV A,R2 ;A (d1d0)BCDANL A,#0F0H ;取高位BCD码d1SWAP A ;A=0 d1HMOV B,#0AH ;B10MUL AB ;d110MOV R3,A ;R3暂存乘积结果MOV A,R2 ;A (d1d0)BCDANL A,#0FH ;取低位BCD码d0ADD A,R3 ;d110+ d0MOV R2,A ;保存计算结果SJMP $,练习1:填表,给出每条指令执行后相应单元的值,练习2:填表,给出每条指令执行后相应单元的值,典型程序实例,3.5.1 数据处理类程序 3.5.2 算术运算类程

12、序 3.5.3 逻辑运算类程序 3.5.4 延时程序 3.5.5 文本处理类程序 3.5.6 程序控制类程序,例6:简单逻辑运算,将内部RAM 5Ch单元的数分别与19异或 ,并将结果存入 71h 79h单元。,5C,77,76,75,74,73,72,71,78,79,01,NN,02,03,异或,R0,R1,Y,N,01h R0,71h in R1,R1加1,结果存入 R1,(A)与 (5Ch)异或,R0 = 0Ah ?,R0 A,71h R1,R0加1,结束,开始,LOOP:,例6,START: MOV R0, #01hMOV R1, #71h LOOP: MOV A, R0XRL A,

13、 5ChMOV R1, AINC R0INC R1CJNE R0, #0Ah, LOOPSJMP $ ; Finish,例6,将十进制数128存入内部RAM 70h单元,右移2位后结果存入71h单元。,内存40h到5Fh单元存有带符号数,计算其中负数的个数,并将结果存入10h单元。,根据要求编写程序,练习1:,练习2:,MOV A, #80hMOV 70h, ARR ARR AMOV 71h, A SJMP $,80h = 128,20h = 32,练习1:,将十进制数128存入内部RAM 70h单元,右移2位后结果存入71h单元。,CHKNEG: ; 若C =1 则COUNT 单元加1RLC

14、 AJNC NEXTONEINC COUNT NEXTONE: RRC A ; 恢复原值RET,C,练习2:,内存40h到5Fh单元存有带符号数,计算其中负数的个数,并将结果存入10h单元。,COUNT = 0,40h R0,结束,R0 A,开始,R0 = 60h?,LOOP:,练习2,调用子程序 CHKNEG,R0加1,COUNT EQU 10h MOV R0, #40hMOV COUNT, #00h LOOP: MOV A, R0ACALL CHKNEGINC R0CJNE R0, #60h, LOOPSJMP $ CHKNEG: RLC AJNC NEXTONEINC COUNT NEXTONE: RRC ARET,练习2,典型程序实例,3.5.1 数据处理类程序 3.5.2 算术运算类程序 3.5.3 逻辑运算类程序 3.5.4 延时程序 3.5.5 文本处理类程序 3.5.6 程序控制类程序,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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