06-第四章程序设计.pptx
《06-第四章程序设计.pptx》由会员分享,可在线阅读,更多相关《06-第四章程序设计.pptx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章:MCS-51程序设计计算机与通信工程学院李耀明一、汇编语言概述n1、指令系统n语句格式n:;n指令编码长短:单字节,双字节,三字节n执行周期:一个机器周期占12个振荡周期,单周期指令,双周期,4周期n寻址方式:n指令中所规定的寻找操作地址的方式n立即、直接、寄存器、寄存器间接寻址、基址加变址、相对寻址、位寻址n指令分类:n数据传送、算术、逻辑、位操作、控制转移n2、程序设计的步骤n(1)分析问题,编制说明要解决问题的程序框图。n(2)确定数据结构、算法、工作单元、变量设定(与高级语言不同)n(3)根据所用的指令系统,按照已编制的程序框图用汇编语言编制出源程序。n(4)将编制出的程序在计
2、算机上调试,直至实现预定的功能。计算机与通信工程学院二、程序设计分类n1、顺序程序:n执行时按顺序一条条地执行指令n2、分支程序:n当程序不再顺序执行,而向一个方向或多个方向转移时,叫分支程序。n3、循环程序:n对于需要反复的程序段,常采用循环办法,以缩短程序。n4、子程序及其调用程序n主程序使用子程序时,用调用指令(ACALL),子程序最后放一条RET指令。计算机与通信工程学院三、程序设计准则n结构清晰:便于分析n层次分明:便于阅读n语言简洁:便于分析n易于理解:便于阅读计算机与通信工程学院4.1 简单程序设计n简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。除
3、非用特殊指令让它跳转,不然它会在PC控制下执行。计算机与通信工程学院例4-1两个8位无符号数相加nORG 0000Hn AJMP BEGINnORG 0030HnBEGIN:n MOV 40H,#01Hn MOV 41H,#02HnLOOP:n MOV R0,#40Hn MOV A,R0n INC R0n ADD A,R0n INC R0n MOV R0,An JMP LOOPn END开始R040HA(R0)A送(42H)(40H)+(41H)和送A返回图4-1 例1流程图例:将加数和被加数分别送入例:将加数和被加数分别送入40H、41H单元,加完后和送入单元,加完后和送入42H单元单元计算
4、机与通信工程学院例4-2将两个半字节数合并成一个单字节数 n程序nORG 0000Hn AJMP startnORG 0030HnSTART:n MOV sp,#60Hn MOV 40h,#01hn MOV 41h,#02hnloop:n MOV R1,#40Hn MOV A,R1n ANL A,#0FH ;取第一个半字节n SWAP An INC R1 n XCH A,R1 ;取第二字节 n ANL A,#0FH ;取第二个半字节n ORL A,R1 ;拼字n INC R1 n MOV R1,A ;存放结果 n AJMP$n ENDn执行完后如何不改变内存和寄存器的值?开始(40H)内容送A
5、,屏蔽高位,交换高低位A(R0)A与(R1)或 后 送(42H)取(41H)内容,屏蔽高位,送A返回图4-2 例2流程图计算机与通信工程学院4.2 分支程序设计n在处理实际事务中,只用简单程序设计的方法是不够的。因为大部分程序总包含有判断、比较等情况。n根据判断、比较的结果转向不同的分支计算机与通信工程学院例例4-3:两个无符号数比较大小n设两个连续外部RAM单元ST1和ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。nST1 EQU 8040HnORG 0000Hn JMP STARTnORG 0030HnSTART:n MOV DPTR,#ST1n MOV A,#12Hn
6、MOVX DPTR,An INC DPTRn MOV A,#34Hn MOVX DPTR,AnLOOP:n CLR C ;进位位清零n MOV DPTR,#ST1 ;设数据指针n MOVX A,DPTR ;取第一数n MOV R2,A ;暂存R2n INC DPTRn MOVX A,DPTR ;取第二个数n SUBB A,R2 ;两数比较n JNC BIG1n XCH A,R2 ;第一数大nBIG0:n INC DPTRn MOVX DPTR,A ;存大数n SJMP$nBIG1:n MOVX A,DPTR;第二数大n SJMP BIG0n END 开始设置指针DPTR初始值取第一个数存入R2
7、取第二个数后者减前者进位标志是否为0?存后者结束存前者图5-3 例4流程计算机与通信工程学院例例4-4:编制计算符号函数y=SGN(x)的程序nARE EQU 8040HnBUF EQU 8060HnORG 0000Hn JMP STARTnORG 0030HnSTART:n MOV DPTR,#AREn MOV A,#0F0Hn MOVX DPTR,AnLOOP:n MOV DPTR,#ARE ;进位位清零n MOVX A,DPTR ;取第一数n JZ SULn JB ACC.7,NEGn MOV A,#01HnSUL:n MOV DPTR,#BUFn MOVX DPTR,An JMP LO
8、OPnNEG:n MOV A,#0FFHn SJMP SULn END 计算机与通信工程学院4.3 循环程序设计n简单程序,每条指令只执行一次n分支程序则根据条件的不同,会跳过一些指令,执行另一些指令。n它们的特点是,每一条指令至多执行一次。n在处理实际事务时,有时会遇到多次重复处理的问题,用循环程序的方法来解决就比较合适。循环程序中的某些指令可以反复执行多次。n采用循环程序,使程序缩短,节省存储单元。重复次数越多,循环程序的优越性就越明显。n程序的执行时间并不节省。由于要有循环准备、结束判断等指令,速度要比简单程序稍慢些。计算机与通信工程学院循环程序组成n循环程序一般由五部分组成:n1、初始
9、化部分:n为循环程序做准备。n如:设置循环次数计数器的初值,地址指针置初值,为循环变量赋初值等。n2、处理部分:n为反复执行的程序段,是循环程序的实体。n3、修改部分:n每执行一次循环体后,对指针作一次修改,使指针指向下一数据所在位置,为进入下一轮处理作准备。n4、控制部分:n根据循环次数计数器的状态或循环条件,检查循环是否能继续进行,若循环次数到或循环条件不满足,应控制退出循环,否则继续循环。n通常2、3、4部分又称为循环体。n5、结束部分:n分析及存放执行结果。计算机与通信工程学院循环程序的结构n循环程序的结构一般有两种形式:n先进入处理部分,再控制循环。至少执行一次循环体。n先控制循环,
10、后进入处理部分。即先根据判断结果,控制循环的执行与否,有时可以不进入循环体就退出循环程序。计算机与通信工程学院主要语句n寻址方式n寄存器间接寻址nMOV A,RinMOVX A,DPTRnMOVX A,Rin基址寄存器+变址寄存器间接寻址nMOVC A,A+DPTRnMOVC A,A+PCn循环计数nDJNZ Rn,relnDJNE A,direct,relnJZ(JNZ,JC,JNC,JB,JNB)rel计算机与通信工程学院例例4-5 工作单元清零n将40H为起点的8个单元清“0”nORG 0000HnCLEAR:CLR A ;A清0n MOV R0,#40H ;确定清0单元起始地址n MO
11、V R7,#08 ;确定要清除的单元个数nLOOP:MOV R0,A ;清单元n INC R0 ;指向下一个单元n DJNZ R7,LOOP;控制循环n END计算机与通信工程学院例例4-5 工作单元清零n例如:设有50个外部RAM单元要清“0”,即为循环次数存放在R2寄存器中,其首址存放在DPTR中,设为2000H nORG 0000Hn MOV DPTR,#2000H nCLEAR:CLR An MOV R2,#32H ;置计数值nLOOP:MOVX DPTR,An INC DPTR ;修改地址指针n DJNZ R2,LOOP ;控制循环n END 计算机与通信工程学院例例4-5 工作单元
12、清零n写成通用子程序形式:nCLEAR:CLR AnLOOP:MOVX DPTR,An INC DPTR ;修改地址指针n DJNZ R2,LOOP ;控制循环n RETn完整调用n ORG 0000Hn MOV DPTR,#2000Hn MOV R2,#50n ACALL CLEARn SJMP$nCLEAR:CLR AnLOOP:n MOVX DPTR,An INC DPTR ;修改地址指针n DJNZ R2,LOOP ;控制循环n RETn END计算机与通信工程学院例例4-6 多个单字节数据求和n已知有n个单字节数据,依次存放在内部RAM 40H单元开始的连续单元中。要求把计算结果存入
13、R2,R3中(高位存R2,低位存R3)。n程序如下:n ORG 8000HnSAD:MOV R0,#40H ;设数据指针n MOV R5,#NUM ;计数值0AHR5nSAD1:MOV R2,#0 ;和的高8位清零n MOV R3,#0 ;和的低8位清零nLOOP:MOV A,R3 ;取加数n ADD A,R0n MOV R3,A ;存和的低8位n JNC LOP1 ;无进位,直接计算高8位n INC R2 ;有进位,和的高8位+1nLOP1:INC R0 ;指向下一数据地址n DJNZ R5,LOOPn RETnNUM EQU 0AHn END n上述程序中,用R0作间址寄存器,每作一次加法
14、,R0加1,数据指针指向下一数据地址,R5为循环次数计数器,控制循环的次数。计算机与通信工程学院例例4-7 测试字符串长度n设有一串字符依次存放在从50H单元开始的连续单元中,该字符串以回车符(0DH)为结束标志,测得的字符串长度存入R2中。n测字符串长度程序是将该字符串中的每一个字符依次与回车符相比,若比较不相等,则统计字符串长度的计数器加1。继续比较,若比较相等,则表示该字符串结束,计数器中的值就是字符串的长度。n程序如下:n ORG 0000HnCONT:MOV R2,#00H ;初始长度设置n MOV R0,#50H ;数据指针R0置初值nNEXT:CJNE R0,#0DH,LOOP1
15、n RETnLOOP1:INC R0n INC R2n SJMP NEXT nENDn待测字符以ASCII码形式存放在RAM中,回车符的ASCII码为0DH,程序中用一条CJNE R0,#0DH,LOOP指令实现字符比较及控制循环的任务,当循环结束时,R2的内容为字符串长度 计算机与通信工程学院例4-9 10秒延时程序n延时程序与MCS-51执行指令的时间有关,如果使用6MHz晶振,一个机器周期为2s,计算出执行一条指令以至一个循环所需要的时间,给出相应的循环次数,便能达到延时的目的。n程序如下:nDEL:MOV R5,#100nDEL0:MOV R6,#200nDEL1:MOV R7,#24
16、8nDEL2:DJNZ R7,DEL2 ;248*2+4n DJNZ R6,DEL1 ;(248*2+4)*200+4n DJNZ R5,DEL0 ;(248*2+4)*200+4)*100+4n RETn上例延时程序实际延时为10.000406秒。它是一个三重循环程序,利用程序嵌套的方法对时间实行延迟是程序设计中常用的方法。使用多重循环程序时,必须注意以下几点:n(1)循环嵌套,必须层次分明,不允许产生内外层循环交叉。n(2)外循环可以一层层向内循环进入,结束时由里往外一层层退出。n(3)内循环体可以直接转入外循环体,实现一个循环由多个条件控制的循环结构方式。计算机与通信工程学院例4-10
17、冒泡程序n MOV R6,#CNTn DEC R6n LOOPA:n MOV R0,#30Hn MOV A,R6n MOV R7,An CLR 20H.0n NEXT:n MOV A,R0n INC R0n CLR Cn SUBB A,R0n JC NXCHn MOV A,R0n DEC R0n XCH A,R0n INC R0n MOV R0,An SETB 20H.0nCNT EQU 07HnORG 0000Hn AJMP STARTnORG 0030HnSTART:n MOV DPTR,#LISTn MOV R0,#30Hn MOV R7,#CNTnLOOPD:n CLR An MOVC
18、 A,A+DPTRn MOV R0,An INC DPTRn INC R0n DJNZ R7,LOOPDnNXCH:n DJNZ R7,NEXTn JNB 20H.0,OVERn DJNZ R6,LOOPAnOVER:n AJMP$nLIST:DB 70H,13H,3H,90H,27H,32H,11Hnend计算机与通信工程学院例4-13 无符号数双字节乘法n R2 R3n R6 R7n-n R3 R7 n R2 R7n R3 R6n R2 R6n-n R4 R5 R6 R7计算机与通信工程学院例4-13 无符号数双字节乘法nORG 0000Hn AJMP MAINnORG 0030HnMAI
19、N:n MOV SP,#60HnSTART:n MOV R2,#0FFHn MOV R3,#0FFHn MOV R6,#0FFHn MOV R7,#0FFHn LCALL DBMULn AJMP STARTnDBMUL:n MOV A,R3n MOV B,R7n MUL ABn XCH A,R7n MOV R5,Bn MOV B,R2n MUL ABn ADD A,R5n MOV R4,An CLR An ADDC A,Bn MOV A,R5n MOV A,R6n MOV B,R3n MUL ABn ADD A,R4n XCH A,R6n XCH A,Bn ADDC A,R5n MOV R5,
20、An MOV F0,Cn MOV A,R2n MUL ABn ADD A,R5n MOV R5,An CLR An MOV ACC.0,Cn MOV C,F0n ADDC A,Bn MOV R4,An RETn END计算机与通信工程学院4.4 散转程序设计n散转程序是分支程序的一种。n它由输入条件或运算结果来确定转入各自的处理程序。n有多种方法能实现散转程序,但通常用逐次比较法,即把所有各个情况逐一进行比较,若有符合便转向对应的处理程序。n由于每一个情况都有判断和转移,如对n个情况,需要n个判断和转移,因此它的缺点是程序比较长。nMCS-51指令系统中有一条跳转指JMP A+DPTR,用它可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 06 第四 章程 设计
限制150内