Assembly 汇编语言乘法溢出
这是我的第一篇帖子,所以请温柔一点。我正试图得到这个问题的最终答案 0hD16BC7A,甚至无法在第一步中验证地址0x10中是否包含内容0h2A。我想知道这是否与下面评论的溢出有关。任何帮助都会很棒,我是新手。谢谢大家!Assembly 汇编语言乘法溢出,assembly,pic,multiplication,pic18,Assembly,Pic,Multiplication,Pic18,这是我的第一篇帖子,所以请温柔一点。我正试图得到这个问题的最终答案 0hD16BC7A,甚至无法在第一步中验证地址0x10中是否包含内容0h2A。我想知道这是否与下面评论的溢出有关。任何帮助都会很棒,我是新手。谢谢大家! #include <p18f8722.inc> Num1H set 0x11 ;value in 0x11 is 0hB7 Num1L set 0x10 ;value in 0x10 is 0hA1 Num2H set 0x2
#include <p18f8722.inc>
Num1H set 0x11 ;value in 0x11 is 0hB7
Num1L set 0x10 ;value in 0x10 is 0hA1
Num2H set 0x21 ;value in 0x21 is 0h86
Num2L set 0x20 ;value in 0x20 is 0h88
PR set 0x30
org 0
goto start
start:
bcf STATUS,C,0
;Num1L*Num2L
movf Num1L,W,0 ;[WREG] <- [0hA1] right?
mulwf Num2L,0 ;0hA1 right?
;(0hA1)*(0h88) = (oh5588) right?
movff PRODH,PR+1 ;(0h55)->[PR+1]
movff PRODL,PR ;(0h88)->[PR]
;Num1H*Num2L
movf Num1H,W,0
mulwf Num2L,0
movff PRODH,PR+2
movf PRODL,W,0
addwf PR+1,F,A
;Num1L*Num2H
movf Num1L,W,0
mulwf Num2H,0
movf PRODL,W,0
addwfc PR+1,F,A
movf PRODH,W,0
addwfc PR+2,F,A
;Num1H*Num2H
movf Num1L,W,0
mulwf Num2H,0
movf PRODL,w,0
addwfc PR+2,F,A ;Is the problem because I have 0h13D here?
movlw 0 ;How do I handle the overflow?
addwfc PRODH,W,A
movwf PR+3,0
#包括
Num1H集合0x11;0x11中的值为0hB7
Num1L集合0x10;0x10中的值为0hA1
Num2H设置0x21;0x21中的值为0h86
Num2L集合0x20;0x20中的值为0h88
PR集合0x30
组织0
开始
开始:
bcf状态,C,0
;Num1L*Num2L
movf Num1L,W,0;[雷格][PR+1]
莫夫·普罗德尔;(0h88)->[PR]
;Num1H*Num2L
movf Num1H,W,0
mulwf Num2L,0
movff产品,PR+2
movf产品,W,0
addwf PR+1,F,A
;Num1L*Num2H
movf Num1L,W,0
mulwf Num2H,0
movf产品,W,0
addwfc PR+1,F,A
movf PRODH,W,0
addwfc PR+2,F,A
;Num1H*Num2H
movf Num1L,W,0
mulwf Num2H,0
movf产品,w,0
addwfc PR+2,F,A;问题是因为我这里有0h13D吗?
movlw0;如何处理溢出?
addwfc PRODH,W,A
movwf PR+3,0
<>代码>我不熟悉任何处理器,但是IMO你可以考虑在代码文件中使用“<代码> 0x<代码>”在你的源文件(代码和评论)中,只是为了清晰。这并不令人困惑,但在同一个文件中混合0x
和0h
前缀会让你的大脑在每次从一个前缀切换到另一个前缀时都不得不切换。如果你的汇编程序的约定是0x
,我会同意。不管好坏欢迎来到Stack Overflow。看起来像是pic微控制器。好的。非常感谢。我关心的是将地址和地址中的内容分开。这是。这是一张图18。0h
通常是一个后缀。我从未见过有人在数字开头使用0h
。所以它应该是0Ah
或0x0A