mulw、prodl 和 prodh 在汇编程序中如何协同工作?
How does mulw, prodl and prodh work together in assembler programming?
我不明白指令MULLW 和寄存器PRODL 和PRODH 是如何工作的。我有这段代码:
MOVLW 0x0D
MULLW 0x09
MOVF PRODL,W
实际发生了什么?我一直在尝试对值进行 AND,这在乘法方面似乎是合乎逻辑的:
0000 1101
0000 1001
但这会给出错误的 0x09。移至 PRODL 的答案是 0x75。我不知道它是如何变成 0x75 的,我已经尝试了所有关于值的门,但没有任何意义。在 Internet 上,我找到的关于 mullw、PRODL 和 PRODH 的所有信息都是汇编程序的手册,它没有显示解释为什么答案变成现在的样子的每一步。
我只知道有一些16位的初始操作,结果的低值和高值(不知道过程)分别放在PRODL和PRODH中。
了解 PRODL、PRODH 和 MULLW 的人可以举例并详细解释一下吗?
谢谢。
MOVLW 0x0D
MULLW 0x09
0x0D x 0x09 = 0x0075
这条指令之后是PRODH = 0x00 and PRODL = 0x75
PRODL
和 PRODH
都是 8 位寄存器,它们一起保存 16 位结果。只有 LSB 和 MSB。
我不明白指令MULLW 和寄存器PRODL 和PRODH 是如何工作的。我有这段代码:
MOVLW 0x0D
MULLW 0x09
MOVF PRODL,W
实际发生了什么?我一直在尝试对值进行 AND,这在乘法方面似乎是合乎逻辑的:
0000 1101
0000 1001
但这会给出错误的 0x09。移至 PRODL 的答案是 0x75。我不知道它是如何变成 0x75 的,我已经尝试了所有关于值的门,但没有任何意义。在 Internet 上,我找到的关于 mullw、PRODL 和 PRODH 的所有信息都是汇编程序的手册,它没有显示解释为什么答案变成现在的样子的每一步。
我只知道有一些16位的初始操作,结果的低值和高值(不知道过程)分别放在PRODL和PRODH中。
了解 PRODL、PRODH 和 MULLW 的人可以举例并详细解释一下吗?
谢谢。
MOVLW 0x0D
MULLW 0x09
0x0D x 0x09 = 0x0075
这条指令之后是PRODH = 0x00 and PRODL = 0x75
PRODL
和 PRODH
都是 8 位寄存器,它们一起保存 16 位结果。只有 LSB 和 MSB。