0
点赞
收藏
分享

微信扫一扫

单片机综合实验 - 01 | 汇编程序设计二


一、实验目的和任务

1、掌握分支、循环结构程序以及子程序的设计方法。

2、进一步熟悉Keil C51集成开发环境。

二、实验原理简介

在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。

本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。

三、实验内容和步骤

1、分支程序:是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。

设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下:


单片机综合实验 - 01 | 汇编程序设计二_汇编语言

程序代码如下所示:

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

举报

相关推荐

0 条评论