首地址为1000H的连续存放的八个数,与首地址为1010H的间隔存放的八个数进行交换

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

将外部数据存储器中首地址为1000H的连续存放的八个数,与首地址为1010H的间隔存放的八个数进行交换。(以下地址为十六进制)

1000    1001    1002    1003    1004    1005    1006    1007

                           ↓↑

1010    1012    1014    1016    1018    101A    101C    101E

这个程序我编了下,但是不知道对不对,电脑没在身边,用手机打的,麻烦高手指教下,而且感觉自己编的比较麻烦。。。。。
程序略。

悬赏分:0 - 解决时间:2009-10-18 13:09
;------------------------------------------------
最佳答案:

本题目涉及到两个片外地址。
传统的单片机,只有一个片外数据指针DPTR,处理两个地址就比较麻烦。稍新一些的单片机,如AT89S52,有两个DPTR了,就方便多了。
楼主的题目,像是学校里面的作业,这样的环境一般是不使用两个DPTR的。

本题目,数据量很小,可以先全部倒到片内,再传送到片外的目的地。
这样便于大批数据的修改,但是,为了解决现在的小问题,程序未免嫌长。

还是在楼主的程序上,稍加修改。

程序如下:
;------------------------------------------------
      MOV  DPTR, #1000H  ;第一块地址
      MOV  R7,  #10H     ;R7 R6是
      MOV  R6,  #10H     ;第二块地址
      MOV  R2,  #8
LOOP:
      MOVX A, @DPTR      ;取第一地址内容
      MOV  B,  A         ;暂时存放
      PUSH DPH
      PUSH DPL           ;保存地址
      MOV  DPH, R7
      MOV  DPL, R6       ;DPTR = 第二块地址
      MOVX A, @DPTR      ;取第二地址内容
      XCH  A, B          ;交换
      MOVX @DPTR, A      ;存放
      INC  DPTR          ;第二地址要加二
      INC  DPTR          ;变为1012H
      MOV  R7, DPH       ;保存第二地址
      MOV  R6, DPL
      POP  DPL           ;恢复第一地址
      POP  DPH
      XCH  A, B
      MOVX @DPTR, A      ;将首地址1010H的内容放到1000H
      INC  DPTR          ;变为1001H
      DJNZ R2, LOOP
;完

;------------------------------------------------
回答者: 做而论道 - 八级   2009-10-18 10:20
提问者对于答案的评价:好的!
原文网址:http://zhidao.baidu.com/question/121870211.html
;------------------------------------------------

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值