
单片机软件实验报告.docx
55页\实验一 内存操作1. 实验目的① 掌握数据传送指令;② 掌握各种数据传送指令的寻址方式;③ 熟练运用 keil 环境对汇编程序进行调试;④ 掌握数据传送、复制等程序的设计与调试方法2. 预习要求①②③④理解数据传送指令和循环指令的使用;理解如何对内部寄存器、内部 RAM 、外部 XRAM (外部数据存储器)的读写;理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式;认真预习本实验内容,自行编写程序,填写实验报告3. 实验设备计算机 1 台;4.基础型实验内容 :1. 下列程序的功能是给外部 XRAM 8000H ~ 80FFH 的 256 个单元的内容赋值,赋值的内容取决于程序中 A 的赋值 在 Keil 环境运行该程序, 并观察寄存器及内存单元的变化ORG0000HSTARTEQU8000H;MAIN:MOVDPTR,#START;;起始地址MOVR0,#0H;;设置 256 字节计数值MOVA,#1H;Loop:MOVX@DPTR,A;INCDPTR;;指向下一个地址DJNZR0,Loop;;计数值减 1NOP;SJMP$;END寄存器 A 为 1H, DPTR 递增到 8100H ,奇偶校验位由于 A 的内容是 1H,所以 p 也是 1.2. 下列程序将外部XRAM 3000H起始的256 个字节存储块移动到外部XRAM 4000H起始的256 个字节存储块,在 Keil 环境运行如下程序,观察寄存器及存储单元的变化。
ORG0000HMOVDPTR,#3000HMOVA,#01HMOVR5,#0HLOOP:MOVX@DPTR,AINCDPTRDJNZR5,LOOPMOVR0,#30HMOVR1,#00HMOVR2,#40HMOVR3,#00HMOVR7,#0HLOOP1:MOVDPH,R0MOVDPL,R1MOVXA,@DPTRMOVDPH,R2MOVDPL,R3MOVX@DPTR,AINCR1INCR3DJNZ R7,LOOP1SJMP $END实现了将 3000H 开始的 256 个单元的内容复制到以4000H 开头的外部 RAM 存储单元中R0 的值为最大值亦为30H;R2 的值变为 40H;寄存器 A 中赋值为 1H,对栈指针07H ,DPTR 中最后递增到 40ffH , psw 中只有奇偶校验位sp 初始化为 07H ,其p 是 1H3 在 Keil 环境运行如下程序,观察寄存器及内存单元的变化,将变化结果注释于右侧,并说明程序完成什么功能?将程序中 MOV A,@R0 改成 MOVX改成 MOVX @R1,A ,运行如下程序,观察寄存器及相应地址内容的变化A,@R0 ,将 MOV @R1,ARAM 、XRAM 地址单元存储1.ORG0000H; 程序从 000H 开始MOVR0,#30H;MOVR1,#50HMOVR2,#20HL1:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR2,L1SJMP$ENDR0 的值递增到 50H, R1 的值递增到 70H ,A 中的值是 4FH 中的值,即 FFH( 程序运行前自己设定的 )该程序将内部 RAM 30H 开始的连续 20H 个存储单元中的内容复制到内部 RAM 50H 开始的连续 20H 个存储单元中。
其中 30H 到 4FH 中的值在程序运行前自定义2.将程序中 MOV A,@R0改成 MOVXA,@R0 ,将 MOV @R1,A改成 MOVX @R1,AORG0000HMOVR0,#30HMOVR1,#50HMOVR2,#20HL1:MOVXA,@R0MOVX@R1,AINCR0INCR1DJNZR2,L1SJMP $END寄存器 A 中的数值没有发生过任何变化, R0 和 R1 同未改变前一样, 一直递增到 50H 和 70H虽然设定了外部RAM 30H到 4FH中的值,但是并没有复制到50H到6FH存储单元中原因是初始化后P口都为#FFH,而使用MOVX A,@Ri要 求 P 2 口 为 # 0 0 H , 所 以 只 要 在 程 序 前 加 MOVP2,#00H 就能实现和原来一样的功能了5.设计型实验① 在keil环境下,修改内部RAM30H~ 3FH 的内容分别为#00H~ #0FH,设计程序实现将内部 RAM 30H-3FH单元的内容复制到 40H-4FH 中ORG 000H;MOV R2,#10H;MOV A,#0H;MOV R1,#30H;MOV R0,#40H;LOOP: MOV @R1,A;INC R1;INC A;DJNZ R2,LOOP;MOV R1,#30H;MOV R2,#10H;LOOP2:MOV A,@R1;MOV @R0,A;INC R1;INC R0;DJNZ R2,LOOP2;SJMP $;END② 在keil环境下,修改内部RAM30H~ 3FH 的内容分别为#00H~ #0FH,设计程序实现将内部RAM 30H~ 3FH单元的内容复制到片外1030H ~ 103FH中。












