实验四 数据块移动

合集下载

单片机实验报告

单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。

2 熟悉循环结构程序的编写。

3 熟悉编程环境和程序的调试。

二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将4000H开始的10个字节内容清零或全部赋值为33H。

注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。

(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。

3、运行和调试过程。

外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。

同时,学习掌握汇编程序的编写和调试过程。

实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。

2 熟悉循环结构程序的编写,进一步熟悉指令系统。

3 熟悉编程环境和程序的调试。

二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

单片机实验报告---数据块复制

单片机实验报告---数据块复制

将存放在片内 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。

数据传送指令及算术逻辑运算和移位指令的使用

数据传送指令及算术逻辑运算和移位指令的使用

实验报告1.数据传送指令的使用一,实验目的;把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端口中读取数据。

1. 通用传送指令:MOV,PUSH,POP,XCHG,XLAT2. 输入输出指令指令: IN,OUT3. 目的地址传送指令: LEA,LDS,LES4. 标志位传送指令: LAHF,SAHF,PUSHF,POPF二,实验步骤;1. 传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

2. 改变标志寄存器psw中tf标志的状态(0——1或1——0),其余位保持不变。

3. 设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。

在DEBUG状态下使用A 命令送入下面程序,并用单步T命令执行的方法,分析每条指令源地址的形成过程?当数据传送每完成一次,试分析AX寄存器中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]HLT4. 使用标志位传送指令,编程序段将标志位寄存器的低八位的值存入内存单元DS:1000H 中或堆栈中,然后将标志位寄存器的低八位置位为10101010。

2.算术逻辑运算和移位指令的使用一,实验目的;使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算1,算术运算:加法指令、减法指令,乘法指令、除法指令以及转换指令;2. 逻辑运算指令:AND,TEST,OR,XOR,NOT3. 移位指令:移位运算可以分为算术逻辑移位和循环移位两类。

实验报告2(内存块移动与数据排序)

实验报告2(内存块移动与数据排序)

课程名称:单片机原理与嵌入式系统
实验名称:内存块移动与数据排序
实验报告
班级
姓名学号
同组人姓名
实验日期年月日
实验目的
通过上机编、调程序,加强对ASM51汇编语言的学习,掌握内存块移动与数据排程序的编制。

对程序编制能力、程序排错能力进行训练。

实验内容
编程实现以下任务:
1.将外部数据存储器2000H~202FH 中的48字节数据移动到2030H~205FH中。

2.将内部RAM 20H~2FH中的数据加以排序,大数在前,小数在后。

三、实验设备
PC机.
Lab2000P单片机仿真实验系统
四、调试通过的软件清单:
内存块移动程序清单
数据排序程序清单
五、实验收获、总结
六、思考题
内部RAM数据块移动
数据排序小数在前,大数在后。

实验四—数据传送实验报告

实验四—数据传送实验报告

实验报告专业:计算机科学与技术班级:计算机科学与技术(1)班学号:201024131147姓名:赵倩倩课程名称:计算机组成原理学年:2010—2011 学期1课程类别:专业必修试验时间:2011年11月7日实验四:总线传输实验一、实验目的(1)理解总线的概念及其特性(2)掌握总线传输控制特性二、实验原理及基本技术路线图(方框原理图)总线传输框如图5.4-1所示,他将几种不同的设备挂至总线上,有存储器、输入设备、输出设备、寄存器。

这些设备都需要三态输出控制,按照传输要求恰当有序的控制它们,就可实现总线信息传输。

基本实验要求如下:根据挂起在总线上的几个基本条件,设计一个简单的流程;1)输入设备将一个数打入R0寄存器。

2)输入设备将另一个数打入地址寄存器。

3)将R0寄存器中的数写入带当前的地址的寄存器中。

4)将当前地址的寄存器中的数用LE数码管显示。

三、所用仪器、材料(设备名称、型号、规格等)TDN-CM+或TDN-CM++教学实验系统一台四、实验方法、步骤1)按照图5.4-2试验接线图进行连线。

(2)实验的具体操作步骤图如图5.4-3所示。

首先应关闭所有三态门(SW-B=1,R0-B=1,LED-B=1),并将关联的信号置为LDAR=0,LDR0=0,W/R(LED)=1,W/R(LED)=1.然后参照如下操作流程,先将数据开关打入到R0中;然后继续给开关置数,拨动LDR0控制信号做0→1→0动作,产生一个上升沿将数据打入到R0中;然后继续给数据开关置数,拨动LDAR控制信号做0→1→0动作产生一个上升沿将数据打入到AR中;关闭数据开关三态门,打开R0寄存器输出控制,使寄存器输出,使寄存器处于写状态(W/R=0,CS=0),将R0中的数写到存储器中;关闭存储器片选,关闭R0寄存器输出,使存储器处于读状态(W/R=1,CS=0),打开LED片选,拨动LED的W/R控制信号1→0→1动作,产生一个上升沿将数据打入到LED中。

8051实验指导

8051实验指导
东华理工大学自编教材
《单片机原理及应用》
实验讲义、课程设计
指 导 书
朱兆优 编写
东 华 理 工 大 学 电 子 工 程系 2012 年 10 月
《单片机原理及应用》实验讲义、课程设计指导书
作者:朱兆优

实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 实验十一 数据块传送和查表 2 多字节数乘法和除法 6 循环与分支程序设计 8 计算机数制的变换 9 单片机中数的拼装 12 单片机 I/O 口的使用 13 8051 中断系统的使用 15 串行口静态显示 18 动态显示 20 按键与键盘设计 22 键盘与显示实验 24
5
《单片机原理及应用》实验讲义、课程设计指导书
作者:朱兆优
后再移出下一位数。如此循环 16 次。 7.对于多字节除法也可以采用将被除数直接相减,够减,则商加 1,一直减到不够减后,再将 余数四舍五入。
四.资源分配
<学生自行完成>
四.程序流程图
<学生自己独立完成>
五.实验报告
1.分析多字节乘法、除法的编程原理; 2.被乘数、乘数和积存放在片内 RAM 和片外 RAM,编程时有哪些不同之处,如何用 R0、R1 存放片外 RAM 地址; 3.写出汇编源程序,并加详细注释; 4.调试运行程序,检验如下数据的乘积是否正确; 33H× 33H= 0AAH×0AAH= 0FFH×0FFH= 5.思考求 16 个数的算术平均值的编程原理和编程方法。 6.分析总结编程调试过程中出现的问题和解决的办法。
四.实验步骤和资源分配
<学生自行完成>
五.程序流程图(算法思路)
<学生自行完成>
六、实验报告 1.编写循环分支程序应注意哪些问题。 2.调用子程序能达到什么样的效果。 3.单步运行,跟踪运行,断点运行,全速运行的区别和作用。 4.分析总结编程调试过程中出现的问题和解决的办法。

DSP 数据块传送

实验五数据块传送一、实验目的掌握各种数据块传送操作指令。

二、实验设备计算机、DSP 实验箱.三、实验内容编写程序,实现把数据从程序存储器传送到数据存储器,以及从数据存储器传送到程序存储器。

四、实验步骤1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。

2、新建一个项目:点击Project-New,将项目命名为zhao3,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao3),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为zhao3.asm 。

4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。

添加方法是在工程管理器中右键单击zhao3.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的zhao3.asm 文件添加到该项目中去。

5、编写源程序:在工程管理器中双击zhao3.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:************ 学习数据块传送指令:MVPD、MVDD ************.title "zhao3.asm".mmregsSTACK .usect "STACK",30H.bss x,20.bss y,20.datatable: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.def _c_int00.text_c_int00: STM #x,AR1RPT #19MVPD table,*AR1+ ;程序存储器传送到数据存储器STM #x,AR2STM #y,AR3RPT #19MVDD *AR2+,*AR3+ ;数据存储器传送到数据存储器end: B end.end6、编写链接配置文件:参照实验一,需要更改的地方如下:更改前更改后7、编写中断向量表文件参照实验一,可不作修改。

单片机原理与应的项目——数据块搬运

• 逻辑上3个存储器地址空间: 64KB 程序存储器 256B 片内数据存储器 64KB 片外数据存储器
8051
8031
64KB
• 存储器小结:
MCS—51的程序存储器与数据存储器是分开的(属于哈佛结构),地址空间重迭,最 大可扩展到64KB。 1、程序存储器ROM (1)8031内部无程序存储器
(也称特殊功能寄存器)
1、SFR(80H~FFH)介绍:
※有2套地址
字节地址:只21个有效(其中仅11个有位地址)
位地址:只83位有效
其字节地址可被8整除。
※专用寄存器: A、B、 PSW、DPTR、SP。
※I/O接口寄存器: P0、P1、

P2、P3、SBUF、

TMOD、TCON、SCON …
(5) 数据指针DPTR (16位): 存放片外存储器地址,作为片外存储器的指针。
可分成两个8位寄存器DPH、DPL使用。
2. 专用寄存器的字节寻址
• 注意:
◆21个可字节寻址的专用寄存器是不连续地分散在 内部RAM高128单元之中,共83个可寻址位。尽管 还剩余许多空闲单元,但用户并不能使用。
◆在22个专用寄存器中,唯一一个不可寻址的PC。 PC不占据RAM单元,它在物理上是独立的,因此 是不可寻址的寄存器。
外部中断0(INT0)中断地址区 定时器/记数器0(T0)中断地址区 外部中断1(INT1)中断地址区 定时器/计数器1(T1)中断地址区 串行(RI/TI)中断地址区
中断服务程序存放方法:
(1)从中断地址区首地址开始,在中断地址区中直接存放; (2)从中断地址区首地址开始,存放一条无条件转移指令,
2.2.4 内部程序存储器
• 80C51内有4KB ROM,其地址为0000H~0FFFH(内部ROM)。 其中0000H~0002H是系统的启动单元。 系统复位后(PC)=0000H,开始取指令执行程序。 如果不从0000H开始,应存放一条无条件转移指令,以便直接 转去执行指定的程序。

单片机 数据块传送 软件实验1

单片机数据块传送软件实验1实验目的:实验原理:数据块传送是指将一段连续的数据从一个位置传送到另一个位置的操作。

在单片机中,可以通过中断、DMA、软件等方式实现数据块传送。

本实验中使用软件实现数据块传送。

数据块传送一般需要两个指针,一个指向源地址,一个指向目的地址。

每次传送一个数据,源地址指针和目的地址指针都要加上一个数据的长度,直到传送数据结束。

软件实现数据块传送的步骤如下:1. 定义源地址和目的地址2. 定义数据长度5. 重复步骤4,直到传送数据结束实验器材:STM32单片机开发板实验程序:```c#include "stm32f10x.h"#define SRC_ADDRESS ((uint32_t)0x08000000) // 源地址#define DST_ADDRESS ((uint32_t)0x20002000) // 目的地址#define BLOCK_SIZE 128 // 数据块长度void TransferData(uint32_t srcAddr, uint32_t dstAddr, uint32_t size){uint32_t *srcPtr = (uint32_t *)srcAddr;uint32_t *dstPtr = (uint32_t *)dstAddr;for (int i = 0; i < size; i++){*dstPtr++ = *srcPtr++;}}实验说明:本实验中,定义源地址为0x08000000,目的地址为0x20002000,数据块长度为128字节。

使用指针将源地址和目的地址分别指向所定义的地址,循环传送数据块,每次传送一个数据,源地址和目的地址指针都加上一个数据的长度,直到传送数据结束。

实验结果:将实验程序下载到STM32单片机开发板中,按下复位键,观察LCD屏幕,发现数据块传送成功。

微机原理实验四串操作指令

实验四串操作指令程序实验一、实验目的1. 熟悉五种串操作指令的功能,会编写常用的串操作应用程序。

2. 会使用DEBUG 命令查看串操作运行的结果。

二、实验环境1. 硬件:PC 微机2. 软件:Masm for Windows 汇编集成开发环境三、实验讲义串指连续存放在存储器中的一些数据字节、字或者双字。

串操作允许对程序连续存放的数据块进行操作。

这是唯一一种可以从存储器到存储器的指令。

源串一般存放在数据段,偏移地址由SI 指定;目标串必须在附加段,偏移地址由DI 指定。

在每次进行串操作后,SI 和DI 两个指针会自动修改。

修改的是增量方向还是减量方向由标志位DF 决定,DF=0 为增量操作,DF=1 为减量操作。

CX 中存放的是数据块的长度,可在CX 前加重复前缀标志,对串进行连续操作。

执行串指令之前,一般先进行如下操作:源串首地址(末地址)→ SI目的串首地址(末地址)→ DI串长度→ CX建立方向标志DF1. 重复前缀标志助记符判断条件说明REP CX 0 CX=CX-1,若CX 0 则重复REPE 或REPZ CX 0 且ZF=1 CX=CX-1,若CX 0 且ZF=1 则重复REPNE 或REPNZ CX=0 且ZF=0 EX=CX-1,若CX 0 且ZF=0 则重复2. 方向标志指令方向标志由标志位DF 决定,有CLD 和STD 两种指令。

CLD 将DF 置0,地址为增量操作。

STD 将DF 置1,地址为减量操作。

3. 串传送指令格式: [REP] MOVS DESTS, SRCS[REP] MOVSB/ MOVSW / MOVSD功能:将DS:SI 中的源串数据传送到ES:DI 规定的目的串单元中。

加重复前缀REP 可实现连续存放的数据块的传送。

例1:将源串中前三个字节的数据传送到目的串。

源串在数据段(DATAS)中,存放在SRC 单元中;目的串在附加数据段(EDATAS)中,存放在DEST 单元中。

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

实验四 数据块移动
电工电子实验中心
实验报告

课程名称: 计算机硬件技术基础
实验名称: 数据块移动
姓名: 学号:
评定成绩: 审阅教师:
实验时间:2017、05、02

南京航空航天大学
实验四 数据块移动
一、 实验目的要求
1) 进一歩掌握主程序、子程序设计方法。
2) 掌握人机对话的设计方法。
3) 进一歩熟悉 Tddebug 调试环境与 Turbo Debugger 的使用。

二、 实验任务
本实验要求将指定数据区的数据搬移到另一块内存空间中,并通过子程
序调用的方法将搬移的数据显示在屏幕上。

源数据块与目标数据块在存储中的位置可能有三种情况,如图 2-4-1 所
示。对于两个数据块分离的情况,数据的传送从数据块的首地址开始,或者从数
据块的末地址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部
分会因搬移而遭到破坏。
所以搬移过程可以通过以下两个方式完成:
当源数据块首地址>目标块首址时,从数据块的首地址开始传送数据;
当源数据块首地址<目标块首址时,从数据块的末地址开始传送数据。

三、 实验代码
STACK1 SEGMENT STACK
DW 256 DUP($)
STACK1 ENDS
DATA SEGMENT
MES1 DB 'The data in buf2 are:',0AH,0DH,'$'
BUF1 DB
11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H
BUF2 DB 20H DUP(0)
DATA ENDS
实验四 数据块移动
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
CMP SI,DI;判断数据段的先后顺序,决定首端移动或就是尾端移动
JG LABEL1
MOV CX,20H
LOOPER:
MOV BX,CX
MOV CX,SI[BX]
MOV DI[BX],CX
PUSH DI[BX]
INC BX
CALL PRINT
LOOP LOOPER
JMP LAST
LABEL1:
MOV BX,20H
SUB BX,CX
MOV CX,SI[BX]
MOV DI[BX],CX
PUSH DI[BX]
DEC BX
CALL PRINT
LOOP LABEL1
JMP LAST
LAST:
RET
PRINT PROC
POP DI[BX]
PUSH AX
MOV DX,DI
MOV AL,02H
INT 21H
POP AX
RET
PRINT ENDP
CODE ENDS
END START
实验四 数据块移动
四、 实验的运行数据及分析

五、 实验讨论及心得体会
子程序的使用使程序的各部分模块化,结构清晰明了,就是编程中很重要的方
法。通过编写这个程序,了解了C语言中print在汇编语言中需要用一个模块实现,
熟悉了 Tddebug 调试环境与 Turbo Debugger 的使用。
实验四 数据块移动

相关文档
最新文档