实验一_单片机数据区传送排序程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一单片机数据区传送/排序程序设计

一、单片机数据区传送/排序程序设计

一、实验目的

1.进一步掌握汇编语言程序设计和调试方法。

2.了解单片机RAM中的数据操作

二、实验说明

要求:编写程序把R2、R3源RAM区首地址的R6、R7字节数据传送到R4、R5目的地址的RAM区。

三、实验仪器

计算机

伟福软件(lab2000P )

四、实验容

在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。

查看RAM 区3000~30FFH和4000~40FFH容,也可自己重新赋值。

运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下运行结果,检查3000~30FFH中容是否和4000~40FFH容完全一致。

五、思考题

1、改变源地址,例如00FFH;

2、改变目的地址,例如2000H;

3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。

六、源程序及其修改原理

org 0000H

Block equ 2000h

mov dptr, #Block ; 起始地址

mov r0,#12h

mov a,#20h ;修改2000h开始的地址所存放的容为20h

Loop:

mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思

考题3)

Loop1:

movx dptr,a

inc dptr ; 指向下一个地址

djnz r1,Loop1

djnz r0, Loop ; 双循环实现r0,r1计数相乘

(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)

mov r0, #20h ;改变源地址为2000h(思考题1)

mov r1, #00h

mov r2, #50h;改变目的地址为5000h(思考题2)

mov r3, #00h

mov r7, #0

Loop:

mov dph, r0

mov dpl, r1

movx a, dptr

mov dph, r2

mov dpl, r3

movx dptr, a

cjne r1, #0ffh, Goon1

inc r0

Goon1:

inc r1

cjne r3, #0ffh, Goon2

inc r2

Goon2:

inc r3

djnz r7, Loop

ljmp $

End

七、实验结果及说明

1、执行到mov r0, #20h的结果:

说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。

2、执行到ljmp $的结果:

说明:5000h开头的存储区域执行程序之前的容是FFh,执行程序之后变为20h,与2000h~20ffh的容完全相同,说明程序实现了数据区传送。

二、单片机数据区数据排序设计

一、实验目的

(1)、进一步掌握汇编语言程序设计和调试方法。

(2)、了解数据排序的简单算法。

二、实验容

(1)、要求:有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。

(2)、在CPU部的RAM 50H~5AH中放入不等的数据,查看RAM 区50H~5AH的容,也可自己重新赋值。

(3)、运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下比较一遍后运行结果,是否最大的移到最后。

三、程序流程

四、实验参考程序

Size equ 10 ; 数据个数

Array equ 50h ; 数据起始地址

Change equ 0 ; 交换标志

Sort:

mov r0, #Array

mov r7, #Size-1

clr Change

Goon:

mov a, r0

mov r2, a

inc r0

mov B, r0

cjne a, B, NotEqual

sjmp Next

NotEqual:

jc Next ; 前小后大, 不交换

setb Change ; 前大后小, 置交换标志

xch a, r0 ; 交换

dec r0

xch a, r0

inc r0

Next:

djnz r7, Goon

jb Change,Sort

ljmp $

end

五、实验步骤及结果分析

(1)、编写程序,编译程序,人为修改初始地址中的数据如下图,再运行程序,观察结果,结果如下:

图5 原始地址中的数据

(2)、再运行程序,观察结果,结果如下:

图6 运行后的数据

(3)、从运行结果图6可以看出,从50H开始的10个地址单元中的数据按从小到大顺序排列。

六、思考题

(1)、改变源地址,例如20H,注意对其他位的影响;

将原程序的Array equ 50h改为Array equ 20h 即可。

(2)、将50H~5AH中容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。(3)、记录执行交换的次数。

程序修改如下:

Size equ 10 ; 数据个数

相关文档
最新文档