Инструкция по сборке с машинным кодом

Я пытаюсь конвертировать 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 ответ

Все отлично.

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
Другие вопросы по тегам