《第7章汇编语言程序设计.pdf》由会员分享,可在线阅读,更多相关《第7章汇编语言程序设计.pdf(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!第7章 汇编语言程序设计7.1 伪指令7.2 算术运算程序的设计7.3 循环程序的设计7.4 查表程序的设计7.5 检索程序的设计7.6 分支程序的设计7.7 码制转换程序的设计欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用2第7章 汇编语言程序设计程序设计是为了解决某一个问题,把指令(或语句)按照一定的意图有序地组合在一起。基于MCS-51单片机的程序开发设计方法:(1)汇编语言(2)高级语言,高级语言有采用C、BAS
2、IC、PLM等。大多数集成开发环境(Integrated Development Environment,IDE)都支持这2种开发形式。如:Keil Vision,支持8051汇编语言和C51。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用3汇编程序设计的步骤:(1)分析题目或课题的要求:解决什么问题,如何解决问题、有哪些可利用的资源、对计算精度的要求等;了解应用系统硬件的结构和功能与课题任务的关联。(2)确定解决问题的方案,画出程序流程框图;(3)根据解决方案,确定变量及其数据存储格式,给各个变量分配存储空间;
3、(4)根据程序流程图,选用合适的指令编写程序,完成源程序的设计;(5)在集成开发环境上调试,完成设计要求的功能。第7章 汇编语言程序设计欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用47.1 伪指令伪指令(Pseudo Instruction)是汇编语言中起解释说明的命令,它不是单片机的指令。伪指令的作用:在集成开发环境中向汇编系统说明(1)程序存储在程序存储器的哪个区域(2)本程序到何处结束(3)变量代号对应的单元地址或所代表的数值等。在汇编时,伪指令不会产生目标代码,不影响程序的执行。欢迎您阅读并下载本文档,
4、本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用57.1 伪指令常用的伪指令:(1)设置起始地址的伪指令ORGORG xxxxHORG 0100HSUBX:CLR CMOV A,R0SUBB A,R1MOV R0,ARET程序块从ROM的0100H单元开始存放欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用67.1 伪指令(2)赋值伪指令EQU变量代号 EQU 数值如:LEN EQU 20;在程序中变量LEN的值为20HXdata EQU 4F8BH;在程序中
5、变量Xdata的值为4F8BH欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用77.1 伪指令(3)定义字节数据伪指令DB标号 DB data单元地址 DB data定义指定的ROM单元内容为常数,而不是指令代码。如:2000HDB 30H;伪指令DB也可用来定义多个连续单元为常数,即用来定义一组单字节数据组成的常数表。如:ORG 1000HDB 30H,31H,32H,33H,34H,35H,36H欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片
6、机原理与应用87.1 伪指令(4)定义双字节数据伪指令DW标号 DWdata16地址DWdata16定义指定的2个连续的ROM单元内容为常数,而不是指令代码。如:ORG 3000HDATA:DW 0FDE1HDATAA:DW 1345,2241,34556欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用97.1 伪指令(5)位地址赋值伪指令BIT变量代号BIT 位地址在程序中定义位逻辑变量。如:CSBITP2.0FLAG BIT20H.6(6)汇编结束伪指令ENDEND表示程序块到此结束,END之后不属于本程序块,
7、编译系统不予处理。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用7.2 算术运算程序的设计例1 多字节二进制加法。CyCyCyCy0ADDCADDCADDC进位处理核心:单字节加法,3次欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.2 算术运算程序的设计子程序:入口:R0、R1分别指出加数所在单元的地址;出口:R0指出和所在单元的地址,进位在Cy中;BIN_ADD:MOV A,R0;ADDC A,R1MOV R0,AINC R0INC R1RET2021/6/2
8、4单片机原理与应用11主程序:MOV R0,#20HMOV R1,#30HMOV R5,#03HCLR CDOAD:ACALL BIN_ADDDJNZ R5,DOADCLR AADDC A,R0MOV R0,ARET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用127.2 算术运算程序的设计例2 多位十进制数加法。DA ADA ADA AADDCADDCADDC进位处理核心:2位十进制数加法,3次欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.2 算术运算程序的设
9、计子程序:入口:R0、R1分别指出加数所在单元的地址;出口:R0指出和所在单元的地址,进位在Cy中;BCD_ADD:MOV A,R0;ADDC A,R1DA AMOV R0,AINC R0INC R1RET2021/6/24单片机原理与应用13主程序:MOV R0,#20HMOV R1,#30HMOV R5,#03HCLR CDOAD:ACALL BCD_ADDDJNZ R5,DOADCLR AADDC A,R0MOV R0,ARET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用147.2 算术运算程序的设计例3
10、 多字节二进制减法。CyCyCy0ADDCADDCADDC核心:2位十进制数加法,3次欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.2 算术运算程序的设计子程序:入口:R0、R1分别指出加数所在单元的地址;出口:R0指出和所在单元的地址,进位在Cy中;BIN_SUB:MOV A,R0;SUBB A,R1MOV R0,AINC R0INC R1RET2021/6/24单片机原理与应用15主程序:MOV R0,#20HMOV R1,#30HMOV R5,#03HCLR CDO:ACALL BIN_SUBDJNZ R5,DORET欢迎您阅读并下载本
11、文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用167.2 算术运算程序的设计例4 多位十进制减法2位十进制数减法算法:XYX100Y X9AHY算法2步:(1)求十进制减数的补码:9AY(2)十进制加法,舍弃进位78-26=5278-26=78+9A-26=78+74=152欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用177.2 算术运算程序的设计例4 多位十进制减法6位十进制数减法算法:XYX1000000Y X99999AHY算法2步:(1)求
12、十进制减数的补码:99999AHY(2)十进制加法,舍弃进位欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.2 算术运算程序的设计2021/6/24单片机原理与应用18357289-238725=11856499999A238725761375118564357289761375101进位欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用1999999A238725761375118564357289761375101进位Cy9A 9A 9A238725761375欢
13、迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用207.2 算术运算程序的设计(1)2位十进制数减法子程序:入口:R0、R1分别指出被减数、减数所在单元的地址出口:R0指出差所在单元的地址,进位在Cy中;SH_SUB:MOV A,#9AHSUBB A,R1ADD A,R0DA AMOV R0,AINC R0INC R1CPL CRET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用217.2 算术运算程序的设计(2)6位十进制数加法程序:
14、MOV R0,#20HMOV R1,#30HMOV R5,#03HCLR CDOSUB:ACALL SH_SUBDJNZ R5,DOSUBRET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!XYH3XYH2XYH1XHXLYHYLXHXLYHXHXLYLXYL3XYL2XYL1XYH3XYH2XYH1XYL3XYL2XYL1XY3XY2XY1XY42021/6/24单片机原理与应用227.2 算术运算程序的设计例5 多字节数二进制乘法欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单
15、片机原理与应用237.2 算术运算程序的设计例6 多字节二进制除法2个多字节无符号二进制数的除法算法:采用移位和减法运算实现,过程与进行十进制数除法相似,每次进行除法运算时,如果余数大于减数(够减)则商1,否则,商0。算法要求被除数的高八位数据必须小于除数,否则,作为溢出处理,子程序把标志位OV的状态置为1,从子程序返回。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用247.2 算术运算程序的设计除法程序流程图Y被除数的高八位大于除数开始置溢出标志结束除法(移位)次数余数左移一位保留余数移出的最高位余数的高八位减
16、去除数够减否?差为余数的高八位商1商0除法完?四舍五入处理结束清溢出标志YNYNN欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用257.3 循环程序的设计(一)循环结构的组成循环结构由4部分组成:初始化部分、循环处理部分、循环控制部分和循环结束部分。开始初始化循环处理修改控制变量循环结束?结束结束部分循环结构组成欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用267.3 循环程序的设计汇编语言程序设计中常见的典型循环结构开始初始化循环
17、处理修改变量循环结束?结束结束部分YNNY开始初始化修改变量循环结束?结束处理部分结束部分(1)先处理后判断的结构(2)先判断后处理的结构欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用277.3 循环程序的设计例7 设单片机系统采集的8个单字节数据存储在单片机内部RAM的30H开始的连续单元中,求它们的均值。平均值的公式为第i个数据,N为数据的个数。要计算出均值要2种运算:(1)求和,算法如下:=0,=0=+,=1,2,(2)求平均值/11NiixxN欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除
18、!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用287.3 循环程序的设计开始存放数据的首地址取数据xiS=S+xi累加结束?结束修改存储单元地址YN数据个数总和 S清零多个数据求总和的流程图(1)求和欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用29开始存放数据的首地址取数据xiS=S+xi累加结束?结束修改存储单元地址YN数据个数总和S清零SIGMA:MOV R1,#30H;数据区首地址MOV R5,#00H;总和单元清零MOV R6,#00H;MOV R4,#08H;数据个数SIGMA1:
19、MOV A,R1;取数据ADD A,R6;求和MOV R6,ACLR AADDC A,R5MOV R5,AINC R1;DJNZ R4,SIGMA1;RET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用307.3 循环程序的设计(2)求均值(N=8)8(2)2)2xsss除以2:右移除以2实现。R5和R6中存总和,R5存高8位MEAN:MOV R4,#03HDIV2:MOV A,R5 ;CLR CRRC AMOV R5,A;商高8位MOV A,R6 ;低8位RRC AMOV R6,A ;商低8位DJNZ R4,D
20、IV2RET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.3 循环程序的设计8个单字节数据求均值的程序:ACALL SIGMACALL MEANRET2021/6/24单片机原理与应用31欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用327.3 循环程序的设计例8 设有一个字符串以回车符(ASCII码为0DH)为结束标志,存放在内部RAM的40H单元开始的连续存储单元中,编写测试字符串长度的程序。NY开始字符串存储首地址是0DH(回车)?结束长度计数器加1长度计
21、数器清0取字符存储单元地址1测试字符串长度的程序流程框图欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.3 循环程序的设计MOV R7,#00H ;长度计数初值MOV R0,#40H;LOOP:MOV A,R0CJNE A,#0DH,NONRET;是回车符,则结束NON:INC R7 ;长度计数器加1INC R0 ;修改单元地址SJMP LOOP2021/6/24单片机原理与应用33NY开始字符串存储首地址是0DH(回车)?结束长度计数器加1长度计数器清0取字符存储单元地址1欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将
22、竭诚为您提供优质的文档!2021/6/24单片机原理与应用347.4 查表程序的设计查表程序是一种单片机应用系统中常用的程序,(1)显示时,利用查表程序提取字型编码;(2)数值运算时,利用查表程序可以避免进行复杂的程序;(3)运算或转换运算,利用查表程序完成数据插补、修正、计算、转换等。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用357.4 查表程序的设计例9 设字符09、AF的ASCII码已作为常数存储在程序存储器中,编写程序由给定x(00 0FH)查找其对应的ASCII码。301050H311051H321
23、052H331053H341054H351055H361056H371057H381058H391059H41105AH42105BH43105CH44105DH45105EH461056H0123456789ABCDEF地址ASCIIx欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用36301050H311051H321052H331053H341054H351055H361056H371057H381058H391059H41105AH42105BH43105CH44105DH45105EH461056H012
24、3456789ABCDEF地址ASCIIx存储ASCII码的单元地址与x的关系为:ASC_TABx。7.4 查表程序的设计欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用377.4 查表程序的设计CHECHUP:MOV DPTR,#ASC_TAB;表的首地址MOV A,R2;取xMOVC A,A+DPTR;取ASCII码MOV R2,A;存ASCII码RETASC_TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H欢迎您阅读并
25、下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用387.4 查表程序的设计3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节x单字节Y(任意长度)存储单元地址与x的关系为:TABx00010203040506FCFDFEFFx欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用397.4 查表程序的设计CHECHUP:MOV DPTR,
26、#ASC_TAB;表的首地址MOV A,R2;取xMOVC A,A+DPTR;取ASCII码MOV R2,A;存ASCII码RETASC_TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用407.4 查表程序的设计3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节
27、x双字节Y361007H单元地址与x的关系为:第1个字节:TAB2x第2个字节:TAB2x+1x0例10 设一列双字节常数存储在程序存储器中,编写程序由给定x查找其对应常数。1237E7F欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.4 查表程序的设计2021/6/24单片机原理与应用41CHECHUP:MOV DPTR,#LIM_TAB;表的首地址MOV A,R2;取xADD A,R2;计算 2xMOV R2,A;暂存于R2中MOVC A,A+DPTR;取第1个字节MOV R3,A;第1个字节存于R3中INC R2;MOV A,R2MOVC
28、 A,A+DPTR;取第2个字节MOV R4,A;第2个字节存于R4RETLIM_TAB:DW 3233,26,1020,2435,423,267,200,欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用427.4 查表程序的设计单字节x双字节Y(任意长度)3F1000H231001H881002H331003H541004H671005H361006HFF11FCHDB11FDHE711FEH6711FFH地址数据012361007H3FEFF存储单元地址与x的关系为:第一个字节:TAB2x第一个字节:TAB2x
29、+10123FEFFx欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用43CHECHUP:MOV DPTR,#TAB;表的首地址MOV A,R2;取xMOV B,#02MUL AB;计算2 xADD A,DPLMOV DPL,AMOV A,BADDC A,DPH;计算TAB+2 x在DPTR中MOV DPH,ACLR AMOVC A,A+DPTR;取第1个字节MOV R3,A;第1个字节存于R3中INC DPTR;TAB+2 x+1CLR AMOVC A,A+DPTR;取第2个字节MOV R4,A;第2个字节存于R
30、4RETTAB:DW 3233,26,1020,2435,423,267,200,欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用44双字节x双字节Y(任意长度)3F1000H231001H881002H331003H541004H671005H361006HFFxxxxHDBXXXX+1HE7YYYYH67YYYY+1H地址数据000000010002361007H0003RRRRHHHH7.4 查表程序的设计存储单元地址与x的关系为:第一个字节:TAB2x第一个字节:TAB2x+1000000010002000
31、3RRRRHHHHx例11 设一列300个双字节常数存储在程序存储器中,编写程序由给定x查找其对应常数。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CONVT:MOV DPTR,#TABMOV A,R3 ;x存在(R2)(R3)ADD A,R3;计算2xMOV R3,AMOV A,R2ADDC A,R2MOV R2,A ;2x存(R2)(R3)MOV A,DPLADD A,R3MOV DPL,AMOV A,R2ADDC A,DPHMOV DPH,A ;TAB+2x存DPTR2021/6/24单片机原理与应用45CLR AMOVC A,A+DPT
32、R;第1字节MOV R4,A ;存第1字节INC DPTR;TAB+2x+1CLR AMOVC A,A+DPTR;第1字节MOV R5,A;存第1字节RETTAB:DW 0304H,0420H,DW 0523H,7.4 查表程序的设计欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用467.4 查表程序的设计3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址数据单字节x3字节Y361007H012361008H
33、29存储单元地址与x的关系为:第一个字节:TAB3x第二个字节:TAB3x+1第三个字节:TAB3x+2欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用477.5 检索程序的设计数据检索为关键字查找。通常有两种方法:(1)顺序检索(2)对分检索。本节介绍顺序检索,对分检索请参阅相关资料。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用487.5 检索程序的设计例12 设内部RAM有一单字节无符号数数据块,存储在以30H单元为首地址的区域
34、中。长度为50个字节,试编程找出其中最小的数,并放在20H单元。Y开始设置比较次数设置数据块存储区首地址取第一个数据作为最小数修改存储单元地址取数据比最小数小新数据作为最小数比较完否?结束NYN欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.5 检索程序的设计2021/6/24单片机原理与应用49Y开始设置比较次数设置数据块存储区首地址取第一个数据作为最小数修改存储单元地址取数据比最小数小新数据作为最小数比较完否?结束NYNMOV R7,#50;比较次数MOV R0,#30H ;置数据块首地址MOV A,R0MOV 20H,A ;取第1个为最小
35、数LOOP1:INC R0 ;修改地址MOV A,R0;取数CJNE A,20H,LOOP;与最小数比较LOOP:JNC LOOP2 ;若不小于小数继续MOV 20H,A;小于最小数,则替换LOOP2:DJNZ R7,LOOP1;比较完否?RET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用507.5 检索程序的设计例13 从一个字符串找出一个A的关键字,字符串的结束标志为EOF。设字符串存放在20H单元开始的区域,字符以ASCII码形式存储,找到关键字标志位F0置1,否则清0。开始设置字符串存储区首地址清标志位
36、F0取字符是EOF?置标志位F0为1是A?结束NY结束修改存储单元地址NY欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.5 检索程序的设计INDEX:MOV R1,#20HCLR F0NEXT:MOV A,R1CJNE A,#EOF,GOONRETGOON:CJNE A,#A,NONSETB F0RETNON:INCR1SJMP NEXT2021/6/24单片机原理与应用51开始设置字符串存储区首地址清标志位F0取字符是EOF?置标志位F0为1是A?结束NY结束修改存储单元地址NY欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除
37、!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用527.6 分支程序的设计分支程序主要是根据判断条件的成立与否来确定程序的走向。(1)简单分支结构开始程序段0程序段1条件满足?结束Y程序段2程序段3N开始程序段0程序段1条件满足?结束程序段2NY开始程序段1程序段2条件满足?结束NY欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用537.6 分支程序的设计(2)多分支选择结构当程序的判别部分有两个以上的出口流向时,称为多分支选择结构。程序段3开始程序段0条件1成立?结束N条件2成立?程序段1Y程序
38、段2YN欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用547.6 分支程序的设计例14 x和y为2个带符号单字节数据,以原码方式存放,编制程序求它们的乘积。开始符号运算取绝对值符号相异?结束Y绝对值相乘取绝对值绝对值相乘置乘积符号为负N欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.6 分支程序的设计2021/6/24单片机原理与应用55开始符号运算取绝对值符号相异?结束Y绝对值相乘取绝对值绝对值相乘置乘积符号为负Nx、y放在40H、41H单元,乘积存R4、R3中
39、。MOV A,40H;取xXRL A,41H;符号运算JB ACC.7,DIFF;符号相异,转移MOV A,40HANL A,#01111111B;取绝对值MOV B,41HANL B,#01111111B;取绝对值MUL ABMOV R3,AMOV R4,B;存乘积RET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.6 分支程序的设计2021/6/24单片机原理与应用56开始符号运算取绝对值符号相异?结束Y绝对值相乘取绝对值绝对值相乘置乘积符号为负NDIFF:MOV A,40H;ANL A,#01111111B;取绝对值MOV B,41HA
40、NL B,#01111111B;取绝对值MUL ABMOV R3,AORL B,#10000000B;相异,符号负MOV R4,B;存高八位RET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用577.6 分支程序的设计例15 设变量x的值存放在内部RAM的30H单元中,编程求解下列函数式,将求得的函数值存入40H单元。1001100100101xxxxxy开始取xx 10结束Yx=10转移MOV A,30H;x10DEC A;x 1MOV 40H,ARET2021/6/24单片机原理与应用58开始取xx 10结束
41、Yx 1000y1 xyN1 xyYN欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.6 分支程序的设计GT10:MOV A,30HSUBB A,#100JC LS100 ;x=100INC AMOV 40H,A;x+1RETLS100:MOV 40H,#00RET2021/6/24单片机原理与应用59开始取xx 10结束Yx 09H开始取 ASCII码xx-30H xNx-07 xYRETASCII代码转换十六进制数7.7 码制转换程序的设计欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.7
42、码制转换程序的设计子程序:ASCII码在R1中,转换结果也在R1中ASC2HEX:MOV A,R1CLR C ;清进位标志位CSUBB A,#30H;ASCII码减去30HMOV R1,A ;SUBB A,#0AH;JC DONE ;若差9,转换结束XCH A,R1SUBB A,#07H ;差9,MOV R1,ADONE:RET2021/6/24单片机原理与应用72x 09H开始取ASCII 码xx-30H xNx-07 xYRET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.7 码制转换程序的设计2021/6/24单片机原理与应用732个A
43、SCII码存在R5和R6中,转换结果存在R4中ASCNT:MOV A,R5;取第1个ASCII码MOV R1,ALCALL ASC2HEXMOV A,R1;第1个转换结果SWAP AMOV R4,A;十六进制数的高位MOV A,R6;取第2个ASCII码MOV R1,ALCALL ASC2HEXMOV A,R1;第2个转换结果ORL A,R4;组装2位十六进制数MOV R4,ARET欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用74x 09H开始取 16 进制数xx+30HNx+37HYRET1位十六进制数转换ASCII代码7.7 码制转换程序的设计十六进制数转换为ASCII码的方法欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用757.7 码制转换程序的设计(三)ASC1I码与十进制数(BCD码)的转换程序设计开始取 ASCII码xx-30HRET开始取 BCD 码xx+30HRETASC1I码与BCD码BCD码与ASC1I码欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2021/6/24单片机原理与应用76end
限制150内