单片机 数据块传送 软件实验3
数据快传送实验报告

一、实验目的1. 理解数据传送的基本原理和常用方法。
2. 掌握数据块传送指令的功能和使用方法。
3. 熟悉汇编语言编程,实现数据快速传送。
二、实验原理数据传送是计算机组成原理中的一项基本操作,主要涉及内存与寄存器、寄存器与寄存器之间的数据交换。
数据传送指令包括传送指令、数据块传送指令等。
数据块传送指令能够实现内存与寄存器、寄存器与寄存器之间的一组数据的快速传送。
三、实验设备1. 实验箱2. 电脑3. 汇编语言编程软件(如:MASM、TASM等)四、实验内容1. 编写汇编语言程序,实现数据块传送。
2. 通过程序观察数据传送的结果,分析数据传送指令的执行过程。
五、实验步骤1. 设计实验程序,实现数据块传送。
2. 编译实验程序,生成可执行文件。
3. 在实验箱上运行实验程序,观察数据传送结果。
4. 分析实验结果,验证数据传送指令的正确性。
六、实验程序以下为实验程序示例:```assembly; 数据块传送实验程序DATA SEGMENT; 定义源数据段source DB 1,2,3,4,5,6,7,8DATA ENDSCODE SEGMENTSTART:; 初始化数据段寄存器MOV AX, DATAMOV DS, AX; 初始化数据块传送指令参数MOV CX, 8 ; 传送字节数MOV SI, OFFSET source ; 源数据段偏移地址 MOV DI, OFFSET dest ; 目标数据段偏移地址 ; 执行数据块传送指令CLDMOVSB; 传送结果分析; ...; 程序结束MOV AX, 4C00HINT 21HCODE ENDSEND START```七、实验结果与分析1. 在实验箱上运行实验程序,观察数据传送结果。
2. 分析实验结果,验证数据传送指令的正确性。
3. 比较不同数据传送指令的执行时间,分析数据块传送指令的效率。
八、实验总结通过本次实验,我们了解了数据传送的基本原理和常用方法,掌握了数据块传送指令的功能和使用方法。
单片机 熟悉键盘操作及数传指令 软件实验

实验一 熟悉键盘操作及数传指令编程设计1、 实验目的1. 熟悉软件模拟调试的环境及键盘操作。
2. 掌握汇编语言程序设计的方法,加深对指令的理解。
3. 学会软件模拟调试和察看修改观察项的方法。
2、 实验内容印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。
三、实验步骤1. 进入调试软件环境,输入源程序;2. 汇编源程序;3. 用单步方式运行程序;4. 检查并记录各寄存器和存储单元内容的变化。
四、程序清单内部RAM 数据传送需要查看的数据有30H,31H,A,R0等。
30H 31H A R0ORG 0000HOOH 00H 00H 00HMOV R0,#30H (R0)=30H 2字节00H 00H 00H 30HMOV 30H,#45H (30H)=45H 3字节45H 00H 00H 30HMOV 31H,#46H (31H)=46H 3字节45H 46H 00H 30HMOV R2,30H (R2)=(30H)=45H 2字节45H 46H OOH 30HMOV 02H,31H (02H)=(31H)=46H (R2)=(31H)=46H 3字节 45H 46H00H 30HMOV A,#87H (A)=87H (0E0H)=87H 2字节45H 46H 87H 30HMOV 0E0H,30H (0E0H)=(30H)=45H (A)=45H (psw)=01H(P)=01H 3字节45H 46H 45H 30HMOV 30H,A (30H)=(A)=45H 2字节5H 46H 45H 30HMOV 31H,@R0 (31H)=((R0))=(30H)=45H 2字节45H 45H 45H 30HSJMP $外部数据传送需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。
KEIL3软件教程

MOV @R1, A ;源数据送目的地址单元(调试时观察 R1 的间接寻址的作用)
;执行完上条指令时,观察数据存储区 40H-4FH 单元里数据的变化,并记录在表 1-2 中
INC R0 ;修改源地址指针
INC R1 ;修改目的地址指针
DJNZ R2, Loop2 ;控制循环次数和循环位置(观察 R2 里数据的变化,体会 DJNZ 指令的作用 )
图 1-8 调试工具栏
(5) 调试实验程序,记录实验数据 实验操作 1
单击“视图”菜单打开“反汇编窗口”,可以看到经过编译后各条指令对应的机器码和存储地址,如图 1-9 所示。
存储器地址
机器代码
源程序行
源指令
图 1-9 反汇编窗口
实验操作 2
单击“视图”菜单打开“存储器窗口”, 在地址栏里输入 C:0, 回车,此时“Memory#1”窗口表示的是程序存
数据,并记录于表 1-2 中。
数据存储器地址 30H 数值
数据存储器地址 38H 数值
表 1-2
31H
32H
33H
34H
35H
36H
37H
39H 3A H 3B H 3C H 3D H 3E H 3F H
数据存储器地址 40H
41H
42H
43H
44H
45H
46H
47H
数值
数据存储器地址 48H
49H
了解单片机传送数据的工作过程。并通过数据存储器窗口查看 30H-3FH 地址里的数据,并记录于表 1-2 中。
实验操作 4
连续操作“跟踪” 命令,逐条执行 two 到 SJMP $ 之间的指令,在图 1-12 特殊寄存器窗口观察 R0、R1、R2、
单片机原理与应用实验教案

《单片机原理及应用》实验教学大纲课程编号:B04611016课程类别:专业课实验学时:16学时学分:2.5适用专业:计算机科学与技术一、实验教学目的和任务本课程是计算机及应用专业一门重要的专业课。
其教学内容直接面向生产。
同时,微机向小型化、超小型化方面发展愈来愈迅猛。
单片机应用已渗透社会各个领域,特别在通信技术中的应用,大大提高了通信技术水平。
学生应具备这方面的知识与技能,为今后参加工作,打下坚实的基础。
二、实验教学基本要求本课程是一门很注重实践的课程。
以研究MCS-51系列单片机入手,掌握其硬件结构、指令系统和程序设计,以及常用接口技术和典型应用实例。
三、实验教学内容实验项目一:清零程序1、实验目的及要求要求学生掌握软件的结构和键盘的调试。
2、实验内容及学时分配(2学时)(1)了解MCS-51软件的构造(2)掌握清零程序的输入方法(3)了解起始伪指令的输入方法实验项目二:拼字和拆字程序1、实验目的及要求要求学生掌握存储器分配和汇编语言的简单应用。
2、实验内容及学时分配(2学时)(1)进一步掌握MCS-51软件的基本使用方法(2)掌握指令的寻址方式(3)掌握数据传送指令和地址内容的分配实验项目三:数据区传送子程序1、实验目的及要求要求学生掌握RAM数据存储器实际操作。
2、实验内容及学时分配(2学时)(1)掌握MCS-51逻辑运算指令和位操作指令(2)进一步掌握数据传送子程序的简单方法(3)掌握查表程序的编写实验项目四:数据排序实验1、实验目的及要求要求学生掌握汇编语言的应用和实际操作。
2、实验内容及学时分配(2学时)(1)掌握MCS51逻辑运算指令和位操作指令(2)进一步掌握简单顺序程序的编写和调试方法(3)掌握查表程序的编写实验项目五:查找相同个数1、实验目的及要求熟悉汇编语言程序,使用环移指令和加1指令。
2、实验内容及学时分配(2学时)(1)掌握赋值指令(2)掌握带进位的环移指令和加1程序的编写实验项目六:双字节无符号数的乘法实验1、实验目的及要求要求学生掌握MCS-51汇编语言设计和调试方法。
单片机实验一片内外清零、数据块的传送

单片机实验报告专业:电子信息工程班级:姓名:学号:指导教师:单片机实验报告实验项目名称:片内外清零、置位和数据块传送程序实验日期: 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键,单步运行程序。
试验二 数据传送试验

mov r0,#30h mov dptr,#1000h mov r7,#48 loop: mov a,@r0 movx @dptr,a inc r0 inc dptr djnz r7,loop ljmp$ end
移动片内RAM 移动片内 30H—>片外 片外RAM 片外 1000H,48字节长 , 字节长 度。
三、实验内容和步骤 1、启动计算机,打开伟福仿真软件,进入仿真环境。 、启动计算机,打开伟福仿真软件,进入仿真环境。 2、移动片内 片外RAM 1000H,48字 、移动片内RAM 30H—>片外 片外 , 字 节长度。设计程序进行编译,编译无误后, 节长度。设计程序进行编译,编译无误后,打开 数据窗口(DATA,XDATA),观察 数据窗口 , ,观察DATA窗口中地 窗口中地 开始的48个单元 址30H开始的 个单元,XDATA窗口中地址 开始的 个单元, 窗口中地址 1000H起始的 个单元;若各单元内数据对应相 起始的48个单元 起始的 个单元; 则用键盘输入改变其中一块的数据, 同,则用键盘输入改变其中一块的数据,全速运 行程序。点击暂停按钮,观察两个存储块的数据, 行程序。点击暂停按钮,观察两个存储块的数据, 可以看到两块数据已相同, 可以看到两块数据已相同,说明存储块内数据已 传送。 传送。
初始化 循环体 否 循环结 束? 结束
3、移动片外 、 移动片外RAM 1000H-->2000H,256字节 , 字节 长度。设计程序进行编译,编译无误后, 长度 。 设计程序进行编译 , 编译无误后 , 打 开数据窗口(XDATA), 观察地址 开数据窗口 , 观察地址1000H起始 起始 个字节存储块和2000H起始的 起始的256个字 的256个字节存储块和 个字节存储块和 起始的 个字 节存储块,若各单元内数据对应相同, 节存储块 , 若各单元内数据对应相同 , 则用 键盘输入改变其中一块的数据, 键盘输入改变其中一块的数据 , 全速运行程 点击暂停按钮,观察两个存储块的数据, 序 。 点击暂停按钮 , 观察两个存储块的数据 , 可以看到两块数据已相同, 可以看到两块数据已相同 , 说明存储块内数 据已传送。 据已传送。
单片机实验

实验一数据传送指令的使用及编程方法1.片内RAM的数据传送【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#40H R0MOV R1,#41H R1MOV A,R0 AMOV 30H,A 30HMOV 20H,30H 20HMOV A,#30H AMOV @R0,A 40HMOV A,30H AMOV R7, A R7MOV A,@R0 AMOV R7,A R7MOV DPTR,#0A702H DPTRMOV 30H,R7 30HMOV 20H,@R0 20HMOV 21H,#10H 21HMOV @R0,21H 10HMOV @R1,#01H 41HSJMP $END【实验要求】(1)理解源程序中每条数据传送指令的操作含义,将结果填入每个单元的相应“内容”中。
(2)单步运行源程序,逐条检查“内容”是否正确。
2.外部RAM的数据传送。
【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV DPTR,#1A33H DPTRMOV A,#80H AMOVX @DPTR,A 1A33HMOV A,#00H AMOV P2,#1AH P2MOV R0,#34H R0MOV R1,#35H R1MOVX @R0,A 1A34HMOVX A,@DPTR AMOVX @R1,A 1A35HMOVX A,@R0 AMOVX A,@R1 ASJMP $END【实验要求】(1)理解源程序指令含义,指出各存储单元的内容,写在右边的“内容”中。
(2)单步运行源程序,逐条验证分析结果。
3.片内特殊功能寄存器(SFR)的数据传送【实验程序】源程序ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60H ;设栈指针MOV R0,#30H ;#30H送R0(0区)MOV P1,#0EFH ;#EFH送P1口(直接地址为90H)MOV @R0,P1 ;将P1内容送R0所指单元MOV C,P1. 1 ;将P1口的D1位内容送CMOV P1. 7,C ;将CY的内容送P1. 7PUSH PSW ;保护0区寄存器MOV PSW,#08H ;选择1区寄存器MOV R0,#40H ;#40H送1区寄存器R0(08H)MOV @R0,P1 ;P1口内容送1区R0所指单元POP PSW ;恢复0区寄存器SJMP $END【实验要求】(1)理解源程序指令含义,并参照注释写出结果。
[课程]单片机数据传送实验报告
![[课程]单片机数据传送实验报告](https://img.taocdn.com/s3/m/a6b6bc37ae45b307e87101f69e3143323968f5a4.png)
实验三数据传送实验报告㈠实验目的1.进一步掌握程序的编辑、汇编及调试方法;2.掌握单片机内部RAM和外部RAM的数据操作;3.了解单片机系统地址分配概念。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求1.以数据表格形式在ROM中建立一个含有正数和负数的表格,数据长度为16个字节,要求放置八个正数、八个负数,正、负数应离散随机放置,不允许三个以上同类型数据连续放置,数据的具体内容自行确定;2.编制程序,将数据表格中的数据读出并按正、负数归类,正数送入首地址为40H的内部RAM中;负数送入首地址为0B000H的外部RAM中;3.将首地址为0B000H的外部RAM中的数据取出并求其绝对值,然后送入内部RAM的48H~4FH单元。
程序如下:ORG 0000HAJMP MAINORG 0060HMAIN:MOV A,#10H ;数据长度放入了累加器A中MOV R1,#0B0H ;负数所需送入的首地址高位放入R1MOV 20H,#00H ;负数所需送入的首地址低位放入20H单元中MOV R0,#40H ;正数所需送入的首地址40H放到R0中去MOV DPTR,#0A00H ;将表格开始的位置放入DPTR;以上为初始化的全部内容PUSH DPHPUSH DPLPUSH ASTART:POP APOP DPLPOP DPHPUSH A ;将A压栈,保护里面存储的数据长度10HMOV A,#00HMOVC A,@A+DPTR ;读表头地址MOV 20H,AINC DPTR ;DPTR指针加1,以读取表格中下一个数PUSH DPH ;为了保护DPTR中存储的表格地址,压栈以便于放入0B000H,存储负数PUSH DPLJUDGE:MOV A,20HRLC AJC NEGATIVE ;判断语句,标志位为1,转去N(负数);否则往下执行OPPOSITE:MOV A,20HMOV @R0,A ;正数放入到以40H为首地址的单元中去INC R0 ;进入下一个单元以存放下一个正数POP DPLPOP DPHPOP ADEC A ;数据长度减一,代表已经读取了一个数PUSH DPHPUSH DPLPUSH AJNZ START ;如果数据长度不为0,表格还未读取完毕,返回STARTSJMP END1 ;如果数据读取完毕,就跳去NEXT1NEGATIVE:MOV A,20HMOV DPH,R1MOV DPL,20HMOVX @DPTR,AINC DPTR ;0B000H加1,下一个负数存储单元MOV 20H,DPLMOV R1,DPHPOP DPLPOP DPHPOP ADEC APUSH DPHPUSH DPLPUSH AJNZ START ;和正数相同JMP NEXT1NEXT1: MOV A,#08H ;负数的数据长度放入A中MOV DPTR,#0B000H ;负数现在存储位置放入DPTRNEXT2: PUSH A ;将A压栈,保护其中负数的数据长度MOVX A,@DPTR ;读负数存储的首地址CPL A ;取反INC A ;加1MOV @R0,A ;将第一个绝对值入到48H单元(这里其实写的并不是很好,如果正数和负数的绝对值存储位置并不相连,就不可以用了)INC DPTR ;地址加1,下一个负数位置INC R0 ;进入下一个存储单元POP ADEC A ;数据长度减1JNZ NEXT2 ;负数还没读完,继续SJMP $ ;负数全部转成绝对值存储,程序结束ORG 0A00HTABLE:DB 0F0H,10H,80H,25HDB 0B2H,0A4H,30H,08HDB 0D6H,54H,01H,8FHDB 0C0H,27H,0CDH,09H运行结果:40H~47H中内容为10H,25H,30H,08H,54H,01H,27H,09H48H~4FH中内容为10H,80H,5EH,5CH,2AH,71H,50H,44H0B000H~0B007H中内容为0F0H,80H,0B2H,0A4H,0D6H,8FH,0C0H,0CDH硬件部分:A15~A12对应的选中芯片,因为B为1011,所以应该选中A14口连接到芯片CS,低电平有效,这样就成功选中芯片进行了扩展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数传指令和算数运算指令编程设计
一、实验目的
1.掌握数据块的传送操作和算术运算指令的应用。
2.进一步掌握汇编语言设计和调试方法。
3.掌握观察窗口的使用方法。
4.学会给存储单元赋初值的方法。
二、实验内容
1.数据区传送
(1)把内部RAM 40H~4FH置初值0A0H~0AFH;
(2)而后把40H~4FH内容传送到外部RAM 9800H~980FH中;
(3)再把 9800H~980FH内容传送到 50H~5FH中。
2.多字节十进制加法
加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H 开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。
三、实验步骤
1.分别用单步和连续运行方式,调试上述两个程序;
2.在执行第二个程序之前,给被加数和加数单元赋初值;
3.在观察窗口中观察结果。
四、实验程序清单
1.数据块传送程序:
命令行命令结果备注
MAIN MOV R0,
#40H
MOV R2,
#10H
MOV A,
#0A0H
MOV @R0, A A1
INC R0
INC A
DJNZ R2,
A1
循环判定命令,重复执行A1共R2次,,DPTR指针递增,PC指针循
环
0x0006---0x0
009
MOV R0, #40H
MOV DPTR, #9800H
MOV R2,
#10H
MOV A, @R0 A2
MOVX @DPTR,
A
INC R0 INC DPTR
循环判定命
令,重复执行
A2共R2次,
DPTR指针递
增, PC指针循
环
0x0012---0x0
016 DJNZ R2, A2
MOV R0,
#50H
MOV DPTR, #9800H
MOV R2, #10H
A3 MOVX A, @DPTR
MOV @R0, A INC DPTR
INC R0
DJNZ R2, A3
循环判定命令,重复执行A3共R2次,DPTR指针递增, PC指针循
环
0x001F---0x0
023
2.多字节十进制加法:
初始赋值:
20H 21H 22H 23H 24H 41 25 50 24 37 30H 31H 32H 33H 34H 23 27 13 12 40
命令行命令结果
MAIN MOV R0, #30H
MOV R1, #20H
MOV
2FH,#04H
CLR C
DA1
MOV A,@R0
ADDC
A, @R1
DA A 没有进位,因此调整命令没有引起变化
MOV
@R1, A
INC R0 INC R1
DJNZ
循环判定命令,PC指针循环0x0008---0x0011 2FH, DA1
MOV 7FH,
C
五、思考题
1若两个数据块都在外部数据存储器中,如何实现数据块的传送?
答:选择R0和DPTR两个指针,用MOVX命令经过A累加器进行数据块传输。
2在调试第一个程序时,若不用程序给40H~4FH赋初值,而用键盘在CPU DATA区给40H~4FH单元预赋初值,如何做?
答:在存储器窗口d:0x00处键入d:0x40然后键入所需要的初值。
3若把第二个程序改为无符号数的减法,怎样修改程序?
答:将ADDC命令改为SUBB命令,去掉DA命令行
4在第二个程序中,若两数的和存放到从40H开始的单元,如何修改程序?
答:ORG 0000H
MAIN: MOV R0,#30H
MOV R1,#20H
MOV R3,#40H
MOV 2FH,#04H
CLR C
DA1: MOV A,@R0
ADDC A,@R1
DA A
MOV @R3,A
INC R0
INC R1
INC R3
DJNZ 2FH,DA1 MOV 7FH,C
SJMP $
END
程序修改处如绿字v。