使用三个地址指针

题目:从片内RAM的20H单元开始,有30个数据,试编写程序将其中的正数,负数分别送51H和71H开始的存储单元,并将正数,负数的个数送往50H和70H单元。
;------------------------------------------------------------------------------

最佳答案:

;题目要求有三个地址,需要使用三个地址指针,比较麻烦。

;程序如下:

    MOV   50H,  #51H        ;两个个数计数器
    MOV   70H,  #71H        ;兼当地址指针,目标地址,
    MOV   R0,  #20H         ;源地址
    MOV   R2,  #30          ;数据个数
LOOP:
    MOV   A,   @R0
    INC   R0
    JB    ACC.7, FU         ;负数,转移
    MOV   R1,  50H          ;取正数的指针
    MOV   @R1, A            ;存
    INC   50H               ;指针加一
    SJMP  NEXT
FU:
    MOV   R1,  70H
    MOV   @R1, A
    INC   70H
NEXT:
    DJNZ  R2, LOOP          ;个数减一,非0继续

    MOV   A,   50H          ;正数指针
    CLR   C
    SUBB  A,   #51H         ;减去初始值
    MOV   50H, A            ;即为个数
    MOV   A,   70H
    SUBB  A,   #71H
    MOV   70H, A
    RET

;-------------------------------------------------------------------------------

回答者: 做而论道 - 九级   2009-11-3 20:03
提问者对于答案的评价:一切尽在不言中,谢谢
原题网址:http://zhidao.baidu.com/question/125581736.html
原题网址:http://zhidao.baidu.com/question/124089796.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值