第3章指令系统.ppt

第3章指令系统.ppt

ID:48744026

大小:310.00 KB

页数:34页

时间:2020-01-21

第3章指令系统.ppt_第1页
第3章指令系统.ppt_第2页
第3章指令系统.ppt_第3页
第3章指令系统.ppt_第4页
第3章指令系统.ppt_第5页
资源描述:

《第3章指令系统.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机原理 及接口技术第3章89C51单片机指令系统程序设计举例一简单程序设计举例二分支程序三循环程序四子程序设计举例五代码转换程序设计举例六运算类程序设计举例BACK一、简单程序设计举例例1:拆字。将片内RAM20H单元的内容拆成两段,每段四位。并将它们分别存入21H与22H单元中。程序如下:解:ORG2000HSTART:MOVR0,#21H;21H→R0MOVA,20H;(20H)→AANLA,#0FH;A∧#0FH→AMOV@R0,A;(A)→(R0)INCR0;R0+1(R0MOVA,20H;(20H)→ASWAPA,;A0~3←→A4~7ANLA,#0FH;

2、A∧#0FH→AMOV@R0,A;(A)→(R0)SJMP$例2:16位数求补。设16位二进制数在R1R0中,求补结果存于R3R2中。解:ORG1000HSTART:MOVA,R0CPLAADDA,#01HMOVR2,AMOVA,R1CPLAADDCA,#00HMOVR3,ASJMP$Back例1:片内RAMONE和TWO两个单元中存有两个无符号数,将两个数中的小者存入RES单元。程序如下:二、分支程序解:ORG1000HONEDATA22H;定义ONETWODATA23H;定义TWORESDATA30H;定义RESMOVA,ONESTART:CJNEA,TWO,BIGSJMPST

3、OREBIG:JCSTOREMOVA,TWOSTORE:MOVRES,ASJMP$Back三、循环程序例1:数据块传送。将片内RAM20H单元开始的10个字节,传送到片外RAM1000H单元开始的单元中去。解:程序如下:ORG0800HSTART:MOVR0,#20HMOVDPTR,#1000HMOVR7,#0AHLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOPSJMP$Back练习:1.将片外RAM2000H单元开始的20个字节,传送到片内RAM30H单元开始的单元中去。2.将片内RAM20H单元开始的10个字节,传送到片内RAM30

4、H单元开始的单元中去。3.将片内RAMBK1单元开始的COUNT个字节,传送到片外RAMBK2单元开始的单元中去。三、循环程序例2:统计字串长度。内存从STRING开始有一字串,该字串以$(ASCII码为24H)结束,试统计该字串长度,结果存于NUM单元中解:程序如下:ORG0800HNUMDATA20HSTRINGDATA21HSTART:CLRAMOVR0,#STRINGLOOP:CJNE@R0,#24H,NEXTSJMPCOMPNEXT:INCAINCR0SJMPLOOPCOMP:MOVNUM,ASJMP$Back四、子程序设计举例例1:用查表法编一子程序,将40H单元中的B

5、CD码转换成ASCII码。入口:待转换数在(40H)出口:转换后的数(40H)解:ORG1000HTAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HSUB1:MOVA,40HMOVDPTR,#TABMOVCA,@A+DPTRMOV40H,ARETBack若将30H单元BCD码转换成ASCII码,利用SUB1子程序。ORG2000HMAIN:MOV40H,30HLCALLSUB1MOV30H,40HSJMP$五、代码转换程序设计举例例1:R1中存有一个BCD码,编一子程序将其转换为ASCII码,存入片外RAM1000H单元中去。(直接转换)解:

6、ORG0100HBAS1:MOVA,R1ADDA,30HMOVDPTR,#1000HMOVX@DPTR,ARET例2:片外RAM2000H单元中有一BCD码,编一子程序将其转换成ASCII码。ORG0100HBAS2:MOVDPTR,#2000HMOVXA,@DPTRADDA,#30HMOVX@DPTR,ARETBack六、运算类程序设计举例例1:片内RAM30H单元开始有10个字节的二进制数。编一子程序,求它们的和。(和<256)将和存入20H单元中。解:方法1ORG1000HASUB1:MOVR0,#30HCLRAMOVR7,#10CLRCLOOP:ADDCA,@R0INCR0

7、DJNZR7,LOOPMOV20H,ARET方法2ORG2000HASUB2:MOVR0,#30HMOVA,@R0MOVR7,#09CLRCLOOP:INCR0ADDCA,@R0DJNZR7,LOOPMOV20H,ARET例2:编写将30H,31H单元中的两字节二进制数乘以2的程序(积小于65536)Back解:ORG1000HMSUB:CLRCMOVA,30HRLCAMOV30H,AMOVA,31HRLCAMOV31H,ARETBack七、延时程序设计举例查表注意到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。