2016-03-25 6 views
0

8051アーキテクチャでメモリをインクリメントする方法はありますか?例えばデータメモリからレジスタへ

メモリスロット:

mov 0x71, #0x01 mov 0x72, #0x02 mov 0x73, #0x03

ループの中に道があるがために、ループ内の

mov 0x71, A do something; mov 0x72, A do something;

を言うの?

Javaの場合、単純にfor(int i = 0; i < variable; i++)を実行しますが、8051アーキテクチャではその方法を知りません。

答えて

2

確かに、これを行うにはいくつかの方法があります。周辺コードによっては、DJNZまたはCJNE命令を使用しています。

;Load your control variable into B. From a table, GPIO, etc. 
    MOV B,#3H 

    ;Build your loop. This is basically a Do While loop. 

    ;int i=0, (really a byte since 8 is 8-bit) 
    CLR A 

    ;Start of the loop, notice this is AFTER the CLR op 
FN_LOOP: 

    ;Do something... 

    ;i++ 
    INC A 

    ;i < variable. Stops when A == B 
    CJNE A,B,FN_LOOP 

    ;Rest of your code 

アセンブリでもアドレッシングモードを読み上げることをお勧めします。その知識はアセンブリ命令セットのドキュメントを読むために不可欠です。

関連する問題