片外RAM数据排序

题目要求:在从1000H开始存有32H个正数,现在将其从小到大排序,并将排序结果存于2000H开始的片外存储器中。
请各位高手帮我看一下这段代码。

    1000H
START:
    MOV R3, #00H
   …… ……        ;细节略
    END

这程序是否正确,不正确的话顺便帮我改一下。

悬赏分:100 - 解决时间:2009-12-15 22:44
----------------------------------------

最佳答案:

;改好了,仿真实验成功。

    ORG  0000H
START:
    MOV  A, #48H
    MOV  DPTR, #1000H
    MOV  R7, #32H
UU:
    MOVX @DPTR, A
    INC  DPTR
    DEC  A
    DJNZ R7, UU
;---------------上面各条,从1000H开始,存放了一批递减的数据
    CALL X_SORT         ;调用排序子程序
    NOP                 ;上面数据即递增排好
    CALL M_XRAM         ;调用移动子程序
    NOP                 ;按照要求,移动到2000H
    SJMP $
;---------------下面是排序子程序
X_SORT:
    MOV  R7, #32H
ZZ:
    MOV  2AH, R7
    MOV  DPTR, #1000H   ;前一数字的地址
SS:
    MOVX A, @DPTR       ;取出前一个数字
    MOV  2BH, A         ;保存前一数字
    MOV  R6, DPL        ;保存前一数字的地址到R6
    INC  DPTR
    MOVX A, @DPTR       ;取出后一个数字
    CJNE A, 2BH, $ + 3
    JC   KK
    MOV  DPL, R6        ;恢复前一地址
    MOVX @DPTR, A       ;保存后一数字
    MOV  A, 2BH         ;找回前一数字
    INC  DPTR           ;后一地址
    MOVX @DPTR, A       ;保存
KK:
    DJNZ 2AH, SS
    DJNZ R7, ZZ
    RET
;---------------排序结束-下面是移动子程序
M_XRAM:
    MOV  DPL, #00H
    MOV  R7, #32H
M_LOOP:
    MOV  DPH, #10H      ;从1000H
    MOVX A, @DPTR       ;取出
    MOV  DPH, #20H      ;到2000H
    MOVX @DPTR, A       ;复制
    INC  DPTR
    DJNZ R7, M_LOOP
    RET
END
--------------------------------------
回答者:    做而论道 - 十一级   2009-12-15 00:29
提问者对于答案的评价:非常感谢你。
原题网址:http://zhidao.baidu.com/question/129408332.html
--------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值