资源描述:
《第四章 汇编语言程序设计举例ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4汇编语言程序设计主要内容:★顺序结构程序★分支结构程序★循环结构程序★汇编语言程序举例重点与难点:掌握简单的顺序结构程序,分支结构程序,循环结构程序,子程序的编写。4.5.1汇编语言及其语句格式1、汇编语言这里介绍MCS-51单片机的汇编语言。2、汇编语言的语句格式一条汇编语言的语句包括四部分内容:标号、操作码、操作数和注释。其格式为:标号:操作码 操作数;注释例如:LOOP:MOVA,#20H;(A)←20H4.5.2伪指令1、定位伪指令格式:ORGn2、定义字节伪指令格式:标号:DBX1,X2,……Xn此伪指令的功能是把Xi存入从标号开始连续的单元中。4、定义双字节伪指
2、令格式:标号:DWX1,X2,……Xn此伪指令的功能是把Xi存入从标号开始的连续单元中。4、预留存贮区伪指令格式:DSnDSn从标号指定单元开始,预留n个单元的存贮区。5、赋值伪指令格式:字符名称xEQUn此指令的功能是将数据或地址n赋给字符名称。6、结束汇编指令格式:ENDEND指示源程序到结束,常将其放在汇编语言源程序的末尾。4.5.4汇编语言程序设计过程1、分析任务,确定算法或解题思路2、根据算法和解决思路画出程序流程图流程图是由一些框图和流程线组合而成:置的框图连接在一起,位于不同框图的圈内,应标注相同的字母。3、根据流程图编写程序4、上机调试程序4.5.4顺序结构程
3、序设计按照程序编写的顺序,依次执行。任何复杂的程序,都含有较大成份的顺序结构程序。【例4-8】将两位压缩BCD码转换成二进制数编程思路:(a1a0)BCD=a1×10+a0编程说明:待转换的两位压缩BCD码存放于R2,转换结果存回R2。程序流程图如图4-1所示。如图4-1两位压缩BCD码转换成二进制数编程如下:START:MOVA,R2ANLA,#0F0H;取高位BCD码SWAPAMOVB,#0AHMULABMOVR4,AMOVA,R2ANLA,#0FH;取低位BCD码ADDA,R4MOVR2,AEND4.4.5分支程序设计图4-2分支程序结构【例4-9】求符号函数的值1当X
4、>0Y=0当X=0的值。-1当X<0编程说明:设变量X存放在40H单元中,函数Y存放在41H单元中。此程序为三分支程序。程序流程图如图4-4所示。图4-4分支程序结构的流程图编程如下:START:MOVA,40HJZCOMPJNBACC.7,POSTMOVA,#0FFH;表示-1SJMPCOMPPOSI:MOVA,#01H;表示+1COMP:MOV41H,AEND【例4-10】求单字节有符号二进制数的补码。图4-3求单字节有符号二进制数的补码流程图编程如下:CMPT:MOVA,40HJNBACC.7,NCH;(A)≥0,不需要转换MOVC,ACC.7;保存符号MOV10H,C
5、;考虑为什么要将C中的数存入位地址10H。CPLAADDA,#1MOVC,10HMOVACC.7,C;恢复符号NCH:END图4-4散转程序的结构框图4.4.6散转程序设计图4-5中,K的最大值一般为128。【例4-1】用单片机作四则运算。编程说明:在单片机系统中,设置+、-、×、÷四个运算键,这四个运算键的键值分别为0、1、2、4(键值存放在寄存器R2中),当其中一个按键按下时,进行相应的运算。P1口输入被加数、被减数、被乘数或被除数,以及运算结果的低8位或商。P3口输入加数、减数、乘数或除数,以及结果的高8位或余数。键号存放在累加器A中。程序流程图如图4-6所示。图4-6
6、四则运算流程图参考程序如下:START:MOVP1,#0FFHMOVP3,#0FFHMOVDPTR,#TABLECLRCMOVA,R2SUBBA,#04HJNCERRORADDA,#04HCLRCRLA;正确的散转偏移号,键号×2JMP@A+DPTRTABLE:AJMPPRG0AJMPPRG1AJMPPRG2AJMPPRG4ERROR:(错误处理)PRG0:MOVA,P1ADDA,P3MOVP1,ACLRAADDCA,#00H;进位位放入A中MOVP3,ARETPRG1:MOVA,P1CLRCSUBBA,P3MOVP1,ACLRARLCA;借位放入A中MOVP3,ARETPR
7、G2:MOVA,P1MOVB,P3MULABMOVP1,AMOVP3,BRETPRG4:MOVA,P1MOVB,P4DIVABMOVP1,AMOVP4,BRET4-4循环程序结构图4-7循环结构程序流程框图【例4-12】已知内存单元有16个二进制无符号数,分别存放在40H~4FH中,试求它们的累加和,并将其和数存放在R4、R5中。编程说明:存放16个二进制无符号数的首地址为40H,此循环程序的循环次数为16次,和数放在R4、R5中。程序流程如图4-8。图4-816位无符号数的累加过程参考程序如下:STA