文档详情

实验二程序设计实验.doc

发布:2017-06-06约1.78千字共4页下载文档
文本预览下载声明
电子科技大学中山学院学生实验报告 院别:电子信息学院 课程名称:微处理器实验 班级: 12电信A 姓名: 学号: 实验名称:二、程序设计实验 实验时间:2014年9月23日 成绩: 教师签名: 批改时间: 一、实验原理与目的 1掌握分支、循环结构程序以及子程序的设计方法。 2进一步熟悉Keil C51集成开发环境。 二、实验仪器 PC 机一台(带keil) 三、实验内容与分析 ①分支程序 ORG 0000H JMP MAIN ORG 0100H MAIN: MOV 30H, #20H MOV A, 30H JZ NEXT ;x 0,转移 ANL A, #80H ;保留符号位 JZ ED ;x 0 ,转移 MOV A, #05H ;x 0,不转移 ADD A, 30H MOV 30H, A SJMP ED NEXT: MOV 30H, #20H ED: SJMP $ ENDORG 0000H LJMP MAIN ORG 0100H MAIN:MOV R1,#20H MOV R3,#30 MOV DPTR,#TAB LOOP1: MOV A,#0 MOVC A,@A+DPTR MOV @R1,A INC R1 INC DPTR DJNZ R3,LOOP1 MAIN: MOV R0, #20H ;置取数指针R0初值 MOV B, #9H ;置循环计数器B初值 MOV A, @R0 ;第一个数送A LOOP: INC R0 ;修改指针 MOV R1, A ;暂存 XRL A, @R0 ;两数符号相同? JB ACC.7, LAT ;若相异,则转LAT MOV A, R1 ;若相同,则恢复A中原来值 CLR C ;C清零 SUBB A, @R0 ;两数相减,以判断两者的大小 JNB ACC.7, ;若A中值为大,则转CXA: MOV A, @R0 ;若A中值为小,则将大数送入A SJMP LAT: XRL A, @R0 ;恢复A中原值MOV A, R1 JNB ACC.7, ;若A中值为正,侧转 SJMP CXA ;若A中值为负,则转CXA : MOV A, R1 ;恢复A中原值 : DJNZ B, LOOP MOV 1FH, A ;最大者送1FH单元 SJMP $ TAB: DB 15,28,19,30,36 DB 38,9,25,16,20 DB 68,99,53,61,2 DB 11,18,39,85,22 DB 3, 51,26,10,1 DB 91,39,88,128,129 ENDORG 0000H JMP MAIN ORG 0100H MAIN: MOV R0, #20H ;置数据指针 MOV R1,#10 MOV @R0,#0 MOV A,#0 LOOP1: INC R0 INC A MOV @R0,A DJNZ R1, LOOP1 MOV R0, #20H ;置数据指针 MOV R7, #10 ;置计数初值 MOV R3, #0 ;结果单元清零 MOV R2, #0LOOP: MOV A, @R0 ;取数 ACALL SORT ;调用求平方子程序 ADD A, R2 ;累加平方和 MOV R2, A MOV A,R3 ADDC A, #0 ;加进位Cy MOV R3, A INC R0 ;修改指针 DJNZ R7, LOOP ;未完,继续 SJMP EN SORT: MOV DPTR, #TAB ;进入子程序查平方表 MOVC A, @A+DPTR RET TAB: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 EN: NOP END ☆验算:02+12+...+82+92 285,保存在r3、r2中,r3、r2表示的数是256+29 285(正确) 实验结论 学会了各种结构以及子程序的使用。 会使用堆栈传递参数。 更加熟练使用keil软件。
显示全部
相似文档