哈工大单片机实验报告(上传) 联系客服

发布时间 : 星期三 文章哈工大单片机实验报告(上传)更新完毕开始阅读07bd99540b4e767f5bcfce36

四、实验过程

本实验主要应用与语句ANL对高四位进行屏蔽,利用SWAP语句将2000H低四位交换到高四位,再用或ORL语句将2000H和2001H的高低四位组合在一起送入2002H中,从而实现两个数低四位组合。

五、实验结果及分析

拼字前 拼字后

【问题回答】本实验运行程序后2002H内容为34H,即2000H单元中低四位“3”作为2002H的高四位,2001H的低四位“4”作为2002H的低四位。

六、实验源程序

ORG 0000H

AJMP MAIN ORG 0680H

MAIN: MOV DPL, #00H

MOV DPH, #20H MOVX A, @DPTR ANL A, #0FH SWAP A MOV B, A INC DPTR MOVX A, @DPTR ANL A, #0FH ORL A, B INC DPTR MOVX @DPTR, A END

-4-

实验四 数据区传送子程序

一、实验目的

掌握RAM中的数据操作。

二、实验内容

把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。

三、程序框图

四、实验过程

实验要求将一段内存中数据移动到另一段内存中,本次实验通过寄存器内容截图显示,是把0000H单元开始20H个字节的内容送到1000H开始的连续数据单元中。先把初始地址分别放入源地址寄存器和目的地址寄存器,然后利用一组寄存器作为需转移数据区长度计数器,开始数据转移循环。每进行一次转移地址寄存器向下加一,计数寄存器内容减一,计数寄存器内容为0退出循环移动结束。由于计数以及地址寄存器是由两个八位寄存器组成,需要在加一减一时对其高字节和低字节进行判断。加一时若低字节加一变为0,则高字节加一,否则低字节加一高字节不变。减一时若低字节已是0则高字节减一,同时低字节变为0FFH,否则低字节减一高字节不变。

五、实验结果及分析

寄存器内容 源内存段中内容

-5-

目的内存段中移动前内容 目的内存段中移动后内容

【问题回答】如图R4、R5定义的目的地址单元中转移之前为随机数,转移后内容与以R2、R3开始的的源地址单元中20个字节内容相同,即实现了数据的传送。

六、实验源程序

ORG 0000H AJMP MAIN ORG 07B0H MAIN: MOV R7, #20H MOV R6, #00H MOV R2, #00H MOV R3, #00H MOV R4, #10H MOV R5, #00H LOOP: MOV DPL,R3 MOV DPH, R2 MOVX A, @DPTR MOV DPL, R5 MOV DPH, R4 MOVX @DPTR, A CJNE R3, #0FFH, LOOP1 INC R2 LOOP1: INC R3

CJNE R5, #0FFH, LOOP2 INC R4 LOOP2: INC R5

CJNE R7, #00H, LOOP3 CJNE R6, #00H, LOOP4 SJMP $ LOOP3: DEC R7 SJMP LOOP LOOP4: DEC R6 DEC R7 SJMP LOOP

-6-

SJMP $ END

实验六 查找相同数个数

一、实验目的

熟悉汇编语言编程。

二、实验内容

在2000~200Fh中查出有几个字节是零,把个数放在2100h中。

三、程序框图

四、实验过程

实验中利用R0放置需查找段长度,即从2000H单元开始,每次检查完一个单元R0减一,指针下移,直到R0等于0结束循环。R1存放等于零数据的个数,程序中利用等于零跳转指令JZ,实现找到0则R1加一计数的功能。循环终止后,将R1内容存入2100H中即可。

五、实验结果及分析

2000H到200FH中的内容

2100H显示找6个0

【问题回答】若需查找0FFH,只需将语句JZ LOOP1改为CJNZ R0, #0FFH, LOOP1即可,即数据等于0FFH时跳转到计数+1的程序段进行计数。

六、实验源程序

ORG 0000H

LJMP MAIN

-7-