单片机实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告(二)
姓名:赵苑珺
学号:090250129
实验三程序设计(二)
一、实验目的
1、了解汇编语言程序设计与调试的过程;
2、掌握循环程序、查表程序和子程序的特点及设计。
二、实验内容
1、循环程序的设计、输入、调试和运行;
2、查表程序的设计、输入、调试和运行;
3、子程序的设计、输入、调试和运行。
三、实验步骤
1、排序程序:将N 个数从小到大排列起来。
设R0 的内容为数据区的首地址,R7 的内容为数据的字节数。参考程序为:MOV R0,#30H ;将序列首地址存入R0中
MOV R7,#10 ;将序列长度存入R7中
SS: MOV A,R7
MOV R2,A
MOV 60H,R0 ;将序列首地址存入60H
NN: DEC R2 ;循环程序,控制排序次数
MOV A,R2
MOV R3,A
MOV R0,60H
L1: MOV A,@R0 ;将序列第一个数存入A中
INC R0 ;R0加1,指向第二个位置
CLR C ;清除进位标志位C,为比较两数大小做准备
SUBB A,@R0 ;第一个数减去第二个数
JC MM ;判断C的状态,1(代表数1小于数2)跳至MM,0(代表数
1大于数2)继续执行
MOV A,@R0 ;将第二个数存入累加器A中
DEC R0 ;R0指向第一个位置
XCH A,@R0 ;将A中的数(数1)与R0指向的数(数2)交换
INC R0 ;R0减一,指向位置一
MOV @R0,A ;将A中的数2存到位置一内
SETB F0 ;置位用户标志位,表示有交换
MM: DJNZ R3,L1 ;R3减一不为零则跳至L1,否则继续执行程序
MOV A,R2
CJNE R2,#01H,L2 ;判断R2中的数是否已经减为1,是跳至JJ,否跳至L2
SJMP JJ
L2: JB F0,NN ;判断F0状态,若为1(有交换)则跳至NN,否则继续进行JJ: MOV R0,60H ;将序列首地址存入R0
END
向30H~39H单元中输入数据,运行程序,观察30H~39H 单元中的内容,分析结果是否正确。
2、查表程序
设计一程序,将16 进制数转换为对应的ASCII 码。设16 进制数放在R6 中,转换结果
放在R7 中。参考程序如下:
ORG 0000H
MOV A,R6 ;将要转换的16进制数存入A中
ANL A,#0FH ;将A的低位提取出来
MOV DPTR,#0030H ;将DPTR指向转换表的首地址
MOVC A,@A+DPTR ;进行查表,采用基址加变址寻址方法
MOV R7,A ;将转换结果放在R7中
ORG 0030H
TAB: DB ‘012345678’;建立转换表
DB ‘9ABCDEF’
END
输入设计好的程序检查无误后,汇编。向R6 中输入多个不同的ACSII 码,运行程序,
观察R7 中的内容,分析运行结果是否正确。
3、双字节原码加减法程序
功能:(R2R3)±(R6R7)→(R4R5)
加减和求补过程采用子程序。参考程序如下:
ORG 0000H
DSUB: MOV A,R6
CPL ACC.7
MOV R6,A
DADD:MOV A,R2
MOV C,ACC.7
MOV F0,C
XRL A,R6
MOV C,ACC.7
MOV A,R2
CLR ACC.7
MOV R2,A
MOV A,R6
CLR ACC.7
MOV R6,A
JC DAB2
ACALL NADD
MOV A,R4
JB ACC.7,C
DAB1:MOV C,F0
MOV ACC.7,C
MOV R4,A
AJMP HERE
DABE:SETB C
AJMP HERE
DAB2:ACALL NSUB1
MOV A,R4
JNB ACC.7,DAB1
ACALL CMPT
CPL F0
SJMP DAB1
HERE:SJMP HERE
ORG 0030H
NADD:MOV A,R3
ADD A,R7
MOV R5,A
MOV A,R2
ADDC A,R6
MOV R4,A
RET
NSUB:MOV A,R3
CLR C
SUBB A,R7
MOV R5,A
MOV A,R2
SUBB A,R6
MOV R4,A
RET
CMPT:MOV A,R5
CPL A
ADD A,#1
MOV R5,A
MOV A,R4
CPL A
ADD A,#00H
MOV R4,A
RET
END
输入设计好的程序检查无误后,汇编。向R2R3 和R6R7 中输入多个不同的数据,运行
程序,单步运行程序时,观察程序的运行过程。程序运行结束后,观察R4R5 中的内容,分
析运行结果是否正确。