【发布时间】:2019-08-06 12:08:56
【问题描述】:
我不明白指令 MULLW 以及寄存器 PRODL 和 PRODH 是如何工作的。我有这段代码:
MOVLW 0x0D
MULLW 0x09
MOVF PRODL,W
实际发生了什么?我一直在尝试对这些值进行与运算,这在乘法方面似乎是合乎逻辑的:
0000 1101
0000 1001
但这会给出错误的 0x09。答案已移至 PRODL,为 0x75。我不知道它是如何变成 0x75 的,我已经尝试了所有值的门,但没有任何意义。在 Internet 上,我找到的关于 mullw、PRODL 和 PRODH 的所有信息都是汇编程序手册,它没有显示解释为什么答案会变成这样的每一步。
我所知道的是有一些 16 位的初始操作,结果的低值和高值(不知道过程)分别放在 PRODL 和 PRODH 中。
知道PRODL、PRODH和MULLW的人可以举个例子详细解释一下吗?
谢谢。
【问题讨论】:
-
结果明明是0x75希望你没问题吧?这只是
0x0D*0x09乘法。MOVLW加载第一个操作数,MULLW进行乘法运算。结果是 16 位,PRODL(产品低)中的低 8 位,PRODH(产品高)中的高 8 位。不知道你为什么要AND值,也许你把它和单位乘法混淆了?
标签: assembly cpu-registers microchip