题目:从片内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