单片机实验上机--实验五 内存块移动
- 格式:doc
- 大小:33.50 KB
- 文档页数:2
单片机实验报告专业:电子信息工程班级:姓名:学号:指导教师:单片机实验报告实验项目名称:片内外清零、置位和数据块传送程序实验日期: 2010-10-27 实验成绩:实验评定标准:1)实验内容否完整A()B()C()2)实验结果分析是否正确A()B()C()3)实验报告是否按照规定格式A()B()C()一、实验目的1、掌握汇编语言中对芯片内外存储器的清零,置位。
2、掌握8031 内部RAM 和外部RAM 之间的数据传送方法;掌握这两部分RAM 存贮器的特点与应用,掌握各种数据传送方法。
二、实验内容及要求1、将片内从50H开始的连续30个地址内容清零;将片外7000H_79FFH单元内容清零;将片内从20H开始的连续30个地址内容设置为0FEH。
2、试编写将外部的数据存贮区6030~607FH 的内容写入外部RAM 3030~307H 中。
三、实验步骤1、片内外清零、置位打开Keil程序,执行菜单命令“Project”→“New Project ”创建“片内外清零置位”项目,并选择单片机型号为AT89C51。
执行菜单命令“File”→“New ”创建文件,输入源程序,保存为“片内外清零置位.A51”。
在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“片内外清零置位.A51”添加到项目中。
执行菜单命令“Project”→Options for Target ‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。
执行菜单命令“Project”→“Build Target 1”,编译源程序。
如果编译成功,则在“Outp ut Window”窗口中显示没有错误,并创建了,“片内外清零置位. HEX”文件。
执行菜单命令“Debug”→“Start/Stop Debug Seesion”,按键F11键,单步运行程序。
第1篇一、实验目的1. 理解操作系统内存分配的基本原理和常用算法。
2. 掌握动态分区分配方式中的数据结构和分配算法。
3. 通过编写程序,实现内存分配和回收功能。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 开发工具:GCC编译器三、实验原理1. 内存分配的基本原理操作系统内存分配是指操作系统根据程序运行需要,将物理内存分配给程序使用的过程。
内存分配算法主要包括以下几种:(1)首次适应算法(First Fit):从内存空间首部开始查找,找到第一个满足条件的空闲区域进行分配。
(2)最佳适应算法(Best Fit):在所有满足条件的空闲区域中,选择最小的空闲区域进行分配。
(3)最坏适应算法(Worst Fit):在所有满足条件的空闲区域中,选择最大的空闲区域进行分配。
2. 动态分区分配方式动态分区分配方式是指操作系统在程序运行过程中,根据需要动态地分配和回收内存空间。
动态分区分配方式包括以下几种:(1)固定分区分配:将内存划分为若干个固定大小的分区,程序运行时按需分配分区。
(2)可变分区分配:根据程序大小动态分配分区,分区大小可变。
(3)分页分配:将内存划分为若干个固定大小的页,程序运行时按需分配页。
四、实验内容1. 实现首次适应算法(1)创建空闲分区链表,记录空闲分区信息,包括分区起始地址、分区大小等。
(2)编写分配函数,实现首次适应算法,根据程序大小查找空闲分区,分配内存。
(3)编写回收函数,回收程序所占用的内存空间,更新空闲分区链表。
2. 实现最佳适应算法(1)创建空闲分区链表,记录空闲分区信息。
(2)编写分配函数,实现最佳适应算法,根据程序大小查找最佳空闲分区,分配内存。
(3)编写回收函数,回收程序所占用的内存空间,更新空闲分区链表。
3. 实验结果分析(1)通过实验,验证首次适应算法和最佳适应算法的正确性。
(2)对比两种算法在内存分配效率、外部碎片等方面的差异。
五、实验步骤1. 创建一个动态内存分配模拟程序,包括空闲分区链表、分配函数和回收函数。
课程名称:单片机原理与嵌入式系统
实验名称:内存块移动与数据排序
实验报告
班级
姓名学号
同组人姓名
实验日期年月日
实验目的
通过上机编、调程序,加强对ASM51汇编语言的学习,掌握内存块移动与数据排程序的编制。
对程序编制能力、程序排错能力进行训练。
实验内容
编程实现以下任务:
1.将外部数据存储器2000H~202FH 中的48字节数据移动到2030H~205FH中。
2.将内部RAM 20H~2FH中的数据加以排序,大数在前,小数在后。
三、实验设备
PC机.
Lab2000P单片机仿真实验系统
四、调试通过的软件清单:
内存块移动程序清单
数据排序程序清单
五、实验收获、总结
六、思考题
内部RAM数据块移动
数据排序小数在前,大数在后。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置一、概述LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置由控制屏、实验挂箱、实验桌组成,通过单片机开发实训台可完成单片机的接口扩展、数据采集、数据显示、键盘控制、定时器、打印机接口等实验,配备有仿真器。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置设有电流型漏电保护器,控制屏若有漏电现象,漏电流超过一定值,即切断电源,对人身安全起到一定的保护。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置采用组件式结构,更换实验模块便捷。
如需扩展功能或开发新实验,只需添加实验模块挂箱即可,永不淘汰。
二、主要技术参数1、输入电源:AC220V±10% 50Hz2、工作环境:温度-10℃~+40℃相对湿度<85%(25℃)3、装置容量:200VA4、重量:100Kg5、外形尺寸(cm):160×75×1506、挂箱尺寸(mm):410×240×607、输出电源:有漏电、短路、过流保护A.~220V,通过安全插座输出B.直流稳压电源:±5V/1A ±12V/2A三、装置构成(一)实验屏:实验时放置实验挂箱,并提供实验电源,铁质双面亚光密纹喷塑结构。
(二)实验桌:钢木结构,桌面为防火、防水、耐磨高密度板,电脑桌连体设计,造型美观大方。
(三)实验模块:1、LGDP-01 单片机实验挂箱(一)LED点阵显示模块、点阵式字符液晶显示模块、8253定时计数器、A/D转换、D/A转换、V/F 转换、F/V转换、串引EEPROM、EEPROM、Flash Rom、SRAM、I2C总线接口2、LGDP-02 单片机实验挂箱(二)8251串行口扩展、232总线串行接口、单片机最小应用系统1、单片机最小应用系统2、拔码开关输出3、LGDP-03 单片机实验挂箱(三)ISD 1420语音控制、IC卡读写接口、实时时针/日历、USB接口、RS232转RS485接口4、LGDP-04 单片机实验挂箱(四)8279接口电路、8255 I/O扩展、8155 I/O扩展、动态扫描显示模块、转换接口、MC14433、整列式键盘实验模块5、LGDP-05 单片机实验挂箱(五)步进电机驱动程序示列、温度传感器与温度控制、汽车转弯信号灯/十字路口交通灯、数字频率计、看门狗6、LGDP-06 单片机实验挂箱(六)十六位逻辑电平显示、继电器控制接口、常用器件接口、八位逻辑电平输出、单次脉冲、扬声器、串引静态显示模块、查询式键盘。
实验二数据块移动一、实训目的1、掌握CPU对单片机片内和片外寻址方式的使用方法。
2、熟练掌握用几种不同的方法调试、运行程序。
二、实训内容块的移动是单片机常见操作之一,多用于大量的数据复制和图像操作。
本程序是编制数据搬家程序,要求先将单片机内部RAM的20H~2FH单元分别设置为00H、01H、……0FH;然后将单片机内部RAM的20H~2FH单元的数据搬到外部RAM的1000H~100FH单元中去。
三、程序流程四、实训参考程序ORG 0000HLJMP MOVEORG 0030HMOVE:MOV R0,#20H设置块的源地址返回设置块的目标地址设置移动长度从源地址取数保存到目标地址源地址加1目标地址加1是否移动完?NYMOV R2,#10HMOV A,#00HM1:MOV @R0,AINC R0INC ADJNZ R2,M1 ;将片内RAM的20H-2FH单元分别设置为00H-0FH★ MOV R0,#20HMOV DPTR,#1000HMOV R2,#10HM2:MOV A, @R0MOVX @DPTR,AINC R0INC DPTR ;将片内RAM的20H-2FH单元数据搬到DJNZ R2,M2 片外RAM的1000H-100FH单元LJMP 0030HEND五、程序调试步骤(1)建立一个工程项目文件:在Kile uVision2仿真软件中,执行菜单【Project】/【New project】,给项目文件取名并保存,选择单片机型号为AT89C51;(2)选择目标器件:右键Target1-Options for Target“ Target1”或选择【 Project】/ 【Options for Target“Target1”】对选项卡进行设置,在“Output”选项卡,选中“Create HEX File”;(3)新建一个源程序文件:在菜单File/New编辑窗口中输入源程序,在菜单File/Save中保存源程序文件,文件后缀为.asm;(4)把源程序文件添加到工程项目中单击工程项目【Target1】/【Source Group1】选择Add File to Group Source Group1,选择文件类型Asm Source File-单击Add按钮,添加完毕,关闭窗口;(5)编译程序选择【Project】/【Rebuild all target files】选项或单击工具栏中按钮,如果编译成功,显示编译成功的信息。
实验一数据传送实验实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片外RAM 9800H—980FH单元,再从片外RAM 9800H—980FH单元中的数据传送到片内RAM 50H—5FH单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET: SJMP MAINORG 003FHMAIN: MOV R1,#40HMOV R2,#10HMOV A, #0A0HA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2,A2MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC RINC DPTRDJNZ R2, A3LJMP 0000HEND思考题:1. 按照实验内容补全程序。
2. CPU 对8031内部RAM存储器和外部RAM存储器各有哪些寻址方式?内部RAM存储器寻址方式:直接寻址方式寄存器间接寻址基址变址寄存器间接寻址外部RAM存储器寻址方式:寄存器间接寻址基址变址寄存器间接寻址3. 执行程序后下列各单元的内容是什么?内部RAM 40H~4FH _________________________ 内部RAM 50H~5FH__________________________ 外部RAM 9800H~980FH______________________ 截图:实验二多字节十进制加法实验实验内容:多字节十进制加法。
加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
本科实验报告课程名称:微机原理与接口技术邵芳琳姓名:控制学院学院(系):专业:自动化3140103307学号:指导教师:曹峥2016年11月11日实验一存储器块操作实验一、实验目的1.熟悉KEIL 集成调试环境和汇编程序的调试方法。
2.掌握存储器读写方法;3.了解内存块的移动方法;二、实验说明实验1 指定某块存储器的起始地址和长度,要求能将其内容赋值。
通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
例程2 给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H 起始的256个字节到4000H 起始的256 个字节。
思考题1.如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成此操作。
将MOV A,#1H 改为MOV A,#FFH2.若源块地址和目标块地址有重叠,该如何避免?源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,直接从堆栈中弹出。
实验内容1.试编程将片内RAM 中的数据依次复制到片外RAM。
假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
运行结果:2.两个16 位无符号二进制数分别存放在片外RAM 首址为2000H 和2002H 单元内,将它们相加,结果存入片内RAM 30H(低8 位)、31H(高8 位)。
运行前:运行后:1100+0011=1111运行结果正确。
实验二数值转换实验一、实验目的1.熟悉KEIL 集成调试环境和汇编程序的调试方法。
2.掌握简单的数值转换算法。
3.基本了解数值的各种表达方法。
4.掌握数值的加减法运算。
5.掌握用查表的方法将BCD 值转换成ASCII 值。
二、实验说明单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。
89C51单片机实验指导书目录软件部分 (4)KEIL uVision软件的使用 (4)实验1 存储区数据设置 (11)一.实验目的 (11)二.实验内容 (11)三.实验步骤 (11)四.实验参考程序 (11)实验2 二进制BCD码转换 (13)一.实验目的 (13)二.实验内容 (13)三.实验步骤 (13)四.实验参考程序 (13)实验3 程序跳转表 (15)一.实验目的 (15)二.实验内容 (15)三.实验步骤 (15)四.实验参考程序 (15)实验4 内存块移动 (17)一.实验目的 (17)二.实验内容 (17)三.实验步骤 (17)四.实验参考程序 (17)实验5 数据排序 (19)一.实验目的 (19)二.实验内容 (19)三.实验步骤 (19)四.实验参考程序 (19)硬件部分 (21)实验一仿真器的使用 (21)一.实验目的 (21)二.实验内容 (21)实验1 I/0口输入输出实验 (22)一.实验目的 (22)二.实验内容 (22)三.实验原理图 (22)四.实验步骤 (22)实验2 广告灯实验 (23)一.实验目的 (23)二.实验内容 (23)三.实验原理图 (23)四.实验步骤 (23)实验3 定时器实验 (24)一.实验目的 (24)二.实验内容 (24)三.实验原理图 (24)四.实验步骤 (24)实验4 外中断实验 (25)一.实验目的 (25)二.实验内容 (25)三.实验原理图 (25)四.实验步骤 (25)实验5 动态扫描显示实验 (26)一.实验目的 (26)二.实验内容 (26)三.实验原理图 (26)四.实验步骤 (26)软件部分KEIL uVision软件的使用Keil uVision软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil uVision软件的使用方法进入Keil uVision后,屏幕如下图所示。
实验一内部RAM数据传送程序设计一、实验目的1.学习MCS-51微控制器汇编语言的编写。
2.了解51微控制器内部RAM的读写及调试方法。
二、实验设备用wave模拟软件进行实验.三、实验原理51微控制器片内RAM低128字节(00H~7FH)包含工作寄存器区(00H~1FH)、位操作区(20H~2FH)和数据区(30~7FH)。
对该128字节的RAM区,均可采用直接寻址和间接寻址方式,若采用间接寻址用R0或R1作间址寄存器。
特殊功能寄存器占用片内RAM地址空间80H~FFH,对它只能采用直接寻址方式。
数据传送指令是汇编语言程序设计的基本要素,数据块传送也是程序设计的基本技巧之四、实验内容及要求试编写程序:先把内部RAM的(30H~7FH)单元清零,然后将30H-7FH单元内55H的值. 五、实验步骤1.打开计算机,打开wave软件,进入仿真环境,选择软件模拟器,选择仿真器,仿真头选择,选择CPU。
2.打开“实验程序/8051程序/RAM.asm”程序3.按照程序注释设置断点。
4.点击工具条的运行按钮,程序运行到第一个断点处,打开窗口-data数据观察窗口,进行观察30H-7FH单元的值。
5.然后再点击运行按钮,程序会运行到第二个断点处,此时,观察30H-7FH单元的值变化。
六、实验报告要求1.整理实验程序程序,理解程序。
2.如果把程序1中(30H~7FH)单元的内容改为66H,如何修改程序。
3.理解数据指针:数据块传送若在内部RAM中进行,用什么作数据指针?若在外部RAM 或ROM中进行,用什么作数据指针?4.存储器和数据存储器的地址空间可以重叠,对此如何解释?七、实验参考程序ORG 0000HCLEAR: MOV R0,#30H ;30H送R0寄存器MOV R6,#50H ;4FH送R6寄存器(计数)CLR1: MOV A,#00H ;00送累加器AMOV @R0,A ;00送到30H-7FH单元INC R0 ;R0加1DJNZ R6,CLR1 ;不到4F个字节再清NOP ;此处设断点观察30H-7FH单元的值MOV R0,#30HMOV R6,#50HLOOP: MOV A,#55HMOV @R0,AINC R0DJNZ R6,LOOPAJMP $ ;此处设断点观察30H-7FH单元的值END图1实验二算术运算程序设计一、实验目的1.学习单片机算术运算、逻辑运算等指令。
《微机原理与接口技术》实验指导书计算机与信息工程系2012年9月目录实验概述............................................. 错误!未定义书签。
实验仪器使用简介 (5)实验项目一学生考试成绩统计实验 (11)实验项目一两个多位十进制数相减实验............... 1错误!未定义书签。
实验项目一 8259中断控制器实验.. (16)实验项目一具有优先通行权的十字路口交通灯控制设计 (21)实验项目一 8253定时器/计数器实验 (26)实验项目一继电器控制实验 (28)实验概述一、实验的目的本实验课是配合理论教学内容,帮助学生加深理解和掌握本门课程内容的重要手段。
由于本课程具有理论与实际相结合紧密的特点,通过实验使学生掌握微型计算机的原理及接口电路的设计应用技术。
二、实验前的准备工作1.了解所用的计算机系统(包括汇编编译系统)的性能和使用方法。
2.复习和掌握与本实验有关的DOS命令以及相关指令。
3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机。
三、实验的步骤上机实验应一人一组,独立实验。
上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。
上机实验一般应包括以下几个步骤:1、编辑汇编语言源程序使用一种文本编辑软件(word、记事本、写字板等),编辑保存一个“文件名.ASM”的汇编语言源程序文件2、汇编源程序用宏汇编(MASM)对汇编源程序进行汇编,产生目标程序(文件名.OBJ3、连接程序用连接程序(LINK)将若干目标模块连同库子程序连接在一起,产生可执行文件(文件名.EXE)4、运行调试DEBUGDEBUG 程序是专门为汇编语言设计的一种调试工具,它通过单步、跟踪、断点和连续等方式为程序员提供了非常有效的调试手段。
格式:DEBUG [驱动器][路径][文件名][参数]四、实验报告实验报告应包括以下内容:实验目的、实验内容、程序清单、运行结果、对运行结果的分析以及本次调试程序所取得的经验。
将存放在片内 RAM 40H 开始的 16 个单元(地址为 40H 到 4FH)内容依次复制到片外 RAM 3000H 开始的 16 个单元(地址为 3000H 到 300FH)。
1. 打开 Keil,新建工程:Project/New Project,输入工程名,并保存;2. 选项选择器件:Atmel 的 89C52;3. 新建程序文本,并另存该文件为汇编文件格式:(1)“File/New”(2) File/Save As/键入欲使用的文件名及后缀名,即“文件名.asm”。
再单击“保存”;4. 添加该文件到工程:回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,单击“Add File to Group ‘Source Group 1’”,选择刚才新建的汇编文件。
5. 在 keil 的汇编文件中输入程序代码,并编译,调试。
(1)写完代码后单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键 F7),编译成功后(0 个 errors),(每次修改程序后都要重新编译下,才能生效)。
(2)再单击“Debug”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键 Ctrl+F5),点击 RUN 进行运行,或者按 F11 进行单步运行。
6. 观察运行结果:在 keil 的 view/memory window 窗口中输入 D:0x40、x:0x3000 等地址查看运行结果是否正确。
ORG 0000HSJMP MAINMAIN:MOV R1,#40HMOV A,#00HMOV R6,#10HMOV R7,#10H ;复制 16 个数据MOV R0,#40H ; 内部 RAM 开始地址MOV DPTR,#3000H ;外部 RAM 开始地址LOOP1:MOV @R1,A ; 内部 RAM 赋初值INC R1INC ADJNZ R6,LOOP1L1:MOV A,@R0MOVX @DPTR,A ;累加器传到外部 RAMINC R0 ;外部地址自加一INC DPTR ; 内部地址自加一DJNZ R7,L1 ;循环(R7 内容减 1 不等于 0,继续执行L1,等于 0,跳出循环,不再执行)END。
实验五移位操作一、实验目的:掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。
二、实验内容:双字节二进制数左移一位将两个内部RAM 31H和30H单元中的内容组成的双字节数通过C y左移一位。
功能示意图31H 30H(30H)=36H (31H)=54HORG 0000HCLR C (Cy)=00H 1字节MOV A ,30H (A)=(30H)=36H 2字节RLC A (A)=6CH 1字节MOV 30H, A (30H)=(A)=6CH 2字节MOV A,31H (A)=(31H)=54H (PSW)=01H (P)=01H 2字节MOV 31H, A (31H)=(A)=A8H 2字节SJMP $END多字节二进制数右移一位将三个内部RAM 32H 、31H 和30H 单元中的内容组成的三字节数通过C y 右移一位。
功能示意图(30H)=13H (31H)=42H (32H)=56HORG 0000HCLR C (Cy)=00H 1字节MOV A,32H (A)=(32H)=56H 2字节RRC A (A)=2BH 1字节MOV 32H,A (32H)=(A)=2BH 2字节MOV A,31H (A)=(31H)=42H 2字节32H31H30HMOV 31H,A (31H)=(A)=21H 2字节MOV A,30H (A)=(30H)=13H (PSW)=01H (P)=01H 2字节RRC A (A)=09H (PSW)=80H (Cy)=01H (P)=00H 1字节MOV 30H,A (30H)=(A)=09H 2字节SJMP $END思考题1、多于三个字节的移位操作如何进行?答:同理,通过C累加器,运用RRC或RLC命令实现移位操作。
若字节过多,可以加入循环。
详见实验七第一个程序段2、如果不通过C y如何移位?实现的功能有何不同?答:将RLC、RRC命令更改为RL、RR命令,这样就在不引起Cy 变化的情况下进行移位操作了。
实验五内存块移动一、实验目的1、了解内存块的移动方法2、加深对存储器读写的认识二、实验说明块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H-->4000H,256字节。
三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH5.ASM源程序进行编译,编译无误后,打开数据窗口(XDATA),观察地址3000H 起始256个字节存储块和4000H起始的256个字节存储块,若各单元内数据对应相同,则用键盘输入改变其中一块的数据,全速运行程序。
点击暂停按钮,观察两个存储块的数据,可以看到两块数据已相同,说明存储块已移动。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序1.源程序ORG 0MOV R0,#30HMOV R1,#00HMOV R2,#40HMOV R3,#00HMOV R7,#0LOOP: MOV DPH,R0MOV DPL,R1MOVX A,@DPTRMOV DPH,R2MOV DPL,R3MOVX @DPTR,AINC R1INC R3DJNZ R7,LOOPLJMP $END2.流程图结束五、思考题1.若源块地址和目标块地址有重叠,该如何避免?2.请思考给出块结束地址,用地址减一方法移动块的算法。
实验五内存块移动
一、实验目的
1、了解内存块的移动方法
2、加深对存储器读写的认识
二、实验说明
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H-->4000H,256字节。
三、实验内容及步骤
1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH5.ASM源程序进行编译,编译无误后,打开数据窗口(XDATA),观察地址3000H 起始256个字节存储块和4000H起始的256个字节存储块,若各单元内数据对应相同,则用键盘输入改变其中一块的数据,全速运行程序。
点击暂停按钮,观察两个存储块的数据,可以看到两块数据已相同,说明存储块已移动。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序
1.源程序
ORG 0
MOV R0,#30H
MOV R1,#00H
MOV R2,#40H
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
INC R1
INC R3
DJNZ R7,LOOP
LJMP $
END
2.流程图
结束
五、思考题
1.若源块地址和目标块地址有重叠,该如何避免?
2.请思考给出块结束地址,用地址减一方法移动块的算法。