微机原理_汇编语言程序设计(2002)

上传人:bin****86 文档编号:57291804 上传时间:2018-10-20 格式:PPT 页数:42 大小:177.50KB
返回 下载 相关 举报
微机原理_汇编语言程序设计(2002)_第1页
第1页 / 共42页
微机原理_汇编语言程序设计(2002)_第2页
第2页 / 共42页
微机原理_汇编语言程序设计(2002)_第3页
第3页 / 共42页
微机原理_汇编语言程序设计(2002)_第4页
第4页 / 共42页
微机原理_汇编语言程序设计(2002)_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《微机原理_汇编语言程序设计(2002)》由会员分享,可在线阅读,更多相关《微机原理_汇编语言程序设计(2002)(42页珍藏版)》请在金锄头文库上搜索。

1、微机原理及应用,MCS-51单片机,第四章 汇编语言程序设计,程序设计语言简介 程序设计的步骤和方法 汇编语言程序设计 分支程序 用cjne实现三分支 用 jmp A+DPTR 实现多分支 循环程序 子程序及其调用 程序设计举例,机器语言 计算机唯一能够识别和执行的语言 汇编语言 “符号语言”,用指令助记符代表机器语言指令高级语言 面向算法、过程、对象,类似自然语言,可移植性好,须经解释或翻译后才能被执行,程序设计语言简介,汇编,机器语言目标程序,汇编语言源程序,程序设计的步骤和方法,程序设计的步骤 程序设计的方法 常用伪指令 汇编语言格式,程序设计的步骤,分析课题,确定算法和思路 根据算法和

2、思路画出流程图 根据流程图编写程序 上机调试,排除错误,流程图图例,起止框处理框判断框连线,程序设计的方法,结构化设计 模块化设计 开发方法 自底向上开发 先底层开发 自顶向下开发 先顶层开发 混合方法,常用伪指令,定义:仅向汇编程序发出的,并仅由汇编程序在汇编程序中识别和执行的一种汇编控制命令,它本身在目标程序中不产生机器码。 汇编起始伪指令:ORG 汇编结束伪指令:END 定义字节伪指令:DB 定义字伪指令: DW 定义位伪指令: BIT 赋值伪指令: EQU,汇编起始伪指令,格式: ORG 功能:指定汇编源程序编译成机器语言程序 的起始地址 例如: ORG 0000Hljmp 0100H

3、ORG 0100HStart: mov A,#5Ahsjmp $END,汇编结束伪指令,格式: END 起始地址 功能:停止汇编 示例:ORG 0000Hljmp 0100HORG 0100HStart: mov A,#5Ahsjmp $ENDmov A,#0A5h,定义字节伪指令,格式: DB 功能:把项或项表的数值存入从标号开始的连续单元,其中项或项表可以是一个字节、数或以引号括起来的字符串。ORG 1000H Dat: DB 11h,22h,A,”BCD”END,定义字伪指令,格式: DW 功能:把项或项表的数值存入从标号开始的连续单元,其中项或项表是一个字(两字节)。ORG 1000H

4、 Dat: DW 1122h,3344hEND,定义位伪指令,格式: BIT 功能:定义位变量地址 U BIT 20H.0 V BIT 20H.1 W BIT 20H.2 X BIT 20H.3 Y BIT 20H.4 Z BIT 20H.5 Q BIT 20H.6,赋值伪指令,格式: EQU 功能:定义符号变量值X EQU 05HY EQU 06H,汇编语言格式,指令格式: 标号:助记符 参数,参数;注释 伪指令格式: 名字 定义符 参数,参数;注释,参数类型,常数: 01010101B;12D,12;0F1H,59H 67Q;A,a 操作数: A,B,DPTR 表达式 mov A,#(12

5、H-03H),用cjne实现三分支,cjne R0,#0,MP1mov R1,#0sjmp MP3 MP1:mov A,R0jnb ACC.7,MP2mov R1,#0FFhsjmp MP3 MP2:mov R1,#01h MP3:sjmp $,y=,R0x,R1y,用 jmp A+DPTR 实现多分支,KeyB5: mov DPTR,#JMPTBLclr Csubb A,#0Ahrl AJMP A+DPTR JMPTBL:ajmp AAAajmp BBBajmp CCCajmp DDD,循环程序,循环程序结构 单循环程序 例1:多字节求和 例2:内部数据区清零 多重循环程序 例3:50ms延

6、时程序,循环程序结构,循环初始化:循环控制变量的初始化、 数据变量的初始化 循环工作部分:循环主体,重复执行的计算 循环控制部分:循环变量的修改、终止控制,例1:多字节求和,ORG 0000H SUM:mov R3,#0mov R4,#0mov R0,#50Hmov R2,#5 Loop:mov A,R4add A,R0mov R4,Ainc R0clr Aaddc A,R3,mov R3,Adjnz R2,Loopsjmp $END,例2:内部数据区清零,ORG 0000H Zero:mov R0,#30Hmov R7,#10mov A,#00H Loop:mov R0,Ainc R0djn

7、z R7,Loopsjmp $END,例3:50ms延时程序,Delay:mov R7,#200 Del1: mov R6,#123nop Del2: djnz R6,Del2djnz R7,Del1sjmp $,;1us ;1us ;1us ;2us ;2us,子程序及其调用,子程序调用与返回指令 子程序设计方法 子程序的调用过程与子程序嵌套 调用过程中的参数传递 通过寄存器传递 通过堆栈传递 通过数据指针(DPTR)传递,子程序调用与返回指令,绝对调用指令 acall addr11;(PC) (PC)+2 ,(SP) (SP)+1 (SP) (PC07) ,(SP) (SP)+1,(SP)

8、 (PC815) ,(PC010) addr11 ,(PC1115) 不变 lcall addr16 返回指令 ret; (PC815)(SP),(SP) (SP)-1(PC07)(SP),(SP) (SP)-1 举例:,子程序调用与返回指令举例,ORG 0000H Start: mov A,#0acall Sub1mov A,#0lcall Sub2sjmp,Sub1:inc Aret Sub2:dec AretEND,子程序设计方法,格式: ;子程序名;子程序功能:;入口参数:;出口参数:;占用资源: 子程序名:.,子程序的调用过程与子程序嵌套,主程序要使用子程序时通过call 指令 子程

9、序执行完后通过ret 指令返回 防止自然进入子程序和自然退出子程序子程序嵌套,通过寄存器传递,方法简单、参数有限 例:ORG 0000H Main:mov R0,#40hmov R7,#10Hlcall Zerosjmp $,;子程序名:Zero ;功能:对内部数据区清零 ;入口参数:R0内部数据区 ; R7内部数据区长度 ;出口参数:无 ;占用资源:A,R0,R7 Zero:clr A Loop:mov R0,Ainc R0djnz,R7,Loopret,通过堆栈传递,ORG 0000H Main:mov 70H,#40hmov 71H,#10Hpush 70hpush 71hlcall Z

10、erosjmp $,;子程序名:Zero ;功能:对内部数据区清零 ;入口参数:70内部数据区地址 ; 71h内部数据区长度 ;出口参数:无 ;占用资源:A,R0,R7,70h,71h Zero:pop DPHpop DPLpop 07h;R7pop 00h;R0clr A Loop:mov R0,Ainc R0djnz,R7,Looppush DPLpush DPHret,通过数据指针(DPTR)传递,将待传递参数紧跟在调用指令之后ORG 0000H Main:nopacall Print DB: ”THIS IS AN EXAMPLE” DB:0AH,0DH,00H Next: nopsj

11、mp $END,Print:pop DPHpop DPL PPP1:mov A,#00hmovc A,A+DPTRinc DPTRjz PPPEnd PPP2:mov P1,Asjmp PPP1 PPPEnd:jmp A+DPTR,程序设计举例,算术运算程序 多字节加法 多字节BCD码减法 逻辑运算程序 ASCII码二进制 排序程序 冒泡法排序 查表程序 以PC为指针 以DPTR为指针 散转程序 转移指令表 地址偏移量表 转向地址表,多字节加法,2F 5B A7 C3 H (43 42 41 40) H + 14 DF 35 B8 H(53 52 51 50) HORG 0000H Jia:

12、mov R0,#40hmov R1,#50hmov R2,#4clr C Jia1:mov A,R1addc A,R0mov R0,Ainc R0,inc R1 djnz R2,Jia1mov F0,Csjmp $END,多字节BCD码减法,99 88 77 66 H (43 42 41 40) H - 44 55 66 77 H(53 52 51 50) HORG 0000H Jia: mov R0,#40hmov R1,#50hmov R2,#4clr C Jia1:mov A,#9Ahsubb A,R1add A,R0da Amov R0,A,cpl C inc R0inc R1 djn

13、z R2,Jia1mov F0,Csjmp $END,数据的拼装,x7x6x5x4x3x2x1x0 (20H) y7y6y5y4y3y2y1y0 (21H) y2y0y0x4x3x2x1x0 (30H)ORG 0000H Start: mov 30h,20hanl 30h,#00011111bmov A,21hswap Arl Aanl A,#11100000borl 30h,Asjmp $END,ASCII码二进制,ORG 0000H AtoH: mov A,#Aclr Csubb A,#30hcjne A,#0Ah,NEQsjmp BIG NEQ: jc AEND BIG: subb A,

14、#07h AEND:sjmp $END,ORG 0000H HtoA: mov A,#0Bhadd A,#90hda Aaddc A,#40hda Asjmp $END,冒泡法排序,ORG 0000hmov PSW,#00hmov P2,#36hmov R2,#100-1 Loop0:mov R0,#00hmov R1,#01hmov 03h,R2clr 7Fh Loop1:movx A,R0mov 30h,Amovx A,R1,cjne A,30h,Loop2sjmp L1 Loop2:jc L1movx R0,Axch A,30hmovx R1,Asetb 7Fh L1: inc R0in

15、c R1djnz R3,Loop1jnb 7Fh,Loop3djnz R2,Loop0 Loop3:sjmp $END,以PC为指针查表程序,TB1: mov A,R2add A,R2mov R3,Aadd A,#06Hmovc A,A+PCxch A,R3add A,#03Hmovc A,A+PCmov R4,Asjmp $,TAB1:DW 1520,3721,4264DW7850,3483,32657DW 883,9943,1000DW 4051,6785,8931DW 4468,5871DW 13284,27808END,以DPTR为指针查表程序,LTB2: mov DPTR,#TAB2mov A,R3clr Crlc Amov R3,Axch A,R2rlc Axch R2,Aadd A,DPLmov DPL,Amov A,DPHaddc A,R2mov DPH,A,clr Amovc A,A+DPTRmov R2,Aclr Ainc DPTRmovc A,A+DPTRmov R3,Aret TAB2: DW ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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