简单的单片机实验题目!编了下,不知道对不对!麻烦指点!

将外部数据存储器中首地址为1000H的连续存放的八个数与首地址为1010H的间隔存放的八个数进行交换。(以下地址为十六进制)
1000 1001 1002 1003 1004 1005 1006 1007
↓↑
1010 1012 1014 1016 1018 101A 101C 101F
这个程序我编了下,但是不知道对不对,电脑没在身边,用手机打的,麻烦高手指教下,而且感觉自己编的比较麻烦。。。。。我是将外地址1000H的内容先放到片内30H的内容里了,然后将外地址1010H的内容放到1000H内,之后再将30H的内容放到1010H内。
MOV DPTR, #1000H
MOV R7, #10H
MOV R6, #00H
MOV R2, #8
MOV R0, #30H
LOOP: MOVX A, @DPTR
MOV @R0,A ;将外地址1000H的内容放到内存储器内
PUSH DPH
PUSH DPL
MOV DPH, R7
MOV DPL,R6 ;将(DPTR)=1010H
MOVX A,@DPTR
POP DPH
POP DPL
MOVX @DPTR, A ;将首地址1010H的内容放到1000H
INC DPTR
PUSH DPH
PUSH DPL
MOV A,@R0 ;将片内存储器(即外地址1000H)的内容放到A内
MOV DPH, R7
MOV DPL, R6
MOVX @DPTR, A ;将外地址1000H的内容放到外1010H中
INC DPTR
MOV R7,DPH
MOV R6,DPL
POP DPL
POP DPH
DJNZ R2,LOOP

本题目涉及到两个片外地址。
传统的单片机,只有一个片外数据指针DPTR,地址的处理就比较麻烦。
稍新一些的单片机,如AT89S52,就有两个DPTR。
楼主的题目,像是学校里面的作业,一般是不使用两个DPTR的。
本题目,数据量很小,可以先全部倒到片内,再传送到片外的目的地。
这样便于大批数据的修改,但是,为了解决现在的小问题,程序未免嫌长。
还是在楼主的程序上,稍加修改。
程序如下:
;
MOV DPTR, #1000H ;第一块地址
MOV R7, #10H ;第二块地址
MOV R6, #10H ;此处修改了,原为00H
MOV R2, #8
LOOP:
MOVX A, @DPTR ;取第一地址内容
MOV B, A ;暂时存放
PUSH DPH
PUSH DPL
MOV DPH, R7
MOV DPL, R6 ;DPTR = 1010H
MOVX A,@DPTR ;取第二地址内容
XCH A, B
MOVX @DPTR, A ;交换存放
INC DPTR
MOV R7, DPH ;保存第二地址
MOV R6, DPL
POP DPL ;恢复第一地址
POP DPH
XCH A, B
MOVX @DPTR, A ;将首地址1010H的内容放到1000H
INC DPTR
DJNZ R2,LOOP
;完
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-18
1010 1012 1014 1016 1018 101A 101C 101F

最后一个地址应该是 101E 才对

简单的单片机实验题目!编了下,不知道对不对!麻烦指点!
传统的单片机,只有一个片外数据指针DPTR,地址的处理就比较麻烦。稍新一些的单片机,如AT89S52,就有两个DPTR。楼主的题目,像是学校里面的作业,一般是不使用两个DPTR的。本题目,数据量很小,可以先全部倒到片内,再传送到片外的目的地。这样便于大批数据的修改,但是,为了解决现在的小问题,程序未免...

麻烦高手做一下这些单片机的题目
1.MOV A,R0 ADD A,R1 MOV 60H,A MOV 20H,#00H MOV 20H.0,CY MOV 61H,20H 2.MOV DPH,#10H MOV R0,#00H MOV R1,#30H LOOP:MOV DPL,R0 MOVX A,@DPTR MOV @R1,A INC R0 INC R1 CJNE R0,#31H,LOOP RET 3.MOV 00H,#71H MOV 01H,#51H MOV 08H,#20H SETB RS0 CLR ...

单片机汇编矩阵键盘实验(扫描法)
这里只需要在程序里做下判断,先判断下是不是K05按下,若不是就是K51,因为按键K01、K02、K03、K04、K05在5个IO口都为读取的情况下,就可以识别,不需要扫描识别处理,相当于这5个按键优先级高与其他按键。

单片机这题麻烦看下,我算的a等于f0h和答案不一样,非常感谢
结果就是(A)=F0H (B)=00H

51单片机简单问题,麻烦看下代码,测试仪只亮了第一个LED灯没有执行_cro...
\/\/ 学习单片机编程,可以先看一些仿真实例作为参考,看懂了再学着编程。include<reg51.h> define uchar unsigned char uchar temp;int key1,key,disbuf;\/\/ 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,...

题目<<基于单片机(STC89C52)的比赛用倒计时提醒器的设计与实现>>, 麻...
;我是从电子制作实验室网站上改编的,电路图是51单片机试验板的电路图,只要保留P1.0的LED、4位拨码按钮、蜂鸣器、K1、K2开关、显示电路、稳压电路和单片机最小系统就行了 ;可设定时间的倒计时定时器,可选择5\/15\/20\/30\/35\/45\/50分钟倒计时 ;倒计时时间由四位拨码开关的2\/3\/4位来控制,;第2...

单片机入门,急求高手大虾指教!!!
您的水平不高我完全心中有底,其实我只要求这些学生能够掌握单片机应用开发的基本技能,用汇编和C51 写过一些基本的程序,真正动手做过一些简单的项目,然后将自己做过的项目写成比较规范的文档。我想,这种形式的“自我介绍”肯定要比让别人看您那写的千遍一律的“八股文”简历不知要强多少倍,古人言:“一叶知秋”其实...

自制一个流水线计数器,麻烦大家给小弟指点一下
不管图怎么样,用单片机做计数器,肯定比不用单片机要简单很多,我博客上有计数器程序,您可以去参考。数码管最好选用连体的,这要省空间。如果自已实在是搞不定,稍微掏点费,我可以代劳。

那位大神帮忙解答下 MCS-51单片机的几个问题如下图 麻烦写明步骤...
MOV DPTR,#0020H MOVX A,@DPTR MOV R0,A MOV DPTR,#0020H MOVX A,@DPTR MOV 20H,A MOV DPTR,#0100H MOVX A,@DPTR MOV 20H,A MOV DPTR,#2000H CLR A MOVC A,@A+DPTR MOV R0,A MOV DPTR,#2000H CLR A MOVC A,@A+DPTR MOV...

哪你们学了多久才学会单片机啊!我早两年就想学了,可是到现在还是不会...
要学会融汇贯通,懂得了一方面就需要贯通到另一方面,这对深入学习单片机很有帮助。学编程,最重要的是学会人家的思想,学会了思想,编起来就容易了。当然了,编程也讲究积累,积累得多了,一些东西自然信手拈来。 你的问题说得不怎么清楚,我不知道你具体是要什么,你是要以上的方法呢,H还是你不知道怎么入门。 现在常用...

相似回答