Инструкция по сборке с машинным кодом
Я пытаюсь конвертировать 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