Инструкция по сборке с машинным кодом - PullRequest
3 голосов
/ 04 июля 2011

Я пытаюсь преобразовать MOVFF 0x10, 0x15 в машинный код.Микроконтроллер микрочип 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

Не могли бы вы объяснить, как получить правильный ответ?

Спасибо

1 Ответ

2 голосов
/ 04 июля 2011

Все в порядке.

movff - это инструкция из 2 слов (каждое слово имеет длину 16 бит).

Слово инструкции movff начинается с битов b'1100 'ичем следовать 12 битам для адреса байта источника в вашем случае 0x10.После этой инструкции следуйте 'слову инструкции назначения', которое начинается с b'1111 'и затем следуйте 12 битам для адреса байта назначения в вашем случае 0x15.

Если вы перейдете (переход) только к' инструкции назначения ', тогдаnop должен быть выполнен.

Таким способом можно адресовать 4096 байт оперативной памяти в PIC18 (что означает всю оперативную память).

РЕДАКТИРОВАТЬ: добавлен простой выходной файл теста для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
...