中山学院单片机综合实验报告-汇编程序设计二 下载本文

内容发布更新时间 : 2024/12/24 20:57:51星期一 下面是文章的全部内容请认真阅读。

电子科技大学中山学院学生实验报告

院别:电子信息学院 课程名称:单片机综合实验 实验名称 成绩 汇编程序设计二 报 告 内 容 一、实验目的和任务 1、掌握分支、循环结构程序以及子程序的设计方法。 2、进一步熟悉Keil C51集成开发环境。 二、实验原理简介 在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。 本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。 三、实验内容和步骤 实验时间 批改时间 1、分支程序:是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。 设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下: x?0?x?y??20H x?0 ?x?5x?0?程序代码如下所示: ORG 0000H JMP MAIN ORG 0100H MAIN: MOV 30H,#0H MOV A,30H JZ NEXT ANL A,#80H JZ ED MOV A,#05H ADD A,30H MOV 30H,A ;(30H)=20H SJMP ED NEXT: MOV 30H,#20H 1

ED: SJMP $ END 2、循环程序:循环程序一般包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。 设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,数组长度为30,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中。 程序代码如下所示: ORG 0000H JMP MAIN ORG 0100H MAIN: MOV R0,#20H MOV A,#0 MOV R1,#30 MOV DPTR,#TAB LOOP1: PUSH ACC MOVC A,@A+DPTR MOV @R0,A POP ACC INC R0 INC A DJNZ R1,LOOP1 MOV R0,#20H MOV B,#29 MOV A,@R0 LOOP: INC R0 MOV R1,A XRL A,@R0 JB ACC.7,LAT MOV A,R1 CLR C SUBB A,@R0 JNB ACC.7,AA NOP CXA: MOV A,@R0 SJMP BB LAT: XRL A,@R0 JNB ACC.7,BB SJMP CXA AA: MOV A,R1 2

BB: DJNZ B,LOOP MOV 1FH,A TAB: DB -7,9,34,11,-43 DB -27,29,4,21,-13 DB -17,19,24,41,-23 DB -37,49,14,31,-53 DB -47,59,54,51,-54 DB -57,69,44,61,-45 END 3、子程序:同一个程序中,往往有许多地方都需要执行同一任务,这时可对这项任务独立编写。 实验内容:设0、1、...、9存放在内部RAM的20H开始的存储区域内,对其进行平方运算,计算所得结果存放在R3、R2中。要求:平方运算编写成子程序SORT,主程序通过调用SORT并求和完成运算。参数的传递用累加器。 ORG 0000H JMP MAIN ORG 0100H MAIN: MOV R1,#20H MOV R2,#10 MOV A,#0 LOOP1: MOV @R1,A INC R1 INC A DJNZ R2,LOOP1 MOV R0,#20H MOV R7,#10 MOV R3,#0 MOV R2,#0 CLR C LOOP: MOV A,@R0 ACALL SORT ADD A,R2 MOV R2,A MOV A,R3 ADDC A,#0 MOV R3,A INC R0 DJNZ R7,LOOP SJMP EN 3