- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
\
实验一 内存操作
实验目的
① 掌握数据传送指令;
② 掌握各种数据传送指令的寻址方式;
③ 熟练运用 keil 环境对汇编程序进行调试;
④ 掌握数据传送、复制等程序的设计与调试方法。
预习要求
①
②
③
④
理解数据传送指令和循环指令的使用;
理解如何对内部寄存器、内部 RAM 、外部 XRAM (外部数据存储器)的读写;
理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式;
认真预习本实验内容,自行编写程序,填写实验报告。
实验设备
计算机 1 台;
4.基础型实验内容 :
下列程序的功能是给外部 XRAM 8000H ~ 80FFH 的 256 个单元的内容赋值,赋值的内容取决于程序中 A 的赋值。 在 Keil 环境运行该程序, 并观察寄存器及内存单元的变化。
ORG
0000H
START
EQU
8000H;
MAIN:
MOV
DPTR,#START;
;起始地址
MOV
R0,#0H;
;设置 256 字节计数值
MOV
A,#1H;
Loop:
MOVX
@DPTR,A;
INC
DPTR;
;指向下一个地址
DJNZ
R0,Loop;
;计数值减 1
NOP;
SJMP
$;
END
寄存器 A 为 1H, DPTR 递增到 8100H ,奇偶校验位由于 A 的内容是 1H,所以 p 也是 1.
2. 下列程序将外部
XRAM 3000H起始的
256 个字节存储块移动到外部
XRAM 4000H起始的
256 个字节存储块,在 Keil 环境运行如下程序,观察寄存器及存储单元的变化。
ORG
0000H
MOV
DPTR,#3000H
MOV
A,#01H
MOV
R5,#0H
LOOP:
MOVX
@DPTR,A
INC
DPTR
DJNZ
R5,LOOP
MOV
R0,#30H
MOV
R1,#00H
MOV
R2,#40H
MOV
R3,#00H
MOV
R7,#0H
LOOP1:MOV
DPH,R0
MOV
DPL,R1
MOVX
A,@DPTR
MOV
DPH,R2
MOV
DPL,R3
MOVX
@DPTR,A
INC
R1
INC
R3
DJNZ R7,LOOP1
SJMP $
END
实现了将 3000H 开始的 256 个单元的内容复制到以
4000H 开
头的外部 RAM 存储单元中。
R0 的值为
最大值亦为
30H;R2 的值变为 40H;寄存器 A 中赋值为 1H,对栈指针
07H ,DPTR 中最后递增到 40ffH , psw 中只有奇偶校验位
sp 初始化为 07H ,其
p 是 1H
3 在 Keil 环境运行如下程序,观察寄存器及内存单元的变化,将变化结果注释于右侧,并
说明程序完成什么功能?将程序中 MOV A,@R0 改成 MOVX
改成 MOVX @R1,A ,运行如下程序,观察寄存器及相应地址
内容的变化。
A,@R0 ,将 MOV @R1,A
RAM 、XRAM 地址单元存储
1.
ORG
0000H; 程序从 000H 开始
MOV
R0,#30H;
MOV
R1,#50H
MOV
R2,#20H
L1:
MOV
A,@R0
MOV
@R1,A
INC
R0
INC
R1
DJNZ
R2,L1
SJMP
$
END
R0 的值递增到 50H, R1 的值递增到 70H ,A 中的值是 4FH 中的值,即 FFH( 程序运行前自己设定的 )
该程序将内部 RAM 30H 开始的连续 20H 个存储单元中的内容复制到内部 RAM 50H 开始的连续 20H 个存储单元中。其中 30H 到 4FH 中的值在程序运行前自定
义。
2.
将程序中 MOV A,@R0
改成 MOVX
A,@R0 ,将 MOV @R1,A
改成 MOVX @R1,A
ORG
0000H
MOV
R0,#30H
MOV
R1,#50H
MOV
R2,#20H
L1:
MOVX
A,@R0
MOVX
@R1,A
INC
R0
INC
R1
DJNZ
R2,L1
SJMP $
END
寄存器 A 中的数值没有发生过任何变化, R0 和 R1 同未改变前一样, 一直递增到 50H 和 70H
虽然设定了外部
RAM 30H
到 4FH
中的值,但是并没有复制到
50H
到
6FH
存储单元中。
原因是初始化后P口都为#FFH,而使用
MOVX A
,@Ri
要 求 P 2 口 为 # 0 0 H , 所 以 只 要 在 程 序 前 加 MOV
P2,#00H 就能实现和原来一样的功能了
5.设计型实验
① 在
keil
环境下,修改内部
RAM30H
~ 3FH 的内容分别为
文档评论(0)