实验三 数据区传送子程序
数据快传送实验报告
一、实验目的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. 比较不同数据传送指令的执行时间,分析数据块传送指令的效率。
八、实验总结通过本次实验,我们了解了数据传送的基本原理和常用方法,掌握了数据块传送指令的功能和使用方法。
单片机原理与应用实验教案
《单片机原理及应用》实验教学大纲课程编号: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汇编语言设计和调试方法。
数据传送程序设计
数据传送程序设计一、实验目的:1)学习数据传送的用法以及与数据有关的不同寻址方式。
2)熟悉汇编语言程序的上机运行过程。
3)学会使用DEBUG命令调试程序。
二、实验仪器:1)仪器:英特尔586配置以上电脑一台,内存512MB以上,windowsxp 操作系统。
2)软件: MASM5.0汇编软件或者EMU8086三、实验内容:1) 将40个字母A的字符串从源缓冲区传送到目的缓冲区。
2) 将26个小写英文字母存放到数据段1偏移地址为2000H单元开始的内存中,然后转换成大写字母并传送到数据段2以3000H单元开始的存储区。
四、实验步骤:1)点击电脑的“开始”—》“运行”,输入“CMD”,打开DOS系统界面2)通过CD 命令进入MASM软件目录3)使用edit命令编辑程序(程序清单见)C:\MASM>EDIT filename.ASM(enter) (filename可以自己随意命名)4)使用masm和link命令对程序进行汇编,连接。
C:\MASM>MASM filename.asm (enter)C:\MASM>link filename.obj (enter)5)使用Debug命令调试程序,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。
C:\MASM>DEBUG filename.EXE屏幕上出现一个短划线。
为了确定我们所要设定的断点地址,常常用到反汇编命令,反汇编命令格式如下:--U ;从当前地址开始反汇编用G命令来设置断点。
比如想把断点设置在301CH处,则如下打入命令:—G301C ;程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,可以从显示的寄存器的内容来了解程序运行是否正确。
对于某些程序段,单从寄存器的内容看不到程序运行的结果,而需要观察数据段的内容,此时可用D命令,使用格式如下:—D DS:0000 ;从数据段的O单元开始显示128个字节—t 单步执行—R 查看寄存器的值—Q ;退出五、程序清单:程序1:data segment ;数据段的定义source_buffer db 40 dup('A')data ends;**************extra segment ;附加段的定义dest_buffer db 40 dup(?)extra endscode segmentorg 0100h ;程序首地址assume cs:code,ds:data,es:extrastart: push dssub ax,axpush axmov ax,datamov ds,axmov ax,extramov es,axlea si,source_bufferlea di,dest_bufferCldmov cx,40rep movsbmov ah,4chint 21hcode endsend start程序2:data1 segment ;定义数据段1org 2000h ;变量存放至数据段2000h单元source_buffer db 26 dup(?) ;预留26个字节单元data1 endsdata2 segment org 3000hdest_buffer1 db 26 dup(?) data2 ends extra segmentdest_buffer2 db 26 dup(?) extra endscode segment org 0100hassume cs:code,ds:data1,ds:data2,es:extrastart: mov ax,data1 mov ds,axlea si,source_buffer mov ax,'a' mov cx,26 xiao: mov [si],ax inc si inc axloop xiaolea di,dest_buffer2 cld mov cx,26 mov ax,extra mov es,axlea si,source_bufferda1: lodsb ;源串DS:SI 中数据送ax sub ax,20h ;将字符串转换为大写字母 stosb ;ax 内容送ES:DI loop da1 mov ax,data2 mov ds,axlea di,dest_buffer1 lea si,dest_buffer2 mov cx,26da2: mov ax,es:[si] mov [di],ax inc si inc diloop da2 mov ax, mov ah,4ch int 21hcode ends 程序2流程图end start开始系统初始化字母a送累加器ax 地址加1转换为相应大写字母送入附加段暂存26个字母传送完?将附加段数据送入数据段2返回DOSNYax内容送数据段1ax内容加1六、实验结果及分析:图1 程序1实验结果图2 程序2实验结果实验结果分析:图1中字母送入数据段及附加段以0000H为偏移段首址的同时,在以1459:0030段开始的数据段也送入了相同的数据,这是因为1459:0030与145C:0000对应相同的物理地址,即14590H+0030H=145C0H+0000H=145C0H。
单片机清零程序
《微控制器原理与应用》实验指导书实验一清零程序一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000H-20FFH的内容清零。
三、程序框图四、实验步骤用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。
五、实验报告要求(1) 实验名称、专业、班级、姓名、同组者姓名、实验台号、实验日期、交报告日期(2)实验目的(3)实验原理(4)实验步骤(5)程序清单(6)结论及体会六、思考题假使把2000H-20FFH中的内容改成FF,如何修改程序。
实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。
二、实验内容把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序框图四、实验步骤用连续或单步方式运行程序,检查2000—2002H中内容变化情况。
五、实验报告要求(1)实验名称、专业、班级、姓名、同组者姓名、实验台号、实验日期、交报告日期(2)实验目的(3)实验原理(4)实验步骤(5)程序清单(6)结论及体会六、思考题如何用断点方式调试本程序。
实验二拼字程序一、实验目的进—步掌握汇编语言设计和调试方法。
二、实验内容把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。
三、程序框图四、实验步骤单步或用断点方式运行程序,检查2002H内容变化情况。
五、实验报告要求(1)实验名称、专业、班级、姓名、同组者姓名、实验台号、实验日期、交报告日期(2)实验目的(3)实验原理(4)实验步骤(5)程序清单(6)结论及体会实验三数据区传送子程序一、实验目的掌握RAM中的数据操作。
二、实验内容把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM 区。
三、程序框图四、实验步骤在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H), R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全—致。
主程序与子程序之间的参数传递实验
实验目的:熟悉主程序和子程序之间的参数传递基本途径和方法。
实验内容:主要实验实例:(1) 把一个大写字母改写为小写字母的子程序的编写和调试。
(2) 写一个判别字符是否为数字的子程序,并利用该子程序删除一个字符串中的所有数字字符。
实验准备:有关子程序和主程序概念,及其参数传递方法。
实验步骤:(1) 上机验证所选题目,并做相应测试和分析;(2) 进行实验分析;(3) 总结指针及其程序设计、实现方法和经验;(4) 编写实验报告。
实验结果:(1)把一个大写字母改写为小写字母的子程序的编写和调试。
代码:code segmentmain proc farassume cs:codestart:push dsmov ax,0push axrepeat:call switchcall crlfjmp repeatmain endp;*************************switch proc nearmov ah,1hint 21hcmp al,'A'jb exitcmp al,'Z'jg exitadd al,32dmov dl,almov ah,2hint 21hexit:retswitch endp;*************************crlf proc nearmov dl,0dhmov ah,2int 21hmov dl,0ahmov ah,2int 21hretcrlf endp;**************************code endsend start运行结果:(2)写一个判别字符是否为数字的子程序,并利用该子程序删除一个字符串中的所有数字字符。
代码:data segmentstring db 'books 8 for 3 students$'str_len equ $-string;********************code segmentmain proc farassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov si,str_lenmov dx,offset stringmov di,0repeat:call digitalcall delcmp si,dijg repeatmov ah,9hint 21hretmain endp;*********************digital proc near;if not digital ,scan again L0:cmp string[di],'0'jb L1cmp string[di],'9'jg L1jmp exit ;if digital exitL1:inc dijmp L0exit:retdigital endp;********************del proc nearmov cx,simov bx,diL3:mov ah,string[bx+1]mov string[bx],ahinc bxcmp cx,bxjg L3retdel endp;********************* code endsend start运行结果:。
[课程]单片机数据传送实验报告
实验三数据传送实验报告㈠实验目的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, 熟悉MCS51单片机的使用方法,掌握RAM中的数据操作,掌握机器语言程序的输入,运行和调试方法。
2.掌握89C51外部RAM的数据操作,了解这两部分RAM存储器的特点和应用。
二、实验仪器计算机一台,单片机实验箱一台,MCS51 仿真开发系统。
三、实验基本原理1,51单片机具有既丰富的数据传送指令,能够实现多种数据传送操作,给程序设计带来了极大方便。
2,外部RAM的数据传送把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
该程序流程图如下四、实验内容、步骤内容:在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全—致。
步骤:1·、在单片机仿真实验系统下输入源程序并存盘;2、对源程序进行编译、链接形成目标代码,同时排除源程序中的错误;3、利用单步、连续运行或运行到光标所在行等方式进行程序调试;4、检查程序运行结果、打开并观察寄存器窗口数据,并进行析。
1.程序原代码如下:ORG 07B0HSE22: MOV DPL,R3MOV DPH,R2 ;建立源程序首址MOVX A,@DPTR ;取数MOV DPL,R5MOV DPH,R4 ;目的地首址MOVX @DPTR,A ;传送CJNE R3,#0FFH,LO42INC R2LO42: INC R3 ;源地址加1CJNE R5,#0FFH,LO43INC R4LO43: INC R5 ;目地址加1CJNE R7,#00H,LO44CJNE R6,#00H,LO45 ;字节数减1SJMP $NOPLO44: DEC R7SJMP SE22LO45: DEC R7DEC R6SJMP SE22END五、实验结果及处理运行程序前地址0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 数据12H 23H 0FFH 0ACH 0DH 09H 99H 87H 67H 12H 80H运行程序后地址2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 200A 数据12H 23H 0FFH 0ACH 0DH 09H 99H 87H 67H 12H 80H六、实验结果、分析和结论本次实验要求用MCS51 仿真开发系统做正确的数据传送指令,并验证结果。
哈工大单片机实验报告
软件实验在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验一清零程序一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000~20FFh的内容清零。
三、程序框图四、实验过程(1)实验中定义R0为循环次数,利用定义了初值的数据指针DPTR不断加1指向需要被清零的外部数据存储器单元。
(2)再利用MOVX语句,将外部存储器指定内容清零。
(3)用CJNE比较语句判断循环是否结束。
五、实验结果及分析问题回答:清零前2000H~20FFH中为内存里的随机数,清零后全变为0。
六、实验源程序;清零程序ORG 0000HMOV DPTR,#2000HMOV R0,#0FFHORG 0660HMAIN: MOV A,#00HMOVX @DPTR,AINC DPTRDJNZ R0,MAINEND实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。
二、实验内容把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序框图四、实验过程(1)定义数据指针DPTR为2000H,将其中内容送入累加器A中,利用高低四位交换语句SWAP可将高四位移至低四位,再用语句ANL与0FH进行与操作取出高四位送入2001H低位(2)再次让数据指针DPTR为2000H,将其中内容送入累加器A中,直接与0FH相与取出低四位送入2002H低位。
五、实验结果及分析问题回答:将ANL A,#0FH改为ORL A,#0F0H可以实现将高位置为1。
六、实验源程序;拆字程序ORG 0000HMAIN: MOV DPL, #00HMOV DPH, #20HMOVX A, @DPTRSWAP AANL A, #0FHINC DPTR-3-MOVX @DPTR, AMOV DPL,#00HMOVX A, @DPTRANL A, #0FHINC DPTRINC DPTRMOVX @DPTR, AEND实验三拼字程序一、实验目的进一步掌握汇编语言设计和调试方法。
数据传送指令实验
2.2 数据传送指令实验一、实验目的·掌握数据传送指令在内部RAM和外部RAM中的用法。
·掌握数据交换和堆栈指令的特点。
·掌握用Keil调试汇编源程序的方法。
·掌握用Proteus调试汇编源程序的方法。
二、实验预备知识寄存器间接寻址是把指定寄存器的内容作为操作数地址,该地址所指定的单元内容作为操作数。
这种寻址方式用于访问内部RAM和外部RAM。
◇工作寄存器RO和Rl作为间接寻址寄存器,可寻址内部RAM的低位地址的128B单元内容。
◇栈操作指令PUSH和POP,用堆栈指针SP进行寄存器间接寻址。
◇数据指针DPTR作为间接寻址寄存器,寻址外部RAM的64KB空间。
单片机开机后自动将堆栈指针SP指向07H,即(SP) =07H,一般在使用中可将堆栈设置在片内RAM的30H~7FH的范围内,栈底是固定的,栈顶是浮动的,所有的信息存入和取出都是在浮动的栈顶进行的。
这个堆栈具有FILO(先进后出)的功能。
堆栈的栈顶由堆栈指针SP 指m其栈顶的位置。
入栈(PUSH)的过程是堆栈指针SP先加1,并指向栈顶的上一个空单元,然后再将直接地址( direct)寻址的单元内容压入当前SP所指示的堆栈单元中。
出栈(POP)的过程是先将堆栈指针( SP)所指示的内部RAM(栈顶)单元中内容送入由直接地址寻址的单元中,然后再将栈指针(SP)减1并回送SP。
三、实验 1.参考程序1-内部RAM数据传送(1)将立即数#12H、#34H、#56H分别传送至内部RAM区40H、R2、A中。
(2)将内部RAM区40H、R2、A中的内容分别传送至RO、内部RAM区50H和12H中。
2.参考程序2——外部RAM数据传送(1)将立即数#2000H、#30H、#55H分别传送至DPTR、Rl、A中。
(2)将A巾的内容分别传送至外部RAM区2000H、30H中。
3.参考程序3-数据交换(1)将立即数#65H、#60H、#24H分别传送至内部RAM区60H、RO、A中。
MCS-51单片机实验4-3数据区传送
如此反复,第一次将20H内容 送A至CC30H,R000FF,FEDHHR1R各0 加1,222变012HHH 成第R2二11次H,将312H331,012HHH内R7容减R送71,至变31100成HF0E,1HHH5, R200,H R1各0加FFH1,变30成H 0FFH 2将222H12H,H32内H容,R0F送7E变H至成3213H14H,, R第0,三0FR次E1H 各2加2H1,变0成FD2H3H,3323HH ,R7变 成…1..3….
第21FH6次,将0F20HFH内3容FH送至3FH,
R0,R1变成30,40, R7=0H,
执行判断后,结束。
实验三、数据区传送子程序
【思考题1】
修改程序,把片内RAM的20H起始的10连续单元的数 据传送到30H地址开始的空间。
答:修改判断次数,将MOV R7,#16修改为 MOV R7,#10即可
实验三、数据区传送子程序
【实验目的】
掌握循环指令的使用 掌握间接寻址的用途
【接线方式】
本实验无需连接仿真机,点击“取消”进入仿真软件 界面即可。
实验三、数据区传送子程序
【实验内容及要求】
编写程序,实现以下功能 将片内RAM的20H起始的16个连续单元的数据传 送到30H地址开始的空间。
【实验流程图】
【思考题2】
编写程序,绘制流程图,把片内RAM的20H起始的20 个连续单元的数据传送到2000H地址开始的外部数据空 间。
答:修改指令,R1赋初值00H,并将P2赋值20H,则片 外首地址为2000H 将MOV @R1,A 修改为 MOVX @R1,A 即可 也可用DPTR做地址指针,程序如下
ORG 0M0O00VHR0,#20H MOV DPTR,#2000H LOOP: MMOOVV R7,#20 A,@R0MOVX INC R@0DPTR ,A INC DPTR DJNZ R7, LOOP END
微机原理数据传送的实验
微机原理数据传送的实验数据传送是微机原理中非常重要的一部分,它是指在微机系统中将数据从一个地方传送到另一个地方的过程。
数据传送分为内部数据传送和外部数据传送两种。
内部数据传送主要是指在微机系统内部进行数据传送,常涉及到寄存器和存储器之间的数据传输。
寄存器是微机系统中用于暂时存放数据的地方,而存储器则是用于永久存储数据的地方。
在微机系统中,数据的传输主要是通过总线来实现的。
总线是连接CPU、存储器和输入输出设备的一种通信线路。
数据传输通过总线分为三个步骤:地址传输、数据传输和控制传输。
首先是地址传输。
CPU通过地址总线将要访问的存储单元的地址发送给存储器。
存储器接收到地址后,将对应地址的数据准备好待传输。
然后是数据传输。
CPU通过数据总线将数据发送给存储器。
存储器接收到数据后,将数据写入相应的存储单元。
或者CPU从存储器中读取数据,存储器将所需的数据通过数据总线发送给CPU。
最后是控制传输。
控制传输是控制数据传输的信号传输。
在数据传输过程中,控制信号包括读使能、写使能、读取信号和写入信号等。
读使能信号用于告诉存储器将数据写入总线,写使能信号用于告诉存储器从总线读取数据。
读取信号和写入信号是为了使数据传输的时序正确。
除了内部数据传送,微机系统还需要和外部设备进行数据传送。
外部设备包括键盘、显示器、鼠标等。
外部设备与微机系统的数据传输需要通过接口电路来实现。
接口电路是把外部设备的数据格式转换成微机系统可识别的数据格式的电路。
通过接口电路,外部设备的数据可以传送到微机系统中,或者由微机系统的数据传送到外部设备中。
在外部数据传输中,数据传输方式主要有并行传输和串行传输两种。
并行传输是指多位数据同时传输的方式,而串行传输则是指一位一位地进行数据传输。
总之,数据传送是微机系统中非常重要的一个环节,它涉及到内部数据传送和外部数据传送。
在内部数据传送过程中,需要通过总线来进行地址传输、数据传输和控制传输。
而外部数据传送则需要通过接口电路将外部设备的数据格式转换成微机系统可识别的数据格式。
完整版微机原理试验数据传送及两个多位十进制数相加
深圳大学实验报告课程名称: _________ 微机原理及应用实验实验项目名称:数据传送及两个多位十进制数相加学院_________________________________专业__________________________________________________指导教师: __________________________________________________报告人:_学号:班级: ________________实验时间: ________________________________________实验报告提交时间: ___________________________________________教务处制、实验名称:数据传送及两个多位十进制数相加二、实验目的(1)学习数据传送和算术运算指令的用法。
(2)熟悉在PC机上建立、汇编、链接、调试和运行 8088汇编语言程序的过程。
三、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。
四、实验电路及连线(硬件实验)此实验属于软件实验,故无硬件实验的电路及连线。
五、程序说明(预习)包括程序功能,程序框图,算法说明及所用到的寄存器等。
功能:将被加数和加数分别显示,接着运行加法运算,然后将结果显示出来。
算法说明:①定义数据段:定义被加数和加数,且要使其用ASCII码以十六进制之间的转换;②定义堆栈段,并给SP_TO单元赋初值0;③定义代码段,并将源代码放在里面首先,编写主程序;接着,编写显示、回车换行和加法运算的子程序。
④程序结束。
所用到的寄存:AX SS、CS、DS ES、SI、SP、DI六、源程序清单(预习);DATAS SEGMENT ; DATA1 DB 33H,32H,38H,34H,37H DATA2 DB 34H,35H,39H,37H,31H DATAS ENDS数据段;定义DATA1为被加数;定义DATA2为加数STACKS SEGMENT ; 堆栈段STA DB 64 DUP(O) ; 为STA预留64个字节的存储空间SP_TOP DB 0 ; 定义SP_TO单元的数值为0 STACKS ENDSCODES SEGMENT ; 代码段ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置数据段MOV AX,STACKSMOV SS,AX ; 设置堆栈段LEA SP,SP_TOP ; 设置栈顶指针MOV SI,OFFSET DATA1 ; 把DATA1偏移量地址赋予SIMOV BX,05CALL DISPL ; 显示被加数CALLCRLF ; 回车、换行MOV SI,OFFSET DATA2 ; 把DATA2偏移量地址赋予SIMOV BX,05CALL DISPL ; 显示加数CALLCRLF ; 回车、换行MOV DI,OFFSET DATA1 ; 把DATA1偏移量地址赋予DICALL ADDA ; 调用ADDAF程序,实行加法运算MOV BX,05CALL DISPL ; 显示结果CALLCRLF ; 回车、换行MOV AX,4C00H ;INT 21H ; 调用DOS21H功能,返回CRLF PROC NEAR ; 回车、显示功能过程定义,属性为 NEAR MOV DL,0DH ; 把回车的ASCII码0DH传给DLMOV AH,02H ; 送DOS的中断调用功能号INT 21H ; DOS 的中断调用MOV DL,0AH ; 把换行的ASCII码0AH传给DLMOV AH,02H ;INT 21H ; DOSRET ; CRLF ENDP ;送DOS的中断调用功能号的中断调用返回完成过程定义DISPL PROC NEAR DSL: MOV AH,02 ;MOV DL,[SI+BX-1];INT 21H ; DOSDEC BX ;BXJNZ DSL ;RET ; DISPL ENDP ; 显示功能过程定义,属性为NEAR 送显示功能号显示字符串中一字符的中断调用减1,修改偏移量如果BX未减到零,跳到DSL执行指令返回完成显示功能子程序定义ADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05实行加法运算子程序过程定义,属性为TRAN_HEX: SUB BYTE PTR[SI+BX-1],30H ;把 ASCII 码数转化为十六进制SUB BYTE PTR[DI+BX-1],30HDEC BX ;BXJNZ TRAN_HEXMOV SI,DXMOV DI,BPMOV CX,05 ;CLC ;THE_ADD: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;AAA ;MOV [SI],AL ;INC SI ;SIINC DI ;DILOOP THE_ADD ;MOV SI,DXMOV DI,BPMOV BX,05 减1,修改偏移量;如果BX未减到零,跳到TRAN_HEX执行指令包括进位,共5位进位标志位 CF清零 (clear carry flag )带进位相加,把结果存在AX进行AAA调整,非结合BCD码的加法调整结果送被加数区加1加1 (指向下一位)循环TRAN_ASCI: ADD BYTE PTR[SI+BX-1],30HADD BYT田TR[DI+BX-1],30H ; 使用PTR转换属性并相加,将十六进制数转化为ASCII表示DEC BX ; BX 减1,修改偏移量RET ; 返回ADDA ENDP ;加法子程序定义完成CODES ENDS ; 代码段完成END START七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:实验三\l3.asm2.可执行程序路径及文件名:实验三\l3.exe;八、上机调试情况说明1.上机调试步骤A .通过dos对pts3.asm文件进行操作。
实验指导书(修改)
实验一清零程序一、实验目的(1)掌握汇编语言设计和调试方法;(2)熟悉MCS-51 单片机实验系统。
二、实验内容把c000H~c0FFH的内容清零。
三、程序框图清零四、实验步骤用连续或单步方式运行程序,检查C000~C0FF中执行程序前后的内容变化。
五、思考(1)对于清零程序,假使把C000H~C0FFH中的内容改成FF,如何修改本程序?(2)如何用断点方式调试程序?实验二拆字程序一、实验目的(1)掌握汇编语言设计和调试方法;(2)熟悉MCS-51 单片机实验系统。
二、实验内容把C000H的内容拆开,高位送C001H低位,低位送C002H低位,C001H、C002H 高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序框图拆字四、实验步骤程序一:用连续或单步方式运行程序,检查C000~C002H中内容变化情况。
程序二:单步或用断点方式运行程序,检查C002H内容变化情况。
五、思考编写程序:把C000H、C001H的低位分别送入C002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。
实验三数据区传送程序(综合性)一、实验目的(1)掌握RAM中的数据操作;(2)熟悉8031(8051)指令系统,掌握程序设计方法。
二、实验内容把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、程序框图数据区传送四、实验步骤在R2、R3中输入源首址(例如c000H),R4、R5中输入目的地址(例如D000H),R6、R7中输入字节数(例如0FFFH),运行程序,检查C000~CFFFH中内容是否和D000~DFFFH 中内容完全一致。
一、实验目的(1)学习P1口的使用方法;(2)学习延时子程序的编写。
二、实验预备知识本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
对于延时程序DELAY: MOV R6,#00HDELAY1:MOV R7,#80HDJNZ R7,﹩DJNZ R6,DELAY1MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/6.0MHZ,所以该段指令执行时间为:((80+1)×256+1)×2×(12÷6000000)=132.1ms。
汇编语言程序设计实验报告三(子程序设计实验)
汇编语言程序设计实验报告三(子程序设计实验)汇编语言程序设计实验报告三(子程序设计实验)实验目的掌握主程序与子程序之间的调用关系及其调用方法。
掌握子程序调用过程中近程调用与远程调用的区别。
熟练掌握码型变换的程序。
实验内容从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。
要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。
数据可循环输入,遇‘00’结束。
实验准备预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。
熟悉键盘输入和字符显示的程序段的编制。
实验步骤编辑、汇编源程序,生成可执行文件。
执行程序,检查输入、输出结果,看是否正确。
如不正确,用DEBUG检查,修改源程序,再汇编、运行,直到程序正确为止。
用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。
实验报告要求分析近程调用和远程调用的主要区别。
用DEBUG命令观察执行过程有何不同。
分析实验结果及所遇到的问题的解决方法。
程序流程图开始TRAN程序标准序开始读入十进制数据放AX中AXAXAND0F0FH是00?YBLALN调用转换子程序结束AL左移3位回车、换行BL左移1位于ALAL+BL主程序流程图ALAL+AHRET转换子程序TRAN流程图程序清单STASEGMENTSTACK’STACK’DB100DUP(0)STAENDS GSAGSEGMENTPARA‘CODE’ASSUMECS:CSAG MAINPROCFARSTRAT:PUSHDSSUBAX,AXPUSHAXREV:MOVAH,1INT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030H JEENDTRAN CALLNEARPTRTRAN CALLFARPTRCON MOVAL,0DH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP JMPREV ENDTRAN:RET MAINENDP TRANPROCNEAR ANDAX,0F0FHMOVBL,ALMOVBL,ALMOVCL,3SHLAL,CLMOVCL,1SHLBL,CLADDAL,BLADDAL,AHRETTRANENDPCSAGENDS CSBGSEGMENTPARA’CODE’ASSUMECS:CSBG CONPROCFARPUSHAXMOVCL,4 SHRAL,CL ADDAL,30H CMPAL,39H JBECON2 ADDAL,7CON2:PUSHAX MOVAL,0DH CALLFARPTRDISP MOVAL,OAH CALLFARPTRDISP POPAX CALLFARPTRDISP POPAX ANDAL,0FHADDAL,30H CMPAL,39H JBECON1ADDAL,7CON1:CALLFARPTRDISP RETCONEDNP DISPPROCFAR PUSHBXMOVBX,0MOVAH,14INT10HPOPBXRETDISPENDPCSBGENDS ENDSTART。
实验三 数据区传送子程序设计
实验三:数据区传送子程序设计院(系):电子工程学院课程名称:单片机原理及应用 日期:4.3.1 实验目的1. 掌握汇编语言指令的使用规范。
2. 掌握汇编语言程序设计方法。
3. 掌握MCS-51单片机的存储器结构。
4. 掌握单片机中数据存储形式。
4.3.2 实验预习1.熟悉Keil 集成编译环境的使用方法。
2. 复习单片机指令系统。
3. 复习利用Keil 集成编译环境查看单片机存储器状态的方法。
4.3.3 实验原理本实验需完成数据块的移动,用循环和分支程序完成,循环次数控制可用DJNZ 指令,分支可用条件判断指令。
4.3.4 预作实验任务1. 补全程序以完成程序功能。
程序功能:根据R6的值给R7赋值:⎪⎩⎪⎨⎧<-=>=0610600617R R R R MOV A,R6 ;取出R6COMP ;R6=0则转移到COMPACC.7,POSI ;R6>0则转移到POSIMOV A, ;R6<0则R7=-1(0FFH )SJMP COMP POSI:MOV A,;R6>0则R7=1COMP:MOV R7, ;保存结果2. 补全程序以完成程序功能。
程序功能:求1~10的累加和,结果存放到R7:MOV A, ;A清零MOV R0,#01H ;R0赋初值MOV R7, ;设置循环次数NEXT: ADD A,INCDJNZ ,NEXTMOV R7, ;保存结果3. 编写程序,将内部数据存储器20H~3FH这32个字节奇数地址的数据全部设为55H;偶数地址的数据全部设为0AAH。
4. 在项目3的基础上,编写程序,将20H~3FH的数据按顺序存放到40H~5FH。
5. 在项目3的基础上,编写程序,将20H~3FH的数据按逆序存放到5FH~40H。
4.3.5 实验任务编写程序,用伪操作指令给程序存储器0200H~023FH这32个字节任意赋值,然后从0200H单元开始查找,将找到的正数按顺序存放到内部数据存储器20H开始的存储区,将找到的负数按顺序存放到40H开始的存储区。
数据块传送实验报告
一、实验目的1. 理解数据块传送的基本原理和操作方法。
2. 掌握数据块传送指令的运用。
3. 熟悉汇编语言编程环境,提高编程能力。
二、实验原理数据块传送是指将一段内存区域中的数据复制到另一段内存区域的过程。
在计算机系统中,数据块传送广泛应用于各种场景,如文件复制、数据备份等。
数据块传送指令是汇编语言中的一种基本指令,可以实现对内存中数据的快速传送。
数据块传送指令主要有以下几种:1. MOVS(Move String):将源字符串中的数据复制到目的字符串中。
2. CMPS(Compare String):比较源字符串和目的字符串,判断它们是否相等。
3. SCAS(Scan String):将源字符串中的数据与AL寄存器中的值进行比较。
三、实验设备1. 实验平台:PC微机一台2. 实验软件:汇编语言编程环境(如MASM、TASM等)3. 实验数据:一段待传送的数据块四、实验内容1. 数据块初始化2. 数据块传送3. 数据块传送结果分析五、实验步骤1. 数据块初始化(1)在数据段中定义两个数据块,分别命名为source和destination。
source DB 'Hello, World!', 0destination DB 12 DUP(0)(2)设置数据段寄存器DS指向数据段。
MOV AX, @DATAMOV DS, AX2. 数据块传送(1)设置源数据块偏移地址SI指向source数据块的起始地址。
MOV SI, OFFSET source(2)设置目的数据块偏移地址DI指向destination数据块的起始地址。
MOV DI, OFFSET destination(3)设置CX寄存器为数据块长度,即source数据块的长度。
MOV CX, 12(4)使用MOVS指令将source数据块中的数据复制到destination数据块中。
MOVS destination, source(5)数据块传送完成后,判断CX寄存器的值,如果为0,则传送完成。
实验三 数据区传送子程序
单片机原理及其接口技术实验报告
实验三:数据区传送子程序
学院:基础与信息工程学院专业:电子信息工程专业学号:姓名:日期:
一.实验目的:
1、掌握51汇编程序书写、编译。
2、熟悉51指令的运用。
3、掌握内51中子程序调用方法。
二.实验要求:
1、编写子程序:将7000H单元开始的二进制代码数据转移到20H
开始的内RAM单元,数据为00H时结束转移。
2、在主程序中调用子程序。
三.实验流程图及源程序:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
ACALL HASC
SJMP $
HASC: PUSH PSW
PUSH ACC
PUSH 00H
PUSH DPL
PUSH DPH
MOV DPTR,#7000H
MOV R0,#20H LOOP: MOVX A,@DPTR
JZ NEXT
MOV @R0,A
INC R0
INC DPTR
SJMP LOOP NEXT: POP DPH
POP DPL
POP 00H
POP ACC
POP PSW
RET
END
四.心得体会:
1.学会了使用ACALL addre11指令,了解了子程序的调用。
2.通过参照课本上的例子,加深了对课本上程序的理解。
3.实验时总有些不理解的部分,还要多多看书了解。
MCS-51实验指导书
单片机仿真实验系统MCS-51实验指导书南昌大学本实验指导是为适应单片机原理与应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。
完成本实验指导中的实验,可使学生基本掌握MCS-51单片机的结构原理、接口技术、程序设计技巧。
实验指导书中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。
单片机实验注意事项:1:主CPU为8032,需要扩充一片6264作为数据区,连接6264的读写信号到CPU的读写信号,连接CS1到A15;连接数据线,连接地址高低线;2:实验仪上的波段开关必须选择9600波特率,和51系统;3:接线和拔线时必须断电, PC微机必须与本实验系统保持联机状态,即软件界面右上角有编译进度条,确定连机状态才可调试程序;4:通过RS232通信接口,利用上位机实现用户程序的编辑、编译和调试运行。
在软件的设置栏内,点击仿真模式,选择系统、系统;注意:上位机的存盘文件名只能用英文字母和数字组合,长度不能超过8位且存盘路径必须在默认的C 盘DAIS目录下;5:系统接口实验电路为单元电路方式,数据总线以8芯扁平线形式引出,硬件学生连线为电路图上粗实线。
部分机器硬件介绍可参考微机原理实验指导书。
目录软件实验部分:实验一清零程序实验二拆字程序实验三拼字程序实验四数据区传送子程序实验五数据排序实验实验六查找相同数个数实验七无符号双字节快速乘法子程序实验八多分支程序实验九脉冲计数(定时/计数器实验)实验十电脑时钟(定时器、中断综合实验)硬件实验部分:实验一 P1口亮灯实验实验二 P1口转弯灯实验实验三 P3.3口输入,P1口输出实验四工业顺序控制实验五继电器控制实验六 8255控制交通灯实验七 LED16×16点阵显示实验实验八串并转换实验实验九 A/D转换实验实验十 D/A转换实验十一电子音响实验十二步进电机控制实验十三 8032串行口应用实验㈠——双机通信实验十四小直流电机调速实验软件实验部分本节共编了十个软件实验,通过这些实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验三串操作实验微机原理与接口技术
2.完善以下程序,将数据段的sbuf指示的“Hello world!”字符串传送到数据段的dbuf 缓冲区。
要求在Turbo Debugger中调试该程序,数据区如下图所示。
DSEG SEGMENTsbuf DB 'Hello world!','$'dbuf DB13 dup(0) ;定义了13个字节的0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV ES, AXMOV CX, 0DHMOV SI,OFFSET sbufMOV DI,OFFSET dbufCLDREP movsbLEA DX,dbuf ;取有效地址指令lea 将存储器地址送到一个寄存器MOV AH,09HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START3.用简化段定义的源程序格式改写以上汇编语言源程序。
.model small.stack.datasbuf db 'Hello world!','$'dbuf DB 13 dup(0).codestart: mov ax,@datamov ds,axmov es, axmov cx, 0dhmov si,offset sbufmov di,offset dbufcldrep movsblea dx,dbufmov ah,09hint 21hmov ah,4chint 21hend start4.从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si sihT”),试编写程序段并上机验证(将结果截图)。
assume cs:code,ds:datasg,ss:stackdatasg segmentdb 'THIS IS A STRING'db 1000 dup(1)datasg endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,datasg实验内容与实验结果mov ds,axmov es,axmov si,0mov di,30cldrep movsbmov cx,16tag: CLDLODSBSTDSTOSBLOOP tagmov ax,4c00hint 21hcode endsend start5.用简化段定义的源程序格式编写一个汇编语言源程序。
单片机数据区传送程序设计
单片机数据区传送程序设计一、实验目的1.进一步掌握汇编语言程序设计和调试方法。
2.了解单片机RAM中的数据操作。
二、实验内容1.要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。
2.框图如下,文件名为:X X X X S2班级学号三、实验步骤1.打开电源,PC机开机正常工作后,启动Keil C集成开发环境。
2.新建工程,新建文件、保存并添加到工程中。
3. 在编辑器中编写程序,完成功能要求。
在R2、R3中输入源地址(例如:0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如:1FFFH)。
3.查看RAM 区0000~1FFFH和2000~3FFFH内容,也可自己重新赋值。
4.编译程序,运行程序,首先单步,然后用自动单步,最后用连续运行方式。
5.记录下运行结果,检查0000~1FFFH中内容是否和2000~3FFFH内容完全一致。
四、要求1.写出自己编写的程序,并写出原理性注释。
2.将检查程序运行的结果,分析一下是否正确。
五、思考题如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?六、参考程序参考程序1:ORG 0000HLJMP MAIN...ORG 0100HMAIN: MOV R2,#00HMOV R3,#00HMOV R4,#20HMOV R5,#00HMOV R6,#1FHMOV R7,#0FFHSE22: MOV DPL,R3MOV DPH,R2 ;建立源程序首址MOVX A,@DPTR ;取数MOV DPL,R5MOV DPH,R4 ;目的地首址MOVX @DPTR,A ;传送CJNE R3,#OFFH,LO42INC R2LO42: INC R3 ;源地址加1CJNE R5,#0FFH,L043INC R4LO43: INC R5 ;目的地址加1CJNE R7,#00H,LO44CJNE R6,#00H,LO45 ;字节数减1SJMP $NOPLO44: DEC R7SJMP SE22LO45: DEC R7DEC R6SJMP SE22 ;未完继续END参考程序2:ORG 0000HLJMP MAIN...ORG 0100HMAIN: MOV R2,#00HMOV R3,#00HMOV R4,#20HMOV R5,#00HMOV R6,#1FHMOV R7,#0FFHSE22: MOV DPL,R3MOV DPH,R2 ;建立源程序首址MOVX A,@DPTR ;取数INC DPTRMOV R2,DPHMOV R3,DPLMOV DPL,R5MOV DPH,R4 ;目的地首址MOVX @DPTR,A ;传送INC DPTRMOV R4,DPHMOV R5,DPLDEC R7CJNE R7,#00H,SE22CJNE R6,#00H,LO45 ;字节数减1SJMP $NOPLO45: DEC R6SJMP SE22 ;未完继续END。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及其接口技术实验报告
实验三:数据区传送子程序
学院:基础与信息工程学院专业:电子信息工程专业学号:姓名:日期:
一.实验目的:
1、掌握51汇编程序书写、编译。
2、熟悉51指令的运用。
3、掌握内51中子程序调用方法。
二.实验要求:
1、编写子程序:将7000H单元开始的二进制代码数据转移到20H
开始的内RAM单元,数据为00H时结束转移。
2、在主程序中调用子程序。
三.实验流程图及源程序:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
ACALL HASC
SJMP $
HASC: PUSH PSW
PUSH ACC
PUSH 00H
PUSH DPL
PUSH DPH
MOV DPTR,#7000H
MOV R0,#20H LOOP: MOVX A,@DPTR
JZ NEXT
MOV @R0,A
INC R0
INC DPTR
SJMP LOOP NEXT: POP DPH
POP DPL
POP 00H
POP ACC
POP PSW
RET
END
四.心得体会:
1.学会了使用ACALL addre11指令,了解了子程序的调用。
2.通过参照课本上的例子,加深了对课本上程序的理解。
3.实验时总有些不理解的部分,还要多多看书了解。