3

MOVFF 0x10, 0x15マシンコードに変換しようとしています。マイクロコントローラは Microchip PIC 18F1220 です。リファレンスマニュアルには次のように書かれています。

MOVFF fs,fd

エンコーディング:
1 番目の単語: 1100 ffff ffff ffffs
2 番目の単語:1111 ffff ffff ffffd

解決策は次のとおりです。

1100 0000 0010 0000
1111 0000 0010 0101

しかし、私が得ている解決策は

0x10 = 0001 0000
0x15 = 0001 0101
1100 0000 0001 0000
1111 0000 0001 0101

正しい答えを得る方法を教えてください。

ありがとうございました

4

1 に答える 1

2

全て大丈夫。

movffは 2 ワードの命令です (各ワードは 16 ビット長です)。

movff 命令ワードはビット b'1100' で始まり、0x10 の場合、ソース バイト アドレスの 12 ビットが続きます。その命令の後、b'1111' で始まる「宛先命令ワード」が続き、0x15 の場合は宛先バイト アドレスの 12 ビットが続きます。

「宛先命令」のみにジャンプ (分岐) する場合は、nop を実行する必要があります。

この方法では、PIC18 で 4096 バイトの RAM をアドレス指定できます (RAM 全体を意味します)。

編集: PIC18F1220 の簡単なテスト ケース出力ファイルを追加:

---  C:\WORK\TEST\Test.asm  ----------------------------------------------
                                                  1:        org 0
                                                  2:     fs equ  0x10
                                                  3:     fd equ  0x15
   000    C010     MOVFF 0x10, 0x15               4:        movff   fs, fd
   002    F015     NOP
   004    C010     MOVFF 0x10, 0x15               5:        movff   0x10, 0x15
   006    F015     NOP
于 2011-07-04T08:06:26.193 に答える