单片机综合实验 - 01 | 汇编程序设计二
Posted Neutionwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机综合实验 - 01 | 汇编程序设计二相关的知识,希望对你有一定的参考价值。
一、实验目的和任务
1、掌握分支、循环结构程序以及子程序的设计方法。
2、进一步熟悉Keil C51集成开发环境。
二、实验原理简介
在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。
本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。
三、实验内容和步骤
1、分支程序:是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。
设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下:
程序代码如下所示:
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
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
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
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
以上是关于单片机综合实验 - 01 | 汇编程序设计二的主要内容,如果未能解决你的问题,请参考以下文章