- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章:MCS-51程序设计计算机与通信工程学院李耀明一、汇编语言概述1、指令系统语句格式[标号]:操作码[操作数];[注释]指令编码长短:单字节,双字节,三字节执行周期:一个机器周期占12个振荡周期,单周期指令,双周期,4周期寻址方式:指令中所规定的寻找操作地址的方式立即、直接、寄存器、寄存器间接寻址、基址加变址、相对寻址、位寻址指令分类:数据传送、算术、逻辑、位操作、控制转移2、程序设计的步骤(1)分析问题,编制说明要解决问题的程序框图。(2)确定数据结构、算法、工作单元、变量设定(与高级语言不同)(3)根据所用的指令系统,按照已编制的程序框图用汇编语言编制出源程序。(4)将编制出的程序在计算机上调试,直至实现预定的功能。计算机与通信工程学院二、程序设计分类1、顺序程序:执行时按顺序一条条地执行指令2、分支程序:当程序不再顺序执行,而向一个方向或多个方向转移时,叫分支程序。3、循环程序:对于需要反复的程序段,常采用循环办法,以缩短程序。4、子程序及其调用程序主程序使用子程序时,用调用指令(ACALL),子程序最后放一条RET指令。计算机与通信工程学院三、程序设计准则结构清晰:便于分析层次分明:便于阅读语言简洁:便于分析易于理解:便于阅读计算机与通信工程学院4.1 简单程序设计简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。除非用特殊指令让它跳转,不然它会在PC控制下执行。计算机与通信工程学院开始R0←40HA←(R0)(40H)+(41H)和送AA送(42H)返回图4-1 例1流程图例4-1两个8位无符号数相加例:将加数和被加数分别送入40H、41H单元,加完后和送入42H单元ORG 0000H AJMP BEGINORG 0030HBEGIN: MOV 40H,#01H MOV 41H,#02HLOOP: MOV R0,#40H MOV A,@R0 INC R0 ADD A,@R0 INC R0 MOV @R0,A JMP LOOP END计算机与通信工程学院开始(40H)内容送A,屏蔽高位,交换高低位A←(R0)图4-2 例2流程图取(41H)内容,屏蔽高位,送AA与(R1)或后送(42H)返回例4-2将两个半字节数合并成一个单字节数 程序ORG 0000H AJMP startORG 0030HSTART: MOV sp,#60H MOV 40h,#01h MOV 41h,#02hloop: MOV R1,#40H MOV A,@R1 ANL A,#0FH ;取第一个半字节 SWAP A INC R1 XCH A,@R1 ;取第二字节 ANL A,#0FH ;取第二个半字节 ORL A,@R1 ;拼字 INC R1 MOV @R1,A ;存放结果 AJMP $ END执行完后如何不改变内存和寄存器的值?计算机与通信工程学院4.2 分支程序设计在处理实际事务中,只用简单程序设计的方法是不够的。因为大部分程序总包含有判断、比较等情况。根据判断、比较的结果转向不同的分支计算机与通信工程学院开始设置指针DPTR初始值取第一个数存入R2取第二个数后者减前者进位标志是否为0?NY存后者存前者结束图5-3 例4流程例4-3:两个无符号数比较大小设两个连续外部RAM单元ST1和ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。ST1 EQU 8040HORG 0000H JMP STARTORG 0030HSTART: MOV DPTR,#ST1 MOV A,#12H MOVX @DPTR,A INC DPTR MOV A,#34H MOVX @DPTR,ALOOP: CLR C ;进位位清零 MOV DPTR,#ST1 ;设数据指针 MOVX A,@DPTR ;取第一数 MOV R2,A ;暂存R2 INC DPTR MOVX A,@DPTR ;取第二个数 SUBB A,R2 ; 两数比较 JNC BIG1 XCH A,R2 ;第一数大BIG0: INC DPTR MOVX @DPTR,A ;存大数 SJMP $BIG1: MOVX A,@DPTR;第二数大 SJMP BIG0 END 计算机与通信工程学院例4-4:编制计算符号函数y=SGN(x)的程序ARE EQU 8040H
文档评论(0)