1.問題描述:
對RAM中從30h開始的50個(gè)單元清零。
2.匯編方法
COUNT EQU 20H ;指定20H寄存器為循環(huán)變量
FSR EQU 04H ;指定FSR為04H
INDF EQU 00H ;指定INDF為00H
MOVLW D’50 ;給循環(huán)變量賦初值
MOVWF COUNT
MOVLW 30H ;將30H →FSR
MOVWF FSR
NEXT CLRF INDF ;間接尋址
INCF FSR,1 ;地址指針內(nèi)容加1,指向下一單元
DECFSZ COUNT,1 ;計(jì)數(shù)值減1,結(jié)果為0就
;跳過下一條指令到STOP處
GOTO NEXT ;跳轉(zhuǎn)回去并執(zhí)行下一次循環(huán)
STOP GOTO STOP ;停機(jī)
3.混編方法
#include
char COUNT; //定義全局變量
main(){
COUNT=50;
FSR=0x30;
#asm
INDF EQU 00H
NEXT CLRF INDF
INCF _FSR, F
DECFSZ _COUNT,F
GOTO NEXT
#endasm
while(1){ ;
}
}
注意:只要是C語言中定義的變量,在匯編中對其尋址時(shí)一定要用下劃線。
4.C語言編程
#include
char COUNT; //定義全局變量
main(){
COUNT=50;
FSR=0x30;
INDF=0;
NEXT: INDF=0;
FSR++;
if (COUNT-- >0)
goto NEXT;
while(1){ ; }
}
注意:用C語言編寫可讀性強(qiáng),但是占用的資源會(huì)多。