实验一 数据传送类指令的使用 (1)

合集下载

数据传送类指令

数据传送类指令

05
06
不允许直接向段寄存器传送立即数。
该指令不影响标志位。
06
数据传送类指令
例3-12
指出下列指令中的错误 (1)MOV [DI], [SI] (2)MOV DS, 1000H (3)MOV 2000H, AX
(1)两个操作数不能同时为存 储器操作数。
(2)不能直接向段寄存器传送 立即数,正确的指令应为:
(1)在CPU内部寄存器之间 进行数据传送。
例如,MOV BL, AL MOV BX, AX MOV DS, AX
(2)在CPU内部寄存器与存 储器之间进行数据传送。
例如,MOV AX, [1000H] MOV BX, [SI][BX] MOV DATA[BP], ES
(3)将立即数传送给寄存器。 例如,MOV AX, 1234H MOV SI, 1000H
例3-14
数据传送类指令
已知:(BX)=1122H,(DS)=3000H,(31000H)=1234H。执行指令: XCHG BX, [1000H] 源操作数的物理地址为:(DS)×16+1000H=31000H。 指令执行的结果为:(BX)=1234H,(31000H)=1122H。
要实现两个存储单元X与Y之间的数据交换, 可以执行如下指令:
数据传送类指令
例3-15 已知:(DS)=3000H,(32000H)=12H,(32001H)
=34H,(32002H)=56H,(32003H)=78H。执行指令: LDS SI, [2000H]
地址传送指令
1.5 输入输出指令
数据传送类指令
输入输出指令用于在I/O端口与CPU之间传送数据。
MOV AX, 1000H MOV DS, AX (3)立即数不能作为目的操 作数。

单片机数据传送指令c语言

单片机数据传送指令c语言

单片机数据传送指令c语言单片机是一种集成电路,也称为微控制器。

它内部集成了处理器、存储器和各种外围设备接口,并且可以通过程序来控制其工作。

在单片机编程过程中,数据传送指令是常用的指令之一。

数据传送指令用于在单片机中传输数据,可以实现寄存器之间的数据传递、数据移动和数据保存等功能。

下面我将详细介绍单片机数据传送指令的使用方法。

首先,我们需要了解数据传送指令的基本格式。

数据传送指令通常以下面的形式出现:MOV destination, source。

其中,destination表示目标操作数,source表示源操作数。

要执行一条数据传送指令,首先需要确定传输数据的源和目标,然后根据具体需求选择合适的寻址方式来指定源和目标的地址。

下面我将介绍几种常用的寻址方式。

第一种寻址方式是立即寻址(Immediate Addressing)。

在立即寻址中,source指定了一个立即数,表示需要传送的数据。

立即数是在指令中给出的常数值,可以直接传送到目标寄存器或内存地址中。

例如,MOV A, #15表示将立即数15传送到A寄存器中。

第二种寻址方式是直接寻址(Direct Addressing)。

直接寻址中,source 指定了一个源寄存器或内存地址,将该寄存器或内存地址中的内容传送到目标寄存器或内存地址中。

例如,MOV A, B表示将B寄存器中的内容传送到A寄存器中。

第三种寻址方式是寄存器间接寻址(Register Indirect Addressing)。

在寄存器间接寻址中,source指定了一个寄存器的地址,将该寄存器中的内容传送到目标寄存器或内存地址中。

例如,MOVX @DPTR, A表示将A 寄存器中的内容传送到DPTR寄存器指向的内存地址中。

第四种寻址方式是间接偏移寻址(Indirect Offset Addressing)。

在间接偏移寻址中,source指定了一个源寄存器和一个偏移量,将源寄存器地址加上偏移量得到的地址中的内容传送到目标寄存器或内存地址中。

单片机实验

单片机实验

实验一数据传送指令的使用及编程方法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)理解源程序指令含义,并参照注释写出结果。

[信息与通信]MCS-51单片机指令系统-数据传送类指令

[信息与通信]MCS-51单片机指令系统-数据传送类指令

<P1>=0CAH,分析以下程序执行后各单元及寄存
器、P2口的内容.
• MOV R0,#30H
;R0=30H
• MOV A,R0
;A=40H
• MOV R1,A
;R1=40H
• MOV B,R1
;B=10H
• MOV R1,P1
;<40H>
• MOV P2,P1
=0CAH
• MOV

•执行上述指10令H后,#的20结H果为:<R0>=3<0PH2,<>R=10>C=A<HA>=40H,
3.3 MCS-51指令系统
3.3.1 数据传送类指令〔29条〕 传送类指令分成两大类
1. MOV,一般传送 2.Байду номын сангаас非MOV,特殊传送, 如:MOVC、MOVX、PUSH、
POP、 对PSW的X影C响H、XCHD及SWAP.
• 1. 访问片内数据存储器的一般数据传送指令
• 该类指令的功能是实现数在片内RAM单元之间、 寄存器之间、寄存器与RAM单元之间的传送.所 有指令具有统一的格式,其格式如下:
MOV Rn,
A direct
#data
例:若〔60H〕= 30H 执行 MOV R6,60H
结果:〔R6〕= 30H.
3> 以direct 为目的操作数的指令
MOV direct,
A Rn direct1 Ri
#data
例:若〔R0〕=30H,〔30H〕=25H 执行MOV 40H,R0 指令
结果:〔40H〕=25H.
RAM20H单元 • 外部ROM 2000H单元中的内容送到外部

实验一.数据传送实验

实验一.数据传送实验

实验一数据传送实验一、实验目的1、熟悉keilc的使用方法,掌握项目的创建、程序的输入,运行和调试方法。

2、掌握8031内部RAM和外部RAM的数据传送操作,了解这两部分RAM 存贮器的特点和应用。

二、实验原理MCS—51单片机具有极丰富的数据传送指令,能够实现多种数据传送操作,给程序设计带来了极大方便。

1、内部RAM数据传送8031内部RAM低128字节(00H~7FH)包含四个工作寄存器区(00H~1FH)、位地址空间(20H~2FH)、堆栈区,可用的传送指令多达16条。

因此,数据在内部128字节里传送就显得灵活方便。

内部RAM0~31个单元可作通用工作寄存器RO~R7,被划分为四个寄存器块,由程序状态字PSW中的RSI、RSO选择,其对应关系是:RSI RSO0 0 选0区,OOH~O7H被看是RO~R70 1 选1区,08H~0FH被看是RO~R71 0 选2区,00H~17H被看是RO~R71 1 选3区,18H~1FH被看是RO~R7MCS—51单片机上电复位后自动选0区,此后可通过修改PSW中的RSW中的RSI和RSO来选择其它寄存器区。

数据在内部RAM低128字节内传送指令共16条,它们是:MOV A,RnMOV A,directMOV A,@RiMOV A,”dataMOV Rn,AMOV Rn,directMOV Rn,dataMOV direct, AMOV direct,RnMOV direct1,direct2MOV direct,@RiMOV direct,#dataMOV Ri,AMOV Ri,directMOV Ri,#data2、外部RAM的数据传输MCS-51单片机采用当前工作寄存器的R0和R1作间接寻址寄存器。

可寻址256个单元,8位的地址和数据均由P0口分时输入/输出。

采用16位数据指针DPTR间址,最多可寻址片外64K字节的RAM或I/O,低8位地址(DPL)由P0口进行分时使用,P2口输出高8位地址,当P2口输出高8位地址时,P2口专用寄存器保存其原内容不变。

单片机及其接口技术实验报告

单片机及其接口技术实验报告

单片机及接口技术实验报告实验一数据传送程序一、实验目的1、掌握汇编语言设计和调试方法。

2、掌握DVCC实验系统的操作步骤。

二、实验内容1、编程实现,把7000H~70FFH单元的内容清零。

2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。

三、DVCC实验系统操作说明1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。

2、运行DVCC软件。

(程序DVCC598H实验系统DVCC实验系统)3、单击工具栏上“新建”或“打开”按钮,编写源程序。

单击“编译”按钮,使其形成可执行文件。

4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。

联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。

5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。

6、单击工具栏上“运行”或“单步”按钮,运行实验程序。

7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。

鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。

8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。

四、实验程序代码1、把7000H~70FFH单元的内容清零。

程序代码:ORG 0000HAJMP STARTORG 70HSTART: MOV P2, #70H ;送地址高8位到P2端口MOV R0, #00H ;R0=00H,表地址低8位CLR A ;将累加器A清0LOOP: MOVX @R0, A ;将A送入以R0内容为地址的外部RAM.INC R0 ;R0+1-->R0CJNE R0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $ ;暂停END2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。

数据传送指令

数据传送指令

3.访问外部RAM的指令
MOVX A, @Ri ;A←外部RAM(读) MOVX @Ri,A ; 外部RAM←A(写)
256个单元的范围,即:0000H—00FFH
MOVX A, @DPTR;A←外部RAM(读) MOVX @DPTR,A ; 外部RAM←A(写)
64KB范围,即:0000H—FFFFH 也作为外部扩展I/O口的操作!
XCH A,Rn
;A
XCH A,DIR ; A
XCH A,@Ri ; A
Rn (DIR) (Ri)
2.半字节交换指令 XCHD XCHD A,@Ri ;A0-3
(Ri)0-3
请看下一节:算术运算指令
4.3.3 堆栈操作指令
1. 进栈 PUSH PUSH DIR
如:PUSH ACC
; ①SP←SP+1 ; ②(SP)←(DIR) ;
2.出栈 POP
POP DIR
; ①(DIR)←(SP),
; ②SP←SP-1
如:POP ACC ;
主要用于保护现场(子程序中)
4.3.4 数据交换指令
1. 字节交换指令 XCH
2. 直接寻址:
MOV A , DIR
;A←(DIR)
MOV DIR, A
;(DIR)←A
MOV Rn, DIR
;Rn←(DIR)
MOV @Ri, DIR
;(Ri)←(DIR)
MOV dir2,DIR1 ;(dir2)←(DIR1)
n: 0,1,2,3,4,5,6,7
i: 0,1
Hale Waihona Puke 3. 间接寻址 MOV A , @Ri MOV @Ri, A MOV dir, @Ri

实验一 数据传送指令

实验一  数据传送指令

实验一数据传送指令(一)实验的目的要求和注意事项MCS-51单片机具有极丰富的数据传送指令,能够实现多种数据的传送。

本实验的目的是着重练习这些指令的使用和编程方法,并通过本实验熟悉仿真软件的使用方法。

(二)实验主要内容1、熟悉仿真软件的操作方法,理解数据传送指令的使用。

实验参考程序如下:地址机器码源程序单元内容ORG 0000HMOV SP,#60H ; SPMOV A,#12H ; AMOV R0,#50H ; R0MOV 30H,#03H ; 30HMOV DPTR,#2200H ; DPTRMOVX @DPTR,A ; 2200HMOV @R0,A ; 50HXCH A,30H ; A、30HPUSH DPH ; 61H、SPPUSH DPL ; 62H、SPMOV DPTR,#2400H ; DPTRMOVX A,@ DPTR ; APOP DPL ; SPPOP DPH ; SP、DPTRMOV 30H,A ; 30HXCHD A,@R0 ; A、50HMOVX A,@DPTR ; AXCH A,@R0 ; A、50H(三)实验准备1、了解仿真软件的界面。

2、复习传送指令。

(四)实验步骤1、新建文件,输入参考程序并以.ASM为扩展名存盘。

2、理解源程序,将你判断的结果填入“内容”中。

3、单步运行源程序,验证你的分析结果是否正确。

(五)思考题结合自己的体会,说明单步运行在程序过程中的作用(六)实验报告整理好执行正确程序和数据,回答思考题。

5、80C51数据传送指令 101101

5、80C51数据传送指令 101101
16位常数装入数据指针DPTR,即数据高8位送入DPH 寄存器,数据低8位送入DPL寄存器。
例:执行指令 MOV DPTR,#1234H 执行结果∶(DPH)=12H,(DPL)=34H
心不可不虚,虚则义理来居;
(3) 内部RAM单元之间的数据传送指令
MOV direct,Rn
;(direct)←(Rn)
心不可不虚,虚则义理来居;
例3:求平方数(远程查表法) MOV DPTR, #TABLE MOVC A,@A+DPTR MOV 20H,A
HERE:SJMP HERE
;指向表首址 ;查表得到平方数 ;存平方数
TABLE∶DB 00H,01H,04H,09H DB 16H,25H,36H DB 49H,64H,81H
M OV A, Rn ; (A) ←(Rn)
MOV A, direct ; (A)←(direct)
MOV A, @Ri M OV Rn, A MOV direct, A MOV @Ri, A
; (A)←((Ri)) ; (Rn) ← (A) ; (direct) ←(A) ; ((Ri)) ← (A)
POP SP ;(SP)-1=2FH→SP ((SP))=(30H)=20H→SP
第三条指令为特殊情况,先执行(SP)-1=2FH,后 装入由栈顶退出的值,所以执行后(SP)=20H。
心不可不虚,虚则义理来居;
例5:检查传送结果 已知内部RAM (10H)=00H, (30H)=40H,(40H)=10H, P1口为11001010B,分析指令执行后各单元内容。
MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1
MOV @R1,P1 MOV P2,P1 MOV 10H,#20H 执行结果: (10H)=20H, (30H)=40H, (40H)=CAH, P1=P2=CAH, A=40H, B=10H, R0=30H, R1=40H

单片机实验报告

单片机实验报告

单片机与嵌入式系统实验报告一、软件模拟调试实验:本部分实验内容主要为指令系统和汇编语言程序设计。

采用软件模拟调试的方法,目的在于通过这些实验使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。

实验一数据传送实验实验目的1、熟悉软件模拟调试环境。

2、掌握汇编语言程序设计的方法,加深对指令的理解。

3、学会软件模拟调试和察看、验证结果方法。

4、印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

实验步骤1、进入调试软件环境,输入源程序;2、汇编源程序;3、用单步方式运行程序;4、检查并记录各寄存器和存储单元内容的变化。

实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

源程序清单:ORG 0000HRESET:AJMP MAINORG 003FHMAIN:MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1:MOV @R0,AINC R0INC ADJNZ R2, A1MOV R1,#10HMOV R0, #50HMOV R2, #10HA3: MOV A, @R1MOV @R0, AINC R1INC R2DJNZ R2, A3SJMP $END实验结果与分析:1、按照实验内容补全程序。

2、对源程序进行编译并查看相应程序存储器的内容,将源程序对应的机器码记录入下表,掌握ORG伪指令及汇编的过程。

ORG的作用及相关注意事项:ORG表示之后的语句从哪里开始,有的单片机里面的固定区域是用来做堆栈或者是子程序跳转地址的入口。

PC表示:下一条要执行的指令PSW表示:程序状态字,其各位的含义为:cy进位标志位AC辅助进位标志位Ov溢出标志位p校验位SP表示:堆栈指针R0~R7的物理位置:0000H-0007H3、运行机器码,查看片内数据区、CPU内寄存器的变化情况,按要求将结果记录入下表。

10课单片机数据传送类指令

10课单片机数据传送类指令

例:有一个数在R0中,要求用查表的办法确定它的平TR,#TABLE
MOV A,R0
MOVC A,@A+DPTR
TABLE: DB 0,1,4,9,16,25
设R0中的值为2,送入A中,而DPTR中的值则为TABLE,则最终确定的ROM单元的地址就是TABLE+2,也就是到这个单元中去取数,取到的是4,显然它正是2的平方。其它数据也能类推。
能通过以下的例程再来看一看标号的含义:
MOV DPTR,#100H
MOV A,R0
MOVC A,@A+DPTR
ORG 0100H.
DB 0,1,4,9,16,25
如果R0中的值为2,则最终地址为100H+2为102H,到102H单元中找到的是4。这个能看懂了吧?
那为什么不这样写程序,要用标号呢?不是增加疑惑吗?
此条指令引出一个新的寻址办法:变址寻址。本指令是要在ROM的一个地址单元中找出数据,显然必须知道这个单元的地址,这个单元的地址是这样确定的:在执行本指令立脚点DPTR中有一个数,A中有一个数,执行指令时,将A和DPTR中的数加起为,就成为要查找的单元的地址。
查找到的结果被放在A中,因此,本条指令执行前后,A中的值不一定相同。
要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条单片机指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是一个8位的寄存器,所以只供给低8位地址。因为有时扩展的外部RAM的数量比较少,少于或等于256个,就只需要供给8位地址就够了。
使用时应当首先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。
例:写出以下单片机程序的运行结果

汇编实验报告

汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。

通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,汇编语言编译器为MASM 615。

三、实验内容(一)数据传送与算术运算1、编写程序实现将两个 16 位的整数相加,并将结果存储在指定的内存单元中。

2、实现数据在不同寄存器和内存单元之间的传送。

(二)逻辑运算与移位操作1、对给定的两个字节数据进行逻辑与、或、异或操作,并观察结果。

2、进行移位操作,包括左移和右移,理解移位对数据的影响。

(三)循环与分支结构1、利用循环结构计算 1 到 100 的整数之和。

2、根据给定的条件,使用分支结构实现不同的操作。

(四)子程序调用1、编写一个子程序,实现两个数的乘法运算。

2、在主程序中调用该子程序,并输出结果。

四、实验步骤(一)数据传送与算术运算1、打开 MASM 编译器,新建一个汇编源文件。

2、使用`MOV` 指令进行数据传送,将两个整数分别存储在寄存器`AX` 和`BX` 中。

3、使用`ADD` 指令将两个数相加,结果存储在`CX` 寄存器中。

4、最后,使用`MOV` 指令将结果存储到指定的内存单元。

(二)逻辑运算与移位操作1、在源文件中定义两个字节变量,并初始化其值。

2、使用逻辑运算指令(如`AND`、`OR`、`XOR`)对这两个变量进行操作。

3、使用移位指令(如`SHL`、`SHR`)对变量进行移位,并观察结果。

(三)循环与分支结构1、对于循环结构,使用`LOOP` 指令实现从 1 到 100 的累加。

2、在分支结构中,根据给定的条件(如比较两个数的大小),使用`JZ`、`JL` 等指令执行不同的分支操作。

(四)子程序调用1、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。

单片机实验报告1

单片机实验报告1

单片机实验报告1单片机实验报告实验一数据传送 (RA M ndash; 〉XRA M)一、实验目得熟悉星研集成环境软件或熟悉 KeilC51集成环境软件得使用方法。

熟悉 MCS51 汇编指令,能自己编写简单得程序,掌握数据传输得方法。

二、实验内容1、熟悉星研集成环境软件或熟悉Keil C51 集成环境软件得安装与使用方法。

2、编写程序,实现内外部数据段得传送、校验。

三、程序框图开始堆栈指针初始化计数器、地址初始化内部RAM数据传送外部RAM一次地址指针+1计数器-1=0?计数器、地址指针复位取内部RAM和对应的外部RAM比较是否相等地址指针+1计数器-1=0?传送正确传送错误结束NNYYYN数据传送程序框图四、实验步骤MAR 据数部外测检,序程试调式方点断、步单用使;据数入输中HF3~ H03 MAR 部内在ﻩ得 1000H ~100FH 中得内容。

熟悉查瞧特殊功能寄存器、内部数据 RAM、外部数据空间得各种方法.五、程序清单;将内部RAM Address1 开始得 16个字节送到外部RAM从 Address2开始得单元里,再作比较。

Address1 DATA 30HAddress2 _DATA1000HORG 0000HLJMP STARORG 0100HSTAR: MOV SP,#60HMOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR1: MOV A,R0 ;传送MOV_ DPTR,AINC R0INC DPTRDJNZ R7,STAR1MOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR2: MOV B,R0 ;比较MOV_ A,DPTRCJNE A,B,STAR3INC R0INC DPTRDJNZ R7,STAR2SJMP $ ;传送正确STAR3: SJMP $ ;传送错误END实验二双字节 D BCD 码( ( 十进制数) ) 加法一、实验目得熟悉51 汇编指令,学会使用星研集成环境软件,能自己编写简单得程序,熟悉BCD 码,了解如何调用系统提供得子程序.二、实验内容从键盘上输入4位被加数、加数,实现双字节 BCD 码(四位数)得加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改 PC 指针、全速运行等各种调试手段;熟悉查瞧特殊功能寄存器、内部数据RAM、外部数据空间得各种方法。

lec07 数据传送类指令

lec07 数据传送类指令
* 不影响标志位
* 不能用立即寻址方式
* DST不能是CS
PUSH 1234H
POP CS


堆栈段的特点: • 从较大地址开始分配和使用(数据段、代码段从较小地址开 始分配和使用); • SP指向的存储单元称为“栈顶”,堆栈操作时,数据总是在 “栈顶” 位置存入( “压入”)、取出( “弹出”);
MOV BX, TABLE MOV BX, OFFSET TABLE LEA BX, TABLE LDS BX, TABLE
LES BX, TABLE
; (BX)=0040H ; (BX)=1000H ; (BX)=1000H ; (BX)=0040H ; (DS)=3000H ; (BX)=0040H ; (ES)=3000H
进栈指令:
执行操作:
PUSH SRC
(SP) (SP) – 2 ( (SP)+1, (SP) ) (SRC)
出栈指令:
执行操作:
POP DST
(DST) ( (SP)+1, (SP) )
(SP) (SP) + 2
堆栈:‘先进后出’的存储区,段地址存放在SS中,
SP在任何时候都指向栈顶,进出栈后自动修改SP。 注意: * 堆栈操作必须以字为单位。
例:(AX) = 0BA45H CWD ; (DX)=0FFFFH (AX)=0BA45H CBW ; (AX)=0045H 注意: * 无操作数指令 * 隐含对AL 或AX 进行符号扩展 * 不影响标志位
小结
通用数据传送指令 MOV、XCHG 堆栈操作指令 PUSH、POP 换码指令 XLAT 地址传送指令 LEA、LDS、LES 符号扩展指令 CBW、CWD 作业:P86 2-5,2-10

单片机数据传送实验报告

单片机数据传送实验报告

实验名称: 数据传送实验实验类型: 设计性实验姓名:袁志生时间:04.17第五六节课一、实验目的与要求实验目的: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 0000HSTART: MOV R0, #30HMOV DPTR, #QW1MOV R5, #0MOV R7, #16LOOP: MOV A, R5MOVC A, @A+DPTRMOV @R0, AINC R0INC R5DJNZ R7, LOOPLJMP QW2QW1: DB 00H, 01H, 02H, 03H, 04H, 05H, 06H, 07HDB 08H, 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH QW2: MOV R0, #30HMOV R1, #40HMOV R5, #16LOOP1: MOV A, @R0MOV @R1, AINC R0INC R1DJNZ R5, LOOP1MOV R1, #40HMOV DPTR, #4800HMOV R5, #16LOOP2: MOV A, @R1MOVX @DPTR, AINC R1INC DPTRDJNZ R5, LOOP2MOV SP, #60HMOV 11H, #48HMOV 10H, #58HMOV R2, #00HLOOP3: MOV DPL, R2PUSH 10HPUSH 11HPOP DPHMOVX A, @DPTRPOP DPHMOVX @DPTR, AINC R2CJNE R2, #10H, LOOP3MOV R1, #50HMOV DPTR, #5800HMOV R5, #16LOOP4: MOVX A, @DPTRMOV @R1, AINC R1INC DPTRDJNZ R5, LOOP4END四,实验小结1 通过本次实验熟悉了keil软件的功能和使用方法.2 掌握单片机的数据传送类和循环类汇编指令系统,学会了各种数据传送形式的程序设计方法.3 掌握了单片机的调试方法。

数据传送类指令

数据传送类指令

§3.2 数据传送类指令一、本课在教材中的地位与前后知识的联系:本课节选自中国劳动和社会保障出版社《单片机原理及接口技术》第三章第二节“数据传送类指令”,它是在前一节单片机指令常用表示方式和寻址方式的基础上,提出的五大类指令中的第一大类,是单片机所有指令中最重要、也是最常用的一类指令。

它是其他四大类指令的基础,和其他四大类指令共同组成了MCS-51系列单片机的指令系统。

二、对教材的分析与处理:数据传送类指令可以细分为三小种:第一种是数据传送MOV、MOVX、MOVC,第二种是数据交换XCH、XCHD、SWAP,第三种是数据压入弹出PUSH、POP。

在讲解这三种数据传送类的指令时,每一种的这几个指令都可以采用对比的方法来使学生更好理解;另外,每一种的指令都可以列举事例进行讲解,用例子来增强对数据传送类指令的直观感觉。

三、教学目标:1、基础知识目标:(1)掌握数据传送类指令的操作助记符MOV、MOVC、MOVX、XCH、XCHD、SWAP、PUSH、POP。

(2)掌握各数据传送类指令的执行过程。

(3)会用数据传送类指令来书写简单的程序段。

2、能力训练目标:通过对数据传送类指令执行过程的理解,培养学生的想象能力和对比分析能力,提高其运用知识的水平。

3、创新素质目标:在分析和判断数据传送类指令的执行过程中。

培养学生的逻辑推理能力,激发他们的学习兴趣,增强学生对未知事物的探索欲。

四、教学过程和方法:本节课采用传统的教学过程:先复习巩固上一节MCS-51系列单片机指令的格式和寻址方式,由此引出本节所讲的第一条指令、也是最重要的一条指令MOV;然后逐次讲解MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP等数据传送类指令,并以例题的方式加深学生对这几条指令的理解。

为了让学生更好的掌握数据传送类指令,充分利用对比分析(把MOV、MOVC、MOVX进行对比,把XCH、XCHD、SWAP进行对比,把PUSH、POP进行对比)方法,使学生在比较中加深记忆,更快的掌握这几个指令。

微机原理与接口技术实验报告.

微机原理与接口技术实验报告.

实验一、认识Tddebug集成操作软件一.实验内容(一)实验题目:数据传送实验1. 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

2. 修改此程序,采用字符串传送指令完成。

(二)实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。

单步执行数据传送指令后,观察各个寄存器及数据区的内容。

(三)实验步骤:1. 运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。

3.使用Rmrun菜单中的Run运行程序,观察运行结果。

4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。

单步执行数据传送指令后,观察各寄存器及数据区的内容。

过程如下:1)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。

每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。

2)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。

3) 查看执行结果:按Alt+F5,切换到用户窗口。

5.更改数据区中的数据,考察、调试程序的正确性。

二.分析设计思想,绘制实验原理图、流程图。

汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。

三.程序清单及相关注释。

DDATA SEGMENT ;定义源数据段MSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENT ;定义附加数据段MSD D B LEN DUP(?)EXDA ENDSMYSTACK SEGMENT ;定义堆栈段STACK DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV ES,AX ;装载附加数据段寄存器MOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSR[BX] ;开始传输数据MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;返回DOS状态CODE ENDSEND START四.实验结果并分析。

数据传递类指令

数据传递类指令

(数据传递类指令)MOV A,Rn 寄存器传送到累加器 1 1MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8) 1 1 MOV A,#data 立即数传送到累加器 2 1MOV Rn,A 累加器传送到寄存器 1 1MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16) 1 2 PUSH direct 直接地址压入堆栈 2 2POP direct 直接地址弹出堆栈 2 2XCH A,Rn 寄存器和累加器交换 1 1XCH A, direct 直接地址和累加器交换 2 1XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换 1 1低4 位字节(算术运算类指令)INC A 累加器加1 1 1INC Rn 寄存器加1 1 1INC direct 直接地址加1 2 1INC @Ri 间接RAM 加1 1 1INC DPTR 数据指针加1 1 2DEC A 累加器减1 1 1DEC Rn 寄存器减1 1 1DEC direct 直接地址减1 2 2DEC @Ri 间接RAM 减1 1 1MUL AB 累加器和B 寄存器相乘 1 4DIV AB 累加器除以B 寄存器 1 4DA A 累加器十进制调整 1 1ADD A,Rn 寄存器与累加器求和 1 1ADD A,direct 直接地址与累加器求和 2 1ADD A,@Ri 间接RAM 与累加器求和 1 1ADD A,#data 立即数与累加器求和 2 1ADDC A,Rn 寄存器与累加器求和(带进位) 1 1 ADDC A,direct 直接地址与累加器求和(带进位) 2 1ADDC A,@Ri 间接RAM 与累加器求和(带进位) 1 1ADDC A,#data 立即数与累加器求和(带进位) 2 1 SUBB A,Rn 累加器减去寄存器(带借位) 1 1 SUBB A,direct 累加器减去直接地址(带借位) 2 1 SUBB A,@Ri 累加器减去间接RAM(带借位) 1 1 SUBB A,#data 累加器减去立即数(带借位) 2 1 (逻辑运算类指令)ANL A,Rn 寄存器“与”到累加器 1 1ANL A,direct 直接地址“与”到累加器 2 1 ANL A,@Ri 间接RAM“与”到累加器 1 1ANL A,#data 立即数“与”到累加器 2 1ANL direct,A 累加器“与”到直接地址 2 1 ANL direct, #data 立即数“与”到直接地址 3 2 ORL A,Rn 寄存器“或”到累加器 1 2ORL A,direct 直接地址“或”到累加器 2 1 ORL A,@Ri 间接RAM“或”到累加器 1 1ORL A,#data 立即数“或”到累加器 2 1ORL direct,A 累加器“或”到直接地址 2 1 ORL direct, #data 立即数“或”到直接地址 3 1 XRL A,Rn 寄存器“异或”到累加器 1 2XRL A,direct 直接地址“异或”到累加器 2 1 XRL A,@Ri 间接RAM“异或”到累加器 1 1 XRL A,#data 立即数“异或”到累加器 2 1XRL direct,A 累加器“异或”到直接地址 2 1 XRL direct, #data 立即数“异或”到直接地址 31CLR A 累加器清零 1 2CPL A 累加器求反 1 1RL A 累加器循环左移 1 1RLC A 带进位累加器循环左移 1 1RR A 累加器循环右移 1 1RRC A 带进位累加器循环右移 1 1SWAP A 累加器高、低4 位交换 1 1(控制转移类指令)JMP @A+DPTR 相对DPTR 的无条件间接转移 1 2 JZ rel 累加器为0 则转移 2 2JNZ rel 累加器为1 则转移 2 2CJNE A,direct,rel 比较直接地址和累加器,不相等转移 3 2CJNE A,#data,rel 比较立即数和累加器,不相等转移 3 2CJNE Rn,#data,rel 比较寄存器和立即数,不相等转移 2 2CJNE @Ri,#data,rel 比较立即数和间接RAM,不相等转移 3 2DJNZ Rn,rel 寄存器减1,不为0 则转移 3 2 DJNZ direct,rel 直接地址减1,不为0 则转移 3 2 NOP 空操作,用于短暂延时 1 1ACALL add11 绝对调用子程序 2 2LCALL add16 长调用子程序 3 2RET 从子程序返回 1 2RETI 从中断服务子程序返回 1 2AJMP add11 无条件绝对转移 2 2LJMP add16 无条件长转移 3 2SJMP rel 无条件相对转移 2 2(布尔指令)CLR C 清进位位 1 1CLR bit 清直接寻址位 2 1SETB C 置位进位位 1 1SETB bit 置位直接寻址位 2 1CPL C 取反进位位 1 1CPL bit 取反直接寻址位 2 1ANL C,bit 直接寻址位“与”到进位位 2 2 ANL C,/bit 直接寻址位的反码“与”到进位位 2 2ORL C,bit 直接寻址位“或”到进位位 2 2 ORL C,/bit 直接寻址位的反码“或”到进位位 2 2MOV C,bit 直接寻址位传送到进位位 2 1 MOV bit, C 进位位位传送到直接寻址 2 2JC rel 如果进位位为1 则转移 2 2JNC rel 如果进位位为0 则转移 2 2JB bit,rel 如果直接寻址位为1 则转移 3 2 JNB bit,rel 如果直接寻址位为0 则转移 3 2 JBC bit,rel 直接寻址位为1 则转移并清除该位2 2(伪指令)ORG 指明程序的开始位置DB 定义数据表DW 定义16 位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8 位的内部RAM 起名XDATA 给一个8 位的外部RAM 起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止(指令中的符号标识)Rn 工作寄存器R0-R7Ri 工作寄存器R0 和R1@Ri 间接寻址的8 位RAM 单元地址(00H-FFH) #data8 8 位常数#data16 16 位常数addr16 16 位目标地址,能转移或调用到64KROM 的任何地方addr11 11 位目标地址,在下条指令的2K 范围内转移或调用Rel 8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127Bit 片内RAM 中的可寻址位和SFR 的可寻址位Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH$ 指本条指令的起始位置结束在讲指令系统前我们先来复习一下数制的概念。

实验一 数据传送指令

实验一  数据传送指令

重庆交通大学学生实验报告实验课程名称微机原理与接口技术开课实验室线上实验学院年级专业班学生姓名学号开课时间2019 至2020 学年第 2 学期实验一数据传送指令一、实验任务及实验目的实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式,2.利用Turbo Debugger调试工具来调试汇编语言程序。

二、实验内容、过程及实验现象记录1. MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV DS,[0020H],BX2.(1)POP DXPOP CXPOP BXPOP AX(2)POP AX POP BX POP CX POP DX(3)POP CX POP DX POP AX POP BX3.(1)错误原因:两个操作数不能同时为存储器操作数修改为:MOV BX,[SI](2)错误原因:MOV操作指令中两个操作数字长必须相同修改为:MOV AX,BX(3)错误原因:源操作数中同时出现两个变址寄存器修改为:MOV AX,[BX][DI](4)错误原因:MOV操作指令中两个操作数字长必须相同修改为:MOV WORD PTR[BX],2000H(5)错误原因:代码寄存器CS不能作为目标操作数修改为:MOV AX,CS(6)错误原因:不能用立即数直接给段寄存器赋值修改为:MOV DX,2000H4.(1)执行后AX=1200H(2)执行后AX=0000H(3)执行后AX=0000H(4)执行后AX=20CDH(5)执行后AX=5A5CH(6)执行后AX=20D0H(7)执行后AX=5A5CH5.(1)直接寻址MOV AX,[1000H]MOV [2020H],AX(2)寄存器间接寻址MOV SI,1000HMOV AX,[SI]MOV SI,2020HMOV [SI],AX(3)寄存器相对寻址MOV BX,1000HMOV AX,0H[BX]MOV 1020H[BX],AX6.MOV AX,1111HMOV BX,2222HMOV [0010H],3333H XCHG AX,BXXCHG BX,[0010H]7.MOV CX,1000HMOV DS,CXMOV CX,2000HMOV ES,CXMOV DS:[0000H],0EEFFHMOV ES:[0000H],0CCDDHMOV AX,DS:[0000H]MOV BX,ES:[0000H]三、实验结果及总结总结:Turbo Debugge的使用方法Turbo Debugger界面分为以下几个部分:蕖单栏:实现打开、保存、运行等操作代码段区:可以在cs:ip指定的内存位置输入指令寄存器区:可以设置或者查看寄存器的值标志寄存器区:可以设置或者查看标志寄存器中各标志位的值数据段或附加段区:可以在ds段内偏移地址指定的内存位置设置或者查看存储器单元的值,以字节为单位●堆栈段区:可以设置或者查看堆栈中的值,以字为单位操作方式如下:(1) 在代码段区光标所在位置每输入一条指令,就单击回车或者 OK键完成该指令的输入(2)如果采用单步执行方式,则每按一-次F7或F8将执行CS:IP所在位置的- -条指令,同时光标移到下一条指令所在位置,己执行指令影响到的寄存器将被突显出来(3)由于当前数据段区所显示的内容未包含最后--条指令所访问的存储单元,因此没有看到执行结果,可以连续按Tab键或者点击鼠标定位到数据段区,再按Alt-F10,打开局部菜单,然后选择Goto命令,输入要查看的存储单元的地址,按.回车或者点击OK按钮完成地址的输入(4) 如果要再次执行程序,需要先定位到代码段区第1条指令所在位置,然后单击Alt-F1Q 打开局部菜单并选择New C$ IP命令,此时代码区的光标和指针符号都停留在第1条指令所在位置,寄存器区IP 的值由于受到该操作的影响会被重新赋值,并被突显出来(5) 如果要执行整个程序段,可以将代码区的光标停留最后一条指令的下一行,按F2键设置断点,按F4或F9可以一次从程序段的起始位置执行到断点所在位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目
实验一数据传送类指令的使用
实验类型
验证型
实验目的
1.学习如何建立keil工程;
2.掌握数据传送指令的使用方法;
3.正确区分片内RAM、片外RAM及ROM不同存储单元的数据传送指令的使用。
实验仪器
1 TKSCM-1型单片机开发综合实验装置;
2 PC机;
3 keil软件。
实验原理及内容
1、keil工程的建立
2在RAM30H单元给定一个数值,正确运行后REG窗口中观察累加器的内容,在PDATA窗口观察片外RAM30H单元的内容。
3在RAM30H单元中给定一个数值,在DATA窗口观察40H单元的内容。
4在实验成功的基础上,可对实验源程序中的指令作尝试性修改,观察修改后的程序运行结果,总结体会。
实验报告要求
SJMP $
3外部RAM2000H单元中的数据传送到外部RAM2030H单元中。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#2000H
MOVX A,@DPTR
MOV DPTR,#2030H
MOVX @DPTR,A
SJMP $
实验方法及步骤
1按照题目要求输入源程序,在编译程序过程中,对输入程序中出现的错误进行修改,直到程序输入完全正确。
MOV A,30H
MOVX @R0,A
SJMP $
在输出窗口查看:D:30H X:30H的存储结果。
2外部RAM2000H单元内的数据传送到内部RAM30H单元中。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#2000H
MOVX A,@DPTR
MOV 30H,A
建立新工程→选择芯片→编写程序(*.ASM)→工程加入程序文件→保存、编译→调试
输入一个完整的练习程序,从建立文件、编译文件、观察和修改进行练习。
源程序:ORG 0000H
MOV A,#0
MOV P1,#0
LOOP:INC P1
CALL DELAY
SJMP LOOP
DELAY:MOV R2,#03H
MOV R1,#20H
MOV R0,#50H
DLP:DJNZ R0,DLP
DJNZ R1,DLP
DJNZ R2,DLP
RET
END
2、数据传送类指令
1内部RAM30H单元的数据传送到外部RAM30H单元中。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV R0,#30H
MOV 30H,#0EFH
1对源程序进行文字注释;
2写出观察数据具体的目
单片机原理与实践指导
学时
3
相关文档
最新文档