版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE62第4章STC15F2K60S2单片机的指令系统例题例4.1分析执行下列指令序列后各寄存器及存储单元的结果。MOVA,#30H
MOV4FH,AMOVR0,#20HMOV@R0,4FH
MOV21H,20HMOVDPTR,#3456H解:分析如下:MOVA,#30H ;(A)=30HMOV4FH,A
;(4FH)=30HMOVR0,#20H ;(R0)=20HMOV@R0,4FH ;((R0))=(20H)=(4FH)=30HMOV21H,20H
;(21H)=(20H)=30HMOVDPTR,#3456H ;(DPTR)=3456H所以执行程序段后:(A)=30H,(4FH)=30H,(R0)=20H,(20H)=30H,(21H)=30H,(DPTR)=3456H例4.2将扩展RAM2010H中内容送扩展RAM2020单元中,用KeilC集成开发环境进行调试。解:(1)编程如下: ORG 0MOVDPTR,#2010H;将16位地址2010H赋给DPTRMOVXA,@DPTR;读扩展RAM2010H中数据至累加器AMOVDPTR,#2020H;将16位地址2020H赋给DPTRMOVX@DPTR,A;将累加器A中数据送入外RAM2020H中END(2)按第4章所学知识,编辑文件与编译好上述指令,进入调试界面,设置好被传送地址单元的数据,如66H,如图4.6所示。图4.6程序执行前,设置2010H地址单元内容与2020H地址单元的状态单步或全速执行这4条指令,观察程序执行后2010H地址单元内容的变化。图4.7程序执行后,2010H地址单元内容与2020H地址单元内容的变化从图4.6和图4.7可知,传送指令执行后,传送目标单元的内容与被传送单元的内容一致,同时,被传送单元的内容也不会改变。例4.3将扩展RAM2000H中的数据送到片内RAM30H单元中去。解:编程如下:MOVDPTR,#2000H;将16位地址2000H赋给DPTRMOVXA,@DPTR;读扩展RAM2010H中数据至累加器AMOVR0,#30H;设定R0指针,指向基本RAM30H单元MOV@R0,A;扩展RAM2000H中的数据送到片内基本RAM30H单元例4.4将程序存储器2010H单元中的数据传送到累加器A中。(设程序的起始地址为2000H)解:方法一:ORG 2000H;伪指令,指定后面程序的存放起始地址MOVDPTR,#2000HMOVA,#10HMOVCA,@A+DPTR编程技巧:在访问前,必须保证(A)+(DPTR)等于访问地址,如该例中的2010H,一般方法是访问地址低8位值(10H)赋给A,剩下的16位地址(2010H-10H=2000H)赋给DPTR。编程与指令所在的地址无关。方法二:ORG 2000HMOVA,#0DHMOVCA,@A+PC分析:因为程序的起始地址为2000H,第一条指令为双字节指令,则第二条指令的地址为2002H,第二条指令的下一条指令的首字节地址应为2003H,即(PC)=2003H,因为(A)+(PC)=2010H,故(A)=0DH。因该指令与指令所在地址有关,不利于修改程序,故不建议使用。例4.5设(A)=40H,(B)=41H,分析执行下列指令序列后的结果。解:分析如下:MOVSP,#30H ;(SP)=30HPUSHA ;(SP)=31H,(31H)=40H,(A)=40HPUSHB ;(SP)=32H,(32H)=41H,(B)=41HMOVA,#00H;(A)=00HMOVB,#01H;(B)=01HPOPB ;(B)=41H,(SP)=31H,(B)=41HPOPA ;(A)=40H,(SP)=30H, (A)=40H执行后:(A)=40H,(B)=41H,(SP)=30H,A和B中的内容恢复原样。入栈操作、出栈操作主要用于子程序、中断服务程序中,入栈操作用来保护CPU现场参数,出栈操作用来恢复CPU现场参数。例4.6试编制4位十六进制数加法程序,假定和数超过双字节,要求如下:(21H)(20H)+(31H)(30H)→(42H)(41H)(40H)解:分析:先做低字节不带进位求和,再做带进位高字节求和,最后处理最高位。 (21H)(20H) +(31H)(30H)(42H)(41H)(40H)参考程序如下:ORG 0000HLJMP STARTORG 0100HSTART:MOVA, 20HADDA, 30H ;低字节不带进位加法MOV40H,AMOVA, 21HADDCA, 31H ;高字节带进位加法MOV41H,AMOVA,#00H ;最高位处理:0+0+(CY)ADDCA,#00HMOV42H,ASJMP$;原地踏步,作为程序结束命令END例4.7编制下列减法程序,设够减,要求如下:(31H)(30H)-(41H)(40H)→(31H)(30H)解:先做低字节不带进借位求差,再做高字节带借位求差。编程如下: ORG 0000HLJMP STARTORG 1000HSTART:CLRC` ;CY清零 MOVA,30H;取低字节被减数 SUBBA,40H;被减数减去减数,差存A MOV30H,A ;存差低字节 MOVA,31H;取高字节被减数 SUBBA,41H;被减数减去减数,差存A MOV31H,A;存差高字节 SJMP$ END例4.8试编制十进制数加法程序(单字节BCD加法),并说明程序运行后22H单元的内容是什么?运算要求如下:56+38→(22H)解:编程如下:ORG0000HLJMPSTARTORG1000HSTART:MOVA,#56H ADDA,#38H DAA MOV22H,ASJMP$ END分析如下:0101011056+001110003810001110+0110低4位加6调整1001010094所以,22H单元的内容为94H,即十进制数94(56+38)。例4.9编程实现单字节的十进制数减法程序,假定够减,要求:(20H)-(21H)→(22H)。解:51单片机指令系统中无十进制减法调整指令,减法的十进制运算,需要通过加法来实现的,即被减数加上减数的补数,再十进制加法调整既可。编程如下:ORG 0000HCLRCMOVA,#9AH;减数的补数为100-减数SUBBA,21HADDA,20H;被减数与减数的补数相加DAA;十进制加法调整MOV22H,A;存十进制减法结果SJMP$END例4.10将累加器A的1,3,5,7位清0,其它位置1,送入片内RAM20H单元中。解:编程如下: ANLA,#55H ;将A的1、3、5、7位清0 ORLA,#55H ;将A的0、2、4、6位置1 MOV20H,A例4.11设(A)=ACH,要求将第0、1位取反,第2、3位清零,第4、5为置“1”,第6、7位不变。解:编程如下: XRLA,#00000011B ;(A)=10101111 ANLA,#11110011B ;(A)=10100011 ORLA,#00110000B ;(A)=10110011例4.12编程将扩展RAM30H单元内容的高4位不变低4位取反,试编出它的相应程序。解:编程如下: MOVR0,#30H ;扩展RAM地址30H送R0 MOVXA,@R0 ;取RAM30H单元内容 XRLA,#0FH ;低4位与“1” MOVX@R0,A ;送回扩展RAM30H单元例4.13已知某单片机监控程序地址为2080H,试问您用什么办法可使单片机开机后自动执行监控程序。解:单片机开机后程序计数器PC总是复位成全0,即(PC)=0000H。因此,为使机器开机后能自动转入2080H处执行监控程序,则在0000H处必须存放一条如下指令:LJMP2080H例4.14将扩展RAM的一个数据块(首地址为DATA1)传送到内部基本RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。解:ORG0000HMOVR0,#DATA2;设置基本RAM指针MOVDPTR,#DATA1;设置扩展RAM指针LOOP1:MOVXA,@DPTR;取被传送数据JZLOOP2;不为0,数据传送,为0,结束传送MOV@R0,A;数据传送INCR0;修改指针,指向下一个操作数INCDPTRSJMPLOOP1;重新进入下一个传送流程LOOP2:SJMPLOOP2;程序结束(原地踏步)END例4.15编程实现如下功能:(A)>10H(R0)=01H(A)=10H(R0)=00H(A)<10H(R0)=02H解:编程如下:ORG 0000HCJNEA,#10H,NO_EQUALMOVR0,#00HSJMPHERENO_EQUAL:JCLESS MOVR0,#01H SJMPHERELESS:MOVR0,#02HHERE:SJMPHEREEND例4.16编程将扩展RAM1000H开始的100个单元中分别存放0~99。解:编程如下:ORG0000HMOVR0,#64H;设定循环次数 MOVA,#00H;设置预置数初始值 MOVDPTR,#1000H;设置目标操作数指针LOOP: MOVX@DPTR,A;对指定单元置数 INCA;预置数加1 INCDPTR;指向下一个目标操作数地址 DJNZR0,LOOP;判断循环是否结束SJMP$ END例4.17已知(SP)=60H,分析执行下列指令后的结果: ①1000H:ACALL 1100H ②1000H:LCALL 0800H解: ①(SP)=62H,(61H)=02H,(62H)=10H,(PC)=1100H ②(SP)=62H,(61H)=03H,(62H)=10H,(PC)=0800H例4.18试编程实现将位地址00H位内容和位地址7FH位内容相互交换的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026二年级上《长度单位》考点真题精讲
- 2026八年级下错题管理系统
- 2026六年级上《分数除法》同步精讲
- 2026 四年级下册《A field trip 野外活动》课件
- 验收组织委托书
- AI 摄影课程大纲
- 手术室器械清洗消毒规范
- 猫牙周炎治疗后护理方案细则
- 消防给排水试压检验技术交底
- 大型犬洗澡防滑措施规范门店制度
- 新能源汽车驱动电机及控制系统检修课件 项目三 电机控制器结构原理与检修
- 【品牌手册】无忧传媒品牌手册-市场营销策划-品牌营销案例与品牌手册
- 《敬老爱老美德永传》主题班会
- 部编版二年级下册语文 小马过河 4 教学课件
- (正式版)CB∕T 4551-2024 船用高处作业吊篮安全管理规定
- 心血管介入护士进修汇报
- 部编版《道德与法治》四年级下册第10课《我们当地的风俗》精美课件
- 心血管病科优势病种诊疗方案
- 光伏系统IV特性分析及深度学习建模研究
- 中国烟草总公司职工进修学院笔试试题2023
- 《中药量效关系》课件
评论
0/150
提交评论