Assembly 机器代码的汇编指令

Assembly 机器代码的汇编指令,assembly,binary,microcontroller,microchip,pic18,Assembly,Binary,Microcontroller,Microchip,Pic18,我正在尝试将MOVFF 0x10、0x15转换为机器代码。微控制器采用PIC18F1220微芯片。参考手册上说: MOVFF fs,fd 编码: 第一个字:1100 ffff ffff ffffs 第二个字:1111 ffff ffffd 解决办法是: 1100 0000 0010 0000 1111 0000 0010 0101 但我得到的解决办法是 0x10 = 0001 0000 0x15 = 0001 0101 1100 0000 0001 0000 1111 0000 0001 0

我正在尝试将
MOVFF 0x10、0x15
转换为机器代码。微控制器采用PIC18F1220微芯片。参考手册上说:

MOVFF fs,fd
编码:
第一个字:
1100 ffff ffff ffffs

第二个字:
1111 ffff ffffd

解决办法是:

1100 0000 0010 0000
1111 0000 0010 0101
但我得到的解决办法是

0x10 = 0001 0000
0x15 = 0001 0101
1100 0000 0001 0000
1111 0000 0001 0101
你能解释一下如何得到正确的答案吗

谢谢

一切都好

movff是两个字的指令(每个字的长度为16位)

movff指令字以位b'1100'开头,在您的案例0x10中,源字节地址后接12位。在该指令之后,跟随以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

我不理解关于NOP的部分。NOP是不运行的,需要一个MCPU指令周期。因此,如果没有执行第一条指令,那么以b'1111'开头的下一条指令将不会执行任何操作。但我不明白为什么这两个字的第三列是0010而不是0001?添加了PIC18F1220的简单测试输出文件,请检查它。那应该是你的错误!