当前位置:文档之家› 单片机 数据块传送 软件实验1

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

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

实验2:数据块传送程序:

1.数据块传送程序 :

ORG 0000H

MAIN: MOV R0,#40H

MOV R2,#10H

MOV A,#0A0H

A1: MOV @R0, A

INC R0

INC A

DJNZ R2, A1

注:此时R2=10h,通过djnz之后,r2=09h≠0,则跳转到A1段

开始重复A1段中之前的语句。R0从40h依次增加至4fh,R2则依次从10h 减少至01h,此时,在运行至djnz之后r0=00h,然后顺序执行语句。从而完成了给40h~4fh赋值的目的。

MOV R0, #40H

MOV DPTR, #9800H

MOV R2, #10H

注:此处重新给r0 ,dptr,

r2.赋初值

A2: MOV A, @R0

MOVX @DPTR, A

INC R0

INC DPTR

DJNZ R2, A2

MOV R0, #50H

MOV DPTR, #9800H

MOV R2, #10H

A2: MOV A, @R0 注:(40h)=a0h

MOVX @DPTR, A

INC R0

INC DPTR

DJNZ R2, A2

注:此时r2=10h,经过djnz语句之后,r2=0fh≠0h,则语句跳转至A2处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内传至片外的目的

MOV R0, #50H

MOV DPTR, #9800H

MOV R2, #10H

A3: MOVX A, @DPTR

MOV @R0, A

INC DPTR

INC R0

DJNZ R2, A3

注:此时r2=10h,经过djnz语句之后,r2=0fh≠0h,则语句跳转至A3处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内外回传至

片内的目的

2.多字节十进制加法:

注:赋初值(30h)=23h,(20h)=41h,(31h)=27h,(21h)=25h,(32h)=13h,(22h)=50,(23h)=12h,(33h)=24h,(24h)=40h,(34h)=37h ORG 0000H

MAIN: MOV R0, #30H

MOV R1, #20H

MOV 2FH,#04H

CLR C

DA1: MOV A,@R0

ADDC A, @R1 注:此时a=23h,(20h)=41h,经过addc

之后,a=64h

DA A 进行2进制到十进制调整

MOV @R1, A

INC R0

INC R1

DJNZ 2FH, DA1 注:(2fh)=04h,经过djnz指令之后,(2fh)

=03h≠0,则程序跳转至da1,直到

(2fh)=0h后,顺序执行

MOV 7FH, C 从而实现分别将(3ih)与(2ih)(其

中i=0~4)的和经过da调整后,存

放到2i中

SJMP $

END

一、思考题

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

程序修改处如红字。

单片机数据传送实验报告

实验名称: 数据传送实验 实验类型: 设计性实验 姓名:袁志生 时间:第五六节课 一、实验目的与要求 实验目的:1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 实验要求:1、实现单片机内部RAM之间,外部RAM之间以及内部RAM 与外部RAM之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。 二、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH 单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。 4、编写程序将片外4800H~480FH单元内容送到外部RAM 5800H~580FH 单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH 单元中。

三、实验程序流程框图和程序清单.

程序清单: ORG 0000H START: MOV R0, #30H MOV DPTR, #QW1 MOV R5, #0 MOV R7, #16 LOOP: MOV A, R5 MOVC A, @A+DPTR MOV @R0, A INC R0 INC R5 DJNZ R7, LOOP LJMP QW2 QW1: DB 00H, 01H, 02H, 03H, 04H, 05H, 06H, 07H DB 08H, 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH QW2: MOV R0, #30H MOV R1, #40H MOV R5, #16 LOOP1: MOV A, @R0 MOV @R1, A INC R0 INC R1 DJNZ R5, LOOP1 MOV R1, #40H MOV DPTR, #4800H MOV R5, #16 LOOP2: MOV A, @R1 MOVX @DPTR, A INC R1 INC DPTR DJNZ R5, LOOP2 MOV SP, #60H MOV 11H, #48H MOV 10H, #58H MOV R2, #00H LOOP3: MOV DPL, R2 PUSH 10H PUSH 11H

实验一 数据传送

数据传送实验 验证性实验 2012年10月31日第三四节课 一、实验目的 1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉Keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 二、设计要求 1、编写程序将00H~0FH 16个数据送到单片机内部RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。 4、编程将片外4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH 单元中。 三、实验程序流程框图

四、程序清单 ORG 0000H MOV R0, #30H ;初始化数据指针 MOV A, #00H MOV R2, #10H ;设置循环次数LOOP1: MOV @R0, A ;循环体部分 INC R0 ;修改数据指针 INC A DJNZ R2, LOOP1 ;循环控制部分 MOV R0, #30H ;初始化数据指针 MOV R1, #40H MOV R2, #10H LOOP2: MOV A, @R0 ;循环体部分 MOV @R1, A INC R0 ;修改数据指针 INC R1 DJNZ R2, LOOP2 ;循环控制部分

MOV R1, #40H ;设置数据指针R0单元内容 MOV DPTR, #4800H ;外部RAM4800H单元地址作为16位立即数送数 据指针DPTR MOV R2, #10H ;设置循环次数 LOOP3: MOV A, @R1 ;循环体部分 MOVX @DPTR, A INC R1 ;修改数据指针 INC DPTR DJNZ R2, LOOP3 ;循环控制部分 MOV R0, #00H ;初始化数据指针 MOV R1, #48H MOV R2, #58H LOOP4: MOV DPL, R0 ;设置数据指针的低八位内容 MOV DPH, R1 ;设置数据指针的高八位内容 MOVX A, @DPTR ;将外部RAM内容送累加器A MOV DPH, R2 ;重新设置数据指针高八位内容 MOVX @DPTR, A ;将累加器A的内容送回外部RAM INC R0 ;修改数据指针 CJNE R0, #10H, LOOP4 ;循环控制部分 MOV R0, #50H ;初始化数据指针 MOV DPTR, #5800H MOV R2, #10H CLR A ;累加器A清零 LOOP5: MOVX A, @DPTR ;循环体部分 MOV @R0, A INC R0 ;修改数据指针 INC DPTR DJNZ R2, LOOP5 ;循环控制部分 END 五、程序数据

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告 主题:数据传送 一、实验目的 熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器 熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。 二、实验内容 1、熟悉星研集成环境软件。 2、编写程序,实现数据段的传送、校验。 三、实验代码 _STACK SEGMENT STACK DW 100 DUP() _STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE, DS:DATA, SS:_STACK MOV AX, DATA ;将数据段的地址存入AX寄存器。AX=004DH MOV DS,AX ;对DS段寄存器赋值。DS=004DH MOV ES,AX ;对ES段寄存器赋值。ES=004DH NOP ;空指令

MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CALL Move ;调用Move子程序 MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CLD ;将DF标志位置0。设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出 ;若ZF=0或CX=0不成立,则继续比较。SI和DI持续递增 1 JNE ERROR ;若ZF=0,跳到ERROR子程序 TRUE: JMP $ ;跳到目前地址 ERROR: JMP $ ;跳到目前地址 Move PROC NEAR ;Move子程序 CLD ;将DF标志位置0。设置SI、DI为递增移动。DF=0 CMP SI,DI ;比较SI、DICF=SF=PF=1,仅有该三个标志位变化JZ Return ;如果相等,跳到Return JNB Move1 ;如果SI大于等于DI,跳到Move1 ADD SI,CX ;SI=SI+CX。SI=3100H DEC SI ;SI减1。SI=30FFH

单片机数据传送实验报告

竭诚为您提供优质文档/双击可除单片机数据传送实验报告 篇一:单片机数据传送实验报告 实验名称:数据传送实验 实验类型:设计性实验 姓名:袁志生 时间:04.17第五六节课 一、实验目的与要求 实验目的:1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 实验要求:1、实现单片机内部RAm之间,外部RAm之间以及内部RAm与外部RAm之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。 二、设计要求

1、编写程序将00h~0Fh16个数据分别送到单片机内部RAm30h~3Fh单元中。 2、编写程序将片内RAm30h~3Fh的内容传送至片内RAm40~4Fh单元中。 3、编写程序将片内RAm40h~4Fh单元中的内容传送到外部RAm4800h~480Fh单元中。 4、编写程序将片外4800h~480Fh单元内容送到外部RAm5800h~580Fh单元中。 5、编写程序将片外RAm5800h~580Fh单元内容传送回片内RAm50h~5Fh单元中。 三、实验程序流程框图和程序清单. 程序清单: oRg0000h sTART:moVR0,#30h moVDpTR,#Qw1 moVR5,#0 Loop: Qw1: Qw2: Loop1: Loop2: Loop3:

R7,#16A,R5A,@A+DpTR@R0,AR0IncR5R7,LoopQw200h,01h,02 h,03h,04h,05h,06h,07h08h,09h,0Ah,0bh,0ch,0Dh,0eh,0F hR0,#30hR1,#40hmoVR5,#16A,@R0@R1,AR0R1R5,Loop1R1,#4 0hmoVDpTR,#4800hR5,#16A,@R1@DpTR,AR1DpTRR5,Loop2moV sp,#60h11h,#48h10h,#58hR2,#00hDpL,R210h11hDphmoVxA, @DpTRmoVmoVmoVcmoVIncDJnZLJmpDbDbmoVmoVmoVmoVIncInc DJnZmoVmoVmoVmoVxIncIncDJnZmoVmoVmoVmoVpushpushpop pop moVx Inc cJne moV moV moV Loop4:moVx moV Inc Inc DJnZ enD 四,实验小结

数据传送类指令

3.2.1 数据传送类指令 数据传送指令用于实现寄存器与存储器之间、寄存器之间、累加器AL/AX与I/O端口之间、立即数到寄存器或存储器之间的字节或字的传送。这类指令的共同特点是不影响标志寄存器的内容(SAHF,POPF除外)。堆栈操作指令、标志位传送指令和地址传送指令也归入这一类中,共14条指令,又可分为4组,如表3.4所示。 1.通用数据传送指令 通用数据传送指令包括传送指令MOV、堆栈操作指令PUSH、POP、输入/输出指令(累加器传送指令)、数据交换指令XCHG和查表转换指令XLAT。这类指令是唯一允许以段寄存器作为操作数的指令(XCHG除外)。 表3.4 数据传送类指令 指令类型指令书写格式指令功能 通用数据传送指令MOV 目标,源 PUSH 源 POP 目标 XCHG 目标,源 XLAT 字节或字传送 字压入堆栈 字弹出堆栈 字节或字交换 字节翻译 目标地址传送指令LEA 目标,源 LDS 目标,源 LES 目标,源装入有效地址

装入DS寄存器 装入ES寄存器 标志位传送指令LAHF SAHF PUSHF POPF 将FR低字节装入AH寄存器 将AH内容装入FR低字节 将FR内容压入堆域 从堆栈弹出FR内容 I/O数据传送指令IN 累加器,端口 OUT 端口,累加器从端口输入字节或字 将字节或字输出到端口 (1)MOV 传送指令 指令格式:MOV OPD,OPS 指令功能:将源操作数OPS传送到目的操作数OPD,即(OPD)→(OPS)。 源操作数OPS可以是8/16位的通用寄存器、段寄存器、存储器中某单元或8/16位的立即数。 (2)PUSH进栈(压入)指令 指令格式:PUSH OPS 指令功能:将源操作数OPS压入堆栈,即SP–2 → SP,OPS → (SPH,SP)。 源操作数0PS可以是16位通用寄存器、段寄存器或存储器中的数据字,以保证堆栈按―字‖操作。源操作数OPS不能是立即数。 由于堆栈是按―后进先出‖方式工作,所以每次执行PUSH指令时,总是首先修改栈指针(S P)–2 → SP (即SP先减2),使之指向新栈顶,然后把源操作数压入堆栈中SP所指示

实验2数据块传送实验程序设计实验

实验2 数据块传送实验程序设计实验 实验目的 ㈠学习和掌握DSP汇编语言程序的基本结构。 ㈡熟悉和掌握常用的数据传送类指令。熟练掌握数据块传送的方法。 二、实验原理 数据传送的常用指令 数据存储器((数据存储器:MVDK Smem,dmad MVKD dmad,Smem MVDD Xmem,Ymem 数据存储器((MMR:MVDM dmad,MMR MVMD MMR,dmad MVMM mmr,mmr 程序存储器((数据存储器MVPD Pmad,Smem MVDP Smem,Pmad READA Smem WRITA Smem Smem——数据存储器的地址;Pmad——16位立即数程序存储器地址;MMR——任何一个存储映象寄存器;Xmem,Ymem——双操作数数据存储器地址;dmad——16位立即数数据存储器地址; 数据传送指令是最常用的一类指令,与RPT指令相结合,可以实现数据块传送。例如,在系统初始化过程中,可以将数据表格与文本一道驻留在程序存储器中,复位后通过程序存储器到数据存储器的数据块传送将数据表格传送到数据存储器,从而不需要配制数据ROM,使系统的成本降低。另外,在数字信号处理(如FFT)时,经常需要将数据存储器中的一批数据传送到数据存储器的另一个地址空间等等。 实验内容 阅读实验程序example,上机运行程序后,查看: ㈠检查程序存储器(PM)1000H~101DH空间中的内容,检查程序存储器(PM)FF80H~FF83H空间中的内容。 ㈡数据存储器(DM)60H~69H(.bss)空间中的内容是什么? ㈢数据存储器(DM)80H~90H(STACK)空间中的内容是什么?

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

实验一单片机数据区传送程序设计 一、实验目的 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

单片机 实验1-2

实验一数据存储器实验 一、实验目的 1.掌握片内数据存储器的地址分配。 2.掌握对片内数据存储器进行数据读写的方法。 3. 掌握用Proteus调试汇编源程序的方法。 二、实验预备知识 8051的片内数据存储器共有256个单元,按其功能划分为两个部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。 低128单元按其用途划分为工作寄存器区(单元地址00H~1FH)、位寻址区(单元地址20H~2FH)、用户RAM区(单元地址30H~7FH)三个区域。如图2-1所示。 高128单元是分配给特殊功能寄存器使用的,其中部分单元(单元地址能被8整除的)可以进行位寻址。 三、实验内容 通过执行程序中的相关指令,将有关数据写入工作寄存器区、位寻址区、数据缓冲区和特殊功能寄存器区各存储单元,观察当前在用工作寄存器组的选择与数据传送目标的对应关系、字节地址与位地址的区别、特殊功能寄存器的字节地址、程序计数器PC在执行指令中的作用。 四、实验步骤 1. 新建设计文件。单击“文件”→“新建设计”,在弹出的“Create New Deign”对话框中选择“DEFAULT”模板后单击“OK”。 2. 设置图纸尺寸。单击“系统”→“设置图纸尺寸”,在弹出的“Sheet Size Configuration”对话框中选择“A4”图纸尺寸或自定义尺寸后单击“OK”。 3. 设置网格。单击“查看”→“网格”,网格显示(再次单击,网格不显示)。单击“查看”→“Snap xxth”(或Snap x.xin),可改变网格单位,默认为“Snap 0.1in”。 4. 保存设计文件。单击“文件”→“保存设计”,在弹出的“Save ISIS Design File”对话框中指定文件夹(如D盘电信061××文件夹)、输入文件名“reg”并选择保存类型为“Design Files”后单击“保存”。 5. 选取元器件。从Proteus元器件库中选取元器件AT89C51(单片机)。单击模式选择工具栏“元件”按钮,单击器件选择按钮“P”,在弹出的“Pick Devices”(选取元器件)对话框的“Keywords”(关键字)栏中输入元器件名称“AT89C51”(也可以是分类、小类、属性值),与关键字匹配的元器件“AT89C51”显示在元器件列表(Results)中。双击选中的元器件“AT89C51”,便将所选元器件“AT89C51”加入到对象选择器窗口。单击“OK”完成元器件选取。参见图1-2选取元器件对话框。 6. 放置元器件。单击对象选择器窗口的元器件“AT89C51”,元器件名“AT89C51”变为蓝底白字,预览窗口显示“AT89C51”元器件;单击方向工具栏按钮可实现元器件的左旋、右旋、水平和垂直翻转,以调整元器件的摆放方向;将鼠标指针移到编辑区某一位置,单击一次就可放置元器件“AT89C51”。按图2-3所示放置元器件。 7. 编辑元器件。单击模式选择工具栏“编辑”按钮,进入编辑状态。右击(或单击)元器件,该元器件变为红色表明被选中,鼠标指针放到被选中的元器件上,按住左键拖动,将鼠标移到编辑区某一位置松开,即完成元器件的移动。鼠标指针放到被选中的元器件

数据传送指令

1.8086指令系统操作数符号表示 DST->目的操作数 SRC->源操作数 TARGET->循环、转移和调用指令操作数 reg->寄存器操作数,字节或字 reg8->寄存器操作数,字节 reg16->寄存器操作数,字 mem->存储器操作数,字节或字 mem8->字节型存储器操作数 mem16->字型存储器操作数 mem32->双字型存储器操作数 acc->累加器AL或AX seg->段寄存器 imm->立即操作数,字节或字 imm8->8位立即操作数 imm16->16位立即操作数 short_label->短标号(8位偏移量) near_label->近标号(16位地址或偏移) far_label->远标号(32位地址) 指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式 指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式 指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响 其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等 一、数据传送类指令 1.Mov(mov目的操作数,源操作数) 目的操作数:reg、seg、mem 源操作数:reg、seg、mem、imm 注意事项: 1、立即数不能直接送入段寄存器内 2、存储器之间不能互相送数 3、段寄存器之间不能相互送数 4、目的操作数不允许用段寄存器CS 5、送数的时候需要明确是字操作还是字节操作,即源操作数和目的操作数的位数 要统一,除非目的操作数的位数大于源操作数。(寄存器有明确的字节或字类型, 有寄存器参与的指令其操作数类型就是寄存器的类型;对于存储器单元与立即 数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr 指示字类型) 如何判断 ?两个操作数都明确了,两者必须一致 ?两个操作数有一个明确,另一个就以明确的为依据

单片机4个dd实验

班级:12数控1 姓名:李嘉敏学号:2012984225 实验一查表实验 一、实验目的 1.掌握汇编语言编程软件的使用及调试方法 2.掌握查表指令MOVC的使用 3.熟悉整个实验流程实验步骤 二、实验内容 编写并调试一个查表程序,根据输入值不同查表得到不同值,比如求1-9的平方 三、实验设备 计算机、实验箱、keil uVision3软件、若干根连接电线、USB接线 四、实验步骤(过程) 1.将串口线与实验箱连接,将开关“kc”拨至上 2.查看仿真器的串口号 3.在keil中创建新项目 4.新建文件,添加源程序并保存 5.添加源代码文件到项目Source Group1中并设置好仿真驱动 6.编译检查 7.接好USB线以及其他接线,打开电源开关 8.按下“debug”进行调试 9.观看实验想象并记录数据 五、实验数据及结果(或者现象) 程序所得的结果是随着dptr的值的变化而r7的值也随之呈平方变化。 六、实验源程序 org 0000h ljmp main org 0030h main: mov a, r7 mov dptr, #tab mov a, @a+dptr mov r7, a tab: DB 00,01,04,09,16 DB 25,36,49,64,81 七、问题分析 1.问题:程序编译检查有错误执行不了。解决方案:回头检查是源程序中 出现逻辑错误。 2.问题:实验箱的指示灯没有亮。解决方案:检查各线路是否连接好。 八、思考题: MOVC指令有几种格式?并写出来 答:两种。分别是movc a,@a+dptr和movc a,@a+pc

实验二数据传送实验 一、实验目的 1.掌握MCS51单片机数据传送指令; 2.掌握MCS51单片机内部和外部数据存储空间的编程和调试方法 二、实验内容 编程实现单片机不同存储空间的数据传输 三、实验设备 keil uVision3软件、计算机 四、实验步骤(过程) 1.查看仿真器的串口号 2.在keil中创建新项目 3.新建文件,添加源程序并保存 4.添加源代码文件到项目Source Group1中并设置好仿真驱动 5.编译检查 6.按下“debug”进行调试 7.观看实验想象并记录数据 五、实验数据及结果(或者现象) 外部RAM的20h后八个地址存放的数据分别为0,3,8,9,57,43,63, 19 六、实验源程序 org 0000h ljmp main org 0030h main: mov dptr,#tab mov r0,#20h mov r7,#8 loop2:clr a movc a,@a+dptr mov @r0,a inc r0 inc dptr djnz r7,loop2 mov r0,#20h mov r7,#8 mov dptr,#0100h loop1: mov a,@r0 movx @dptr,a inc r0 inc dptr djnz r7,loop1 here: ajmp here tab:db 00,3,08,9,87,67,99,25 end

8086 8088数据传送指令

第3章 8086/8088指令系统数据传送指令(1)

MOV AX,1234H MOV AX,[1234H] MOV AX,BX MOV AX,[BX] MOV AX,[BX+02H] MOV AX,[BX+SI] MOV AX,[BX+SI+02H] 请说出右边7条指令中源操作数的寻址方式

用于寄存器、存储器单元、输入输数据传送指令 出端口之间传送数据或地址。(1)通用数据传送指令MOV、PUSH、POP、XCHG (2)累加器专用传送指令IN、 OUT、 XLAT (3)地址传送指令LEA、LDS、LEA (4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF

数据传送指令 用于寄存器、存储器单元、输入输 出端口之间传送数据或地址。 (1)通用数据传送指令MOV PUSH、POP、XCHG (2)累加器专用传送指令IN、 OUT、 XLAT (3)地址传送指令LEA、LDS、LEA (4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF

MOV 指令 格式: MOV DST, SRC 功能: DST ←(SRC ) ;将源操作数送至目的操作数地址 目的操作数地址 源操作数地址 源/目的操作数之间传送关系图: CS DS,SS,ES 存储器 立即数 AX ,BX ,CX ,DX BP ,SP ,SI ,DI

MOV 指令 格式: MOV DST, SRC 功能: DST ←(SRC ) 目的操作数地址 源操作数地址 源/目的操作数之间传送关系图: 例:将DX 寄存器内容送至CX 。 MOV CX,DX 例:将立即数2000H 送至寄存器BX 。 MOV BX,2000H 例:将CX 寄存器内容送至DX 。 MOV DX,CX 例:将AX 的内容送至ES 。 MOV ES,AX CS DS,SS,ES 存储器 立即数 AX ,BX ,CX ,DX BP ,SP ,SI ,DI

8外部数据传送指令有哪几条

8外部数据传送指令有哪几条?试比较下面每组中2条指令的区别 (1)MOVX A, @R0 MOVX A, @DPTR (2) MOVX @R0, A MOVX @DPTR, A (2)MOVX A, @R0 MOVX @R0, A 答:外部数据传送指令有如下4条: MOVX A, @DPTR ;(DPTR)→A MOVX @DPTR, A ;A→(DPTR) MOVX A, @Ri ;(Ri)→A,以P2为页地址,Ri为低8位地址 MOVX @Ri,A ;A→(Ri),以P2为页地址,Ri为低8位地址 ①MOVX A, @R0 以R0为低8位地址指针的片外数据存储器中的内容传送到累加器A中 MOVX A, @DPTR 以DPTR为地址指针的片外数据存储器中的内容传送到累加器A中 ②MOVX @R0, A 累加器A中的内容传送到以R0为低8位地址指针的片外数据存储器中 MOVX @DPTR, A 累加器A中的内容传送到以DPTR为地址指针的片外数据存储器中 ③MOVX A, @R0 以R0为低8位地址指针的片外数据存储器中的内容传送到累加器A中 MOVX @R0, A累加器A中的内容传送到以R0为低8位地址指针的片外数据存储器中 9 在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果答:机器码源程序寻址方式执行每条指令后的结果E5 40 MOV A,,40H 直接寻址A=48H F8 MOV R0,A 寄存器寻址R0=48H 75 90 F0 MOV P1,#0F0H 立即寻址P1=0F0H A6 30 MOV @R0,30H 寄存器间接寻址R0=48H,(48H)=38H 90 12 46 MOV DPTR, #1246H 立即寻址DPTR=1246H 85 38 40 MOV 40H, 38H 直接寻址(40H)=40H A8 30 MOV R0, 30H 直接寻址R0=38H 88 90 MOV 90H, R0 直接寻址P1=38H 75 48 30 MOV 48H, #30H 立即寻址(48H)=30H E6 MOV A, @R0 寄存器间接寻址R0=38H, A=40H 85 90 A0 MOV P2, P1 寄存器寻址P2=38H 10 试说明下列指令的作用,并将其翻译成机器码。执行最后一条指令对PSW有何影响,A的终值为多少? ①机器码源程序执行每条指令后的结果 78 72 MOV R0,#72H 把立即数72H送入R0 E8 MOV A, R0 把72H送入A 24 4B MOV ADD, #4BH 72H加4BH等于BDH送入A 执行此指令后PSW中P=0,OV=0,CY=0 ②机器码源程序执行每条指令后的结果 74 02 MOV A, #02H 把立即数2H送入A F5 F0 MOV B, A 把2H送入B 74 0A MOV A, #0AH 把立即数#0AH送入A 25 F0 ADD A, B A与B中值相加等于0CH,送入A A4 MUL AB A与B中值相乘等于018H,送入A 执行此指令后PSW中P=0,OV=0,CY=0 ③机器码源程序执行每条指令后的结果 74 20 MOV A, #20H 把立即数20H送入A F5 F0 MOV B, A 把20H送入B 25 F0 ADD A, B A与B中值相加等于40H,送入A

微机原理实验: 数据传送

实验二数据传送 一、实验目的 1.熟悉8086指令系统的数据传送指令及8086的寻址方式。 2.利用Emulator仿真器来调试汇编语言程序。 二、实验预习要求 1.复习8086指令系统中的数据传送类指令和8086的寻址方式。 2.按照题目要求预先编写好实验中的程序段。 三、实验任务 1.通过下述程序段的输入和执行来熟悉Emulator仿真器的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: MOV BL,08H MOV CL,BL MOV AX,03FFH MOV BX,AX MOV DS:[0020H],BX 2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H PUSH AX PUSH BX PUSH CX PUSH DX 出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。 (1) MOV [BX],[SI] (2) MOV AH,BX (3) MOV AX,[SI][DI] (4) MOV BYTE PTR[BX],2000H (5) MOV CS,AX (6) MOV DS,2000H 4.①编写程序设置各寄存器及存储单元为如下内容: (BX)=0010H,(SI)=0001H (10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H (10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH ②根据①中设置说明下列各条指令执行完后AX寄存器中的内容,并上机验证。 (1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[0120H] (4) MOV AX,[BX] (5) MOV AX,0110H[BX] (6) MOV AX,[BX][SI] (7) MOV AX,0110H[BX][SI] 5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。 6. 设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:1000H 单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:1000H单元中的内容进行交换。试编写程序段,并上机验证结果。 7.设(DS)=1000H,(ES)=2000H,有关存储器的内容如图1.5所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。

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

实验一单片机数据区传送/排序程序设计 一、单片机数据区传送/排序程序设计 一、实验目的 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

实验一:数据传送

西安交通大学实验报告 课程名称:微机原理与接口技术实验名称数据传送 班级:机械36 班姓名:申湾舟学号:2130101125实验日期:2015 年9 月29 日教师审阅签字: 1.实验目的 (1)熟悉 8086 指令系统的数据传送以及寻址方式; (2)利用 TD 调试工具来调试汇编语言。 2.实验内容 (1)通过程序段的输入和执行完成熟悉TD.EXE 的使用; (2)出栈操作练习; (3)操作数的语法规则练习; (4)设置寄存器以及存储单元内容; (5)寻址例题; (6)寄存器内容交换,寄存器存储器内容交换练习;存储器内容交换练习。 3.实验工具 操作系统:windows7;实验平台:调试工具 TD.EXE。 4.实验步骤与结果 (1)程序段输入和执行 图 1

(2)数据压入堆栈,查看不同的出栈方式 图 2 第一种出栈方式: 图2-1 第二种出栈方式:

图2-2 第三种出栈方式: 图2-3 (3 1MOV [BX],[SI];指定内容格式在指令中出现两次,修改为:MOV [BX],SI 2MOV AH,BX;操作数的字长不相等,修改为: MOV AH,BH 3MOV AX,[SI][DI];指令指针同类型同时出现相加,修改为:MOV CL,[BP][DI] 4MOV BYTE PTR[BX],2000H;字长错误,修改为: MOV WORT PTR[BX],2000H 5MOV CS,AX;代码段寄存器作为源操作数,修改为: MOV AX,CS 6MOV DS,2000H;DS 传送数据格式有误,修改为: MOV DS,[2000H] 修改指令序列,改正如下:

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

实验2:数据块传送程序: 1.数据块传送程序 : ORG 0000H MAIN: MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1: MOV @R0, A INC R0 INC A DJNZ R2, A1 注:此时R2=10h,通过djnz之后,r2=09h≠0,则跳转到A1段

开始重复A1段中之前的语句。R0从40h依次增加至4fh,R2则依次从10h 减少至01h,此时,在运行至djnz之后r0=00h,然后顺序执行语句。从而完成了给40h~4fh赋值的目的。 MOV R0, #40H MOV DPTR, #9800H MOV R2, #10H 注:此处重新给r0 ,dptr, r2.赋初值 A2: MOV A, @R0 MOVX @DPTR, A INC R0 INC DPTR DJNZ R2, A2 MOV R0, #50H MOV DPTR, #9800H MOV R2, #10H A2: MOV A, @R0 注:(40h)=a0h MOVX @DPTR, A INC R0 INC DPTR

DJNZ R2, A2 注:此时r2=10h,经过djnz语句之后,r2=0fh≠0h,则语句跳转至A2处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内传至片外的目的 MOV R0, #50H MOV DPTR, #9800H MOV R2, #10H A3: MOVX A, @DPTR MOV @R0, A INC DPTR INC R0 DJNZ R2, A3 注:此时r2=10h,经过djnz语句之后,r2=0fh≠0h,则语句跳转至A3处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内外回传至

左静实验三数据传送指令的使用

实验 3 算术运算、逻辑运算指令的应用 姓名:左静学号:08538050 实验日期:2012.-10-14 实验目的:熟练应用算术,逻辑运算指令 实验内容:1.(1)编程计算无符号数9876H÷3456H,将商、余数分别送入BX,CX中。 (2)编程计算有符号数9876H÷3456H,将商、余数分别送入BX,CX 中。 2.赋初值AL=56H,请将AL的D0、D2、D4、D6位取反,其余位不变;然后将AL的D1、D3、D4位清0,其余位不变;最后将AL的D5、D7位置1,其余位不变。 3. 赋初值AL=01H,请将AL逻辑左移1位,再算术右移3位,最后带进位循环左移2位。

4.计算12345678H+87654321H,要求:首先将被加数12345678H、加数87654321H分别放在数据段偏移地址为1000H、2000H的存储单元里(使用MOV指令),然后求两数之和,并将结果存放在原被加数的位置。并在程序运行后,查看相关内存单元,观察运行结果。实验源程序:1.1 mov ax,9876h; mov dx,0000h; mov bx,3456h; div bx; mov bx,ax; mov cx,dx; hlt; 1.2 mov ax,9876h; cwd; mov bx,3456h;

idiv bx; mov bx,ax; mov cx,dx; hlt; 2.MOV AL,56H; XOR AL,55H; AND AL,0E5H; OR AL,0A0H; HLT;

mov al,01h shl al,1 sar al,3 rcl al,2 hlt mov word ptr[1000h],5678h mov word ptr[1002h],1234h mov word ptr[2000h],4321h mov word ptr[2002h],8756h add word ptr[1000h],5678h,4321h adc word ptr[1002h],1234h,8765h hlt

实验1(数据传送实验 )

一、实验目的 1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉Keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 二、实验内容或原理 1、实现单片机内部RAM之间,外部RAM之间以及内部RAM 与外部RAM之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记 录实验数据。 三、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部 RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外 部RAM 4800H~480FH单元中。 4、编写程序将4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回 片内RAM 50H~5FH 单元中。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、实验程序流程框图和程序清单。 4、实验总结。 5、思考题。 五、思考题 1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有 哪些寻址方式? 2、说明指令MOV A,20H 和MOV C,20H中的20H含义有什 么不同?传送指令中的助记符MOV,MOVX,MOVC 各适用 于访问哪个存储器空间? ORG 0000H MAIN:MOV R0,#30H MOV R2,#10H MOV A,#00 LOOP1:MOV @R0,A INC R0 INC A DJNZ R2,LOOP1 MOV R0,#30H MOV R1,#40H MOV R2,#10H

单片机实验分析指导书

\\ 《单片机原理与应用》 实验指导书 注意: 1、做实验前必须预习 2、带教材和实验指导书 哈尔滨理工大学 自动化学院自动化系

实验仪的使用 本实例是仿真INTEL的8031单片机,来循环点亮P1口的发光二极管(低电平有效)。程序是用汇编语言来编写。下面介绍相应的操作步骤: 1、运行桌面“星研集成软件”,画面如下: 2、建立源文件 执行[主菜单?文件?新建],(或者点击图标)打开窗口。 选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。对源文件编译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。比如:.ASM文件,使用A51来对它编译。本 实例文件名为xunhuan.asm 。窗口如下: 按“确定”即可。然后即出现文件编辑窗口: 输入源程序,参照实验一源程序。 1

这样一个源文件就建立好了。 3.编译、连接文件 首先选择一个源文件,然后可以编译、连接文件了。对文件编译,如果没有错误,再与库文件连接,生成代码文件(DOB、HEX文件)。编译、连接文件的方法有如下二种:(1)使用[ 主菜单?项目?编译、连接]或[主菜单?项目?重新编译、连接]”。(2)点击图标或来“编译、连接”或“重新编译连接”。编译、连接过程中产生的信息显示在信息窗的“建立”视中。编译没有错误的信息如下: 若有错误则出现如下信息框: 有错误、警告信息,用鼠标左键双击错误、警告信息或将光标移到错误、警告信息上,回车,系统自动打开对应的出错文件,并定位于出错行上。 这时用户可以作相应的修改,直到编译、连接文件通过。 4.调试 编译、连接正确后,可以开始调试程序。进入调试状态方法有: a)执行[ 主菜单?运行?进入调试状态] b)点击工具条的进入后的窗口如下: 2

相关主题
文本预览
相关文档 最新文档