Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编语言乘法溢出_Assembly_Pic_Multiplication_Pic18 - Fatal编程技术网

Assembly 汇编语言乘法溢出

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

这是我的第一篇帖子,所以请温柔一点。我正试图得到这个问题的最终答案 0hD16BC7A,甚至无法在第一步中验证地址0x10中是否包含内容0h2A。我想知道这是否与下面评论的溢出有关。任何帮助都会很棒,我是新手。谢谢大家!

   #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