机器码的汇编指令

发布于 2024-11-18 05:34:53 字数 444 浏览 2 评论 0原文

我正在尝试将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与酒说心事 2024-11-25 05:34:53

一切都好。

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

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:

---  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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文