;malin@onspec.co.uk ;signed multiply of a2:a1 with b2:b1 leaving result in res4:res3:res2:res1 ; These 8 variables need to be defined, as does neg_flag ; ; Program length 64 lines ; time 134 to 248 cycles ; This program looks at the lsb of a1 to decide whether to add b1 to res2 ; ; and b2 to res3, with appropriate carrys ; It then looks at the lsb of a2 to decide whether to add b1 to res3 and ; b2 to res4, again with appropriate carrys. ; The rotates then only have to be done 8 times ; ; This is uses slightly more program but takes a little less time than ; a routine that performs one 16 bit addition per rotate and 16 rotates ; ; Multiple byte addition routine from Microchip AN617 ; Result registers used as loop counter from Bob Fehrenbach & Scott Dattalo ; clrf res4 clrf res3 clrf res2 movlw 0x80 movwf res1 clrf neg_flag btfss a2,7 goto a_pos comf a2,f comf a1,f incf a1,f btfsc status, zero incf a2,f incf neg_flag, f a_pos btfss b2,7 goto nextbit comf b2,f comf b1,f incf b1,f btfsc status, zero incf b2,f incf neg_flag, f nextbit rrf a2,f rrf a1,f btfss status, carry goto nobit_l movf b1,w addwf res2,f movf b2, w btfsc status, carry incfsz b2, w addwf res3, f btfsc status, carry incf res4, f bcf status, carry nobit_l btfss a1, 7 goto nobit_h movf b1,w addwf res3,f btfsc status, carry incf res4,f movf b2,w addwf res4,f nobit_h rrf res4,f rrf res3,f rrf res2,f rrf res1,f btfss status, carry goto nextbit btfss neg_flag, 0 goto no_invert comf res4,f comf res3,f comf res2,f comf res1,f incf res1,f btfsc status,zero incf res2,f btfsc status,zero incf res3,f btfsc status,zero incf res4,f no_invert
file: /Techref/microchip/math/mul/16x16malin.htm, 2KB, , updated: 2002/10/28 10:08, local time: 2024/11/19 23:54,
3.144.4.4:LOG IN
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/techref/microchip/math/mul/16x16malin.htm"> PIC Microcontoller Math Method Multiply 16x16 bit Signed from malin</A> |
Did you find what you needed? |