3

我正在尝试转换MOVFF 0x10, 0x15为机器代码。微控制器是 Microchip PIC 18F1220。参考手册说:

MOVFF fs,fd

编码:
第一个字:1100 ffff ffff ffffs
第二个字: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' 开头,然后在您的情况下为源字节地址的 12 位 0x10。在该指令之后,跟随以 b'1111' 开头的“目标指令字”,然后在您的情况下跟随 12 位目标字节地址 0x15。

如果您将跳转(分支)到仅“目标指令”,则应执行 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 回答