教学课件微机原理(第2版)3.16 基本程序设计ppt(全).pptx

上传人:春哥&#****71; 文档编号:71827258 上传时间:2023-02-06 格式:PPTX 页数:30 大小:1.22MB
返回 下载 相关 举报
教学课件微机原理(第2版)3.16 基本程序设计ppt(全).pptx_第1页
第1页 / 共30页
教学课件微机原理(第2版)3.16 基本程序设计ppt(全).pptx_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《教学课件微机原理(第2版)3.16 基本程序设计ppt(全).pptx》由会员分享,可在线阅读,更多相关《教学课件微机原理(第2版)3.16 基本程序设计ppt(全).pptx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、教学课件微机原理(第2版)3.16 基本程序设计2学习内容:基本程序设计目标:掌握设计基础程序的方法第3章 8051指令系统和汇编程序设计3第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-21:数据块传送程序。设在以M为起始地址的内部RAM中存有100个单字节数,试编一程序,把这100个数传送到以N为起始地址的外部RAM中。3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计解:以R0做为源数据所在内部RAM地址的指针,R1做为目标外部RAM的地址指针,R2做为循环计数控制变量。编写循环程序实现数据传送。ORG 0100H START:MOV R0,#M MOV

2、R1,#NMOV R2,#64H LP:MOV A,R0 MOVXR1,A INC R0 INC R1 DJNZR2,LP SJMP$END3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计6第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-22:试求内部RAM 30H37H单元中8个无符号数的算术和,2字节结果存入38H,39H单元中。ORG 0100H START:MOV R3,#0 MOV R7,#7H MOV R0,#31H MOV A,30H 解:8个无符号数累加,相加次数由R7控制;相加过程的进位位(累加和的高字节内容)累计在R3中。3.5.2 基本程

3、序设计第3章 8051指令系统和汇编程序设计例3-22:试求内部RAM 30H37H单元中8个无符号数的算术和,2字节结果存入38H,39H单元中。解:8个无符号数累加,相加次数由R7控制;相加过程的进位位(累加和的高字节内容)累计在R3中。LOOP:ADD A,R0JNC NEXTINC R33.5.2 基本程序设计第3章 8051指令系统和汇编程序设计例3-22:试求内部RAM 30H37H单元中8个无符号数的算术和,2字节结果存入38H,39H单元中。解:8个无符号数累加,相加次数由R7控制;相加过程的进位位(累加和的高字节内容)累计在R3中。NEXT:INC R0DJNZ R7,LOO

4、PMOV 39H,R3MOV 38H,ASJMP$END9第3章 8051指令系统和汇编程序设计例3-23:设有16位二进制数存放在内部RAM的50H(高字节)及51H(低字节)单元中,要求将其算术左移一位(即原数各位均向左移1位,最低位移入0)后仍存放在原单元。3.5.2 基本程序设计3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计解:16位数据左移,要求将低字节的高位移到高字节的最低位,需要采用带C的循环左移指令。先将进位标志C清零,对低字节进行循环左移,此时C的内容0进入其最低位,其最高位进入C;再对高字节进行带C的循环左移,此时C(低字节的最高位)进入高字节的最低位,从而

5、实现16位数据的整体左移一位。ORG 0200HSTRAT:CLR C ;Cy清零 MOV A,51H RLC A ;低8位向左循环移1位 MOV 51H,A MOV A,50H ;高8位向左循环移1位 RLC A MOV 50H,A END3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计12第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-24:设变量x存在30H单元,按下式关系求函数y的值并存入31H单元。x+1 (x10)y=0 (10 x5)x1 (x5)解:要根据x的大小来决定y值,在判断x10时,采用CJNE和JC以及CJNE和JNC指令进行判断,用

6、R0暂存y的值。3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计14第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-24:设变量x存在30H单元,按下式关系求函数y的值并存入31H单元。方法方法1:汇编程序:汇编程序:ORG 1000H START:MOV A,30H ;取X CJNE A,#5,NEXT1;与5比较 NEXT1:JC NEXT2 ;X10,Y=X+1 CJNE A,#11,NEXT3;与11比较 3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计例3-24:设变量x存在30H单元,按下式关系求函数y的值并存入31H单元。方法1:汇

7、编程序:NEXT3:JNC NEXT4 ;X10,则转NEXT4 MOV R0,#0 ;10 x5,Y=0 SJMP NEXT4 NEXT2:MOV R0,A DEC R0 ;X10,则转NEXT2 MOV R0,A DEC R0 ;设X10,Y=X+1 CJNE A,#5,NEXT3;与5比较 3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计例3-24:设变量x存在30H单元,按下式关系求函数y的值并存入31H单元。方法2:汇编程序:NEXT3:JC NEXT4 ;X10,Y=X+1 NEXT4:MOV 31H,R0 ;存结果 RET END18第3章 8051指令系统和汇编程

8、序设计3.5.2 基本程序设计例3-25:在外部RAMBLOCK单元开始有一组带符号数的数据块,数据块长度存放在内存LEN单元中。试统计其中正数,负数和零的个数,并分别存入内存PCOUNT、MCOUNT和ZCOUNT单元中。3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计解:逐一取出每个数,首先判断该数为 正数或负数或0?为正数,则PCOUNT单元加1;为负数,则MCOUNT单元加1;为零,则ZCOUNT单元加1。20第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计判断一个数据是正数、负数和0的方法:1.先判是否为0,再根据最高位是0或1,判正负。MOVX A,DP

9、TR JZ ZERO ;0,转移到ZERO JB ACC.7,NEG ;负,转移到NEG POS:;正的处理3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计2.先判是否为0,然后与80H比较判正负。小于80H为正数,反之为负数。MOVXA,DPTR JZ ZERO ;0,转移到ZERO CJNE A,#80H,NEXT NEXT:JNC NEG ;负,转移到NEG POS:;正的处理22第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计(方法1:取出数,然后判断其最高位是1还是0)程序:BLOCK EQU 2000H;定义数据块首址 LEN EQU 30H ;定义长度

10、计数单元 PCOUNT EQU 3lH ;正计数单元 MCOUNT EQU 32H ;负计数单元 ZCOUNT EQU 33H ;零计数单元 ORG 0200HSTART:MOV DPTR,#BLOCK ;地址指针指向数据块首址 MOV PCOUNT,#0;MOV MCOUNT,#0 ;计数单元清0 MOV ZCOUNT,#0 ;LOOP:MOVX A,DPTR ;取一个数23第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计程序:JB ACC.7,MCON;若ACC.7=1,转负数个数1 JNZ PCON ;若(A)0,转正数个数1 INC ZCOUNT ;若(A)=0,则零的个

11、数加1 AJMP NEXT ;MCON:INC MCOUNT ;负计数单元加1 AJMPNEXT ;PCON:INC PCOUNT ;正计数单元加1NEXT:INC DPTR ;修正地址指针,指向下一个单元 DJNZ LEN,LOOP;未完继续 SJMP$END24第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计(方法2:取出数,与数值80H进行比较)程序:BLOCK EQU 2000H;定义数据块首址 LEN EQU 30H ;定义长度计数单元 PCOUNT EQU 3lH ;正计数单元 MCOUNT EQU 32H ;负计数单元 ZCOUNT EQU 33H ;零计数单元 O

12、RG 0200HSTART:MOV DPTR,#BLOCK ;地址指针指向数据块首址 MOV PCOUNT,#0;MOV MCOUNT,#0 ;计数单元清0 MOV ZCOUNT,#0 ;LOOP:MOVX A,DPTR ;取一个数25第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计 CJNE A,#80H,NEXT1 ;若(A)0,转正数个数1NEXT1:JNC MCON ;(A)80H,负计数单元加1 JZ ZCON ;若(A)=0,则零的个数加1 INC PCOUNT ;正计数单元加1 AJMP NEXT ;ZCON:INC ZCOUNT ;0计数单元加1NEXT:INC

13、DPTR ;修正地址指针,指向下一个单元 DJNZ LEN,LOOP ;未完继续 SJMP$END26第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-26:把内存中起始地址为DAT的数据串,传送到外部RAM以BUFFER为首 址的区域,直到发现“$”的ASCII码(24H)为止,数据串的长度在内存20H中。解:循环控制条件有2个。首先是找到“$”的ASCII码结束循环,属条件控制,也是循环主结构;其次是计数循环控制,即若找不到“$”的ASCII码,则由数据串的长度控制循环结束。3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计 DAT EQU 30H BUFFE

14、R EQU 1000H ORG 0100HSTART:MOV R0,#DAT ;内RAM首址 MOV DPTR,#BUFFER;外RAM首址 LOOP:MOV A,R0 CJNE A,#24H,LOOP2 ;判是否为$SJMP LOOP1 ;是$,则结束LOOP2:MOVX DPTR,A ;不是$,传送 INC R0 INC DPTR DJNZ 20H,LOOP ;数据串未查完,继续LOOP1:RET28第3章 8051指令系统和汇编程序设计3.5.2 基本程序设计例3-27:已知内部RAM从BLOCK单元开始有一个无符号数的数据块,其长度在LEN单元,试编程求出数据块中的最大值,并存入MAX

15、单元。ORG2000H MOVMAX,#00H;MAX清0 MOVR0,#BLOCK;R0指向数据块的首地址LOOP:MOVA,R0;取出数据块中数据送A CLRC ;C清0 SUBBA,MAX;(A)和(MAX)的数据相减,形成Cy JCNEXT ;若(A)(MAX),则大的数送MAXNEXT:INCR0 ;指向下一数据 DJNZLEN,LOOP END解:(方法1,利用减法指令)先将MAX单元清0,再把它和数据块中的数据逐一比较,若MAX中的数值大,则比较下一个,否则把数据块中的数据送入MAX后再进行下一个数的比较,直到每个数都比较完毕。用R0作为数据块的地址指针。29第3章 8051指令

16、系统和汇编程序设计3.5.2 基本程序设计例3-27:已知内部RAM从BLOCK单元开始有一个无符号数的数据块,其长度在LEN单元,试编程求出数据块中的最大值,并存入MAX单元。解:(方法2:利用比较指令)先将MAX单元清0,再把它和数据块中的数据逐一比较,若MAX中的数值大,则比较下一个,否则把数据块中的数据送入MAX后再进行下一个数的比较,直到每个数都比较完毕。用R0作为数据块的地址指针。3.5.2 基本程序设计第3章 8051指令系统和汇编程序设计 ORG 2000H MOVMAX,#00H;MAX清0 MOVR0,#BLOCK;R0指向数据块的首地址LOOP:MOVA,R0;取出数据块中数据送A CLRC ;C清0 SUBBA,MAX;(A)和(MAX)的数据相减,形成Cy JCNEXT ;若(A)(MAX),则大的数送MAXNEXT:INCR0 ;指向下一数据 DJNZLEN,LOOP END

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁