实验二程序设计实验.doc
文本预览下载声明
电子科技大学中山学院学生实验报告
院别:电子信息学院 课程名称:微处理器实验
班级: 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软件。
显示全部