机器代码的汇编指令

时间:2011-07-04 05:52:27

标签: assembly binary microcontroller microchip pic18

我正在尝试将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

你能解释一下如何得到正确的答案吗?

谢谢

1 个答案:

答案 0 :(得分: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