您好,欢迎访问三七文档
电子科技大学中山学院学生实验报告院别:电子信息学院课程名称:微处理器实验班级:12电信A姓名:学号:实验名称:二、程序设计实验实验时间:2014年9月23日成绩:教师签名:批改时间:一、实验原理与目的1掌握分支、循环结构程序以及子程序的设计方法。2进一步熟悉KeilC51集成开发环境。二、实验仪器PC机一台(带keil)三、实验内容与分析①分支程序5H20xxy000xxxORG0000HJMPMAINORG0100HMAIN:MOV30H,#20HMOVA,30HJZNEXT;x=0,转移ANLA,#80H;保留符号位JZED;x0,转移MOVA,#05H;x0,不转移ADDA,30HMOV30H,ASJMPEDNEXT:MOV30H,#20HED:SJMP$END☆,输入x=10,即x0,输出y=x②循环程序ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#20HMOVR3,#30MOVDPTR,#TABLOOP1:MOVA,#0MOVCA,@A+DPTRMOV@R1,AINCR1INCDPTRDJNZR3,LOOP1MAIN:MOVR0,#20H;置取数指针R0初值MOVB,#29H;置循环计数器B初值MOVA,@R0;第一个数送ALOOP:INCR0;修改指针MOVR1,A;暂存XRLA,@R0;两数符号相同?JBACC.7,LAT;若相异,则转LATMOVA,R1;若相同,则恢复A中原来值CLRC;C清零SUBBA,@R0;两数相减,以判断两者的大小JNBACC.7,AA;若A中值为大,则转AACXA:MOVA,@R0;若A中值为小,则将大数送入ASJMPBBLAT:XRLA,@R0;恢复A中原值MOVA,R1JNBACC.7,BB;若A中值为正,侧转BBSJMPCXA;若A中值为负,则转CXAAA:MOVA,R1;恢复A中原值BB:DJNZB,LOOPMOV1FH,A;最大者送1FH单元SJMP$TAB:DB15,28,19,30,36DB38,9,25,16,20DB68,99,53,61,2DB11,18,39,85,22DB3,51,26,10,1DB91,39,88,128,129END☆最大值:99③子程序ORG0000HJMPMAINORG0100HMAIN:MOVR0,#20H;置数据指针MOVR1,#10MOV@R0,#0MOVA,#0LOOP1:INCR0INCAMOV@R0,ADJNZR1,LOOP1MOVR0,#20H;置数据指针MOVR7,#10;置计数初值MOVR3,#0;结果单元清零MOVR2,#0CLRCLOOP:MOVA,@R0;取数ACALLSORT;调用求平方子程序ADDA,R2;累加平方和MOVR2,AMOVA,R3ADDCA,#0;加进位CyMOVR3,AINCR0;修改指针DJNZR7,LOOP;未完,继续SJMPENSORT:MOVDPTR,#TAB;进入子程序查平方表MOVCA,@A+DPTRRETTAB:DB0,1,4,9,16DB25,36,49,64,81EN:NOPEND☆验算:0²+1²+...+8²+9²=285,保存在r3、r2中,r3、r2表示的数是256+29=285(正确)四、实验结论1.学会了各种结构以及子程序的使用。2.会使用堆栈传递参数。3.更加熟练使用keil软件。
本文标题:实验二程序设计实验
链接地址:https://www.777doc.com/doc-2458822 .html