1、從外部RAM20H單元開始,有30個(gè)帶符號(hào)數(shù),試編一個(gè)程序,把其中正數(shù)、負(fù)數(shù)分別送到片內(nèi)RAM的51H和71H開始的存儲(chǔ)單元,并分別記下其中正數(shù)和負(fù)數(shù)的個(gè)數(shù)送到片內(nèi)RAMD的50H和70H單元。
程序如下:
ZHENG DATA 50H
FU DATA 70H
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:MOV ZHENG,#00H ;計(jì)數(shù)初始為零
MOV FU,#00H ;計(jì)數(shù)初始為零
MOV R7,#30 ;30個(gè)數(shù)
MOV R0,#1FH ;第一個(gè)數(shù)的前一個(gè)地址
MOV R1,#51H ;整數(shù)存的首地址
MOV SP,#70H ;負(fù)數(shù)的首地址
LOOP:INC R0 ;指向第一個(gè)數(shù)
MOV A,@R0 ;給a
MOV C,ACC.7 ;符號(hào)位給c
JC NEXT ;勢(shì)負(fù)數(shù)則next
MOV @R1,A
INC R1 ;正數(shù)就保存在正的
INC ZHENG ;計(jì)數(shù)加一
NEXT:PUSH FU ;負(fù)數(shù)存
INC FU ;計(jì)數(shù)加一
DJNZ R7,LOOP ;未到30就繼續(xù)判斷
END ;結(jié)束