机器码的汇编指令
我正在尝试将 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
您能解释一下如何获得正确答案吗?
谢谢
I'm trying to convert MOVFF 0x10, 0x15
to machine code. The Microcontroller is Microchip PIC 18F1220. The reference manual says:
MOVFF fs,fd
Encoding:
1st word: 1100 ffff ffff ffffs
2nd word: 1111 ffff ffff ffffd
The solution is:
1100 0000 0010 0000
1111 0000 0010 0101
But the solution I'm getting is
0x10 = 0001 0000
0x15 = 0001 0101
1100 0000 0001 0000
1111 0000 0001 0101
Can you please explain me how to get the right answer?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一切都好。
movff是2字指令(每个字16位长)。
movff 指令字以位 b'1100' 开头,然后是 12 位源字节地址(在您的情况下为 0x10)。在该指令之后,跟随以 b'1111' 开头的“目标指令字”,然后跟随 12 位作为目标字节地址(在您的情况下为 0x15)。
如果您仅跳转(分支)到“目标指令”,则应执行 nop。
通过这种方式,可以在 PIC18 下寻址 4096 字节的 RAM(这意味着整个 RAM)。
编辑:
为 PIC18F1220 添加了简单的测试用例输出文件:
Everything is OK.
movff is 2 words instruction (each word is 16 bits long).
movff instruction word starts with bits b'1100' and than follow 12 bits for source byte address in your case 0x10. After that instruction follow 'destination instruction word' which starts with b'1111' and than follow 12 bits for destination byte address in your case 0x15.
If you will jump (branch) to only 'destination instruction' then a nop should be performed.
On this way is possible to address 4096 bytes of RAM under PIC18 (what mean whole RAM).
EDIT:
added simple test case output file for PIC18F1220: