Multiply 8 bits by 8 bits in software based on code from http://elm-chan.org/
;-----------------------------------------------------------------------------: ; 8bit x 8bit signed multiply ; ; Register variables: ; Call: var10 = 8bit multiplicand ; var11 = <don't care> ; var20 = 8bit multiplier ; lc = <don't care> (high register must be allocated) ; ; Result:var1[1:0] = 16bit result of var10 * var20 ; var20 = <not changed> ; lc = 0 ; ; Size = 24 words ; Clock = 80 cycles (+ret) ; Stack = 0 byte mul08s: clr lc tst var10 brpl PC+3 inc lc neg var10 tst var20 brpl PC+3 inc lc neg var20 bst lc,0 sub var11,var11 ;initialize variables ldi lc,9 ; lc = 9; brcc PC+2 ;---- calcurating loop add var11,var20 ; ror var11 ; ror var10 ; dec lc ;if (--lc > 0) brne PC-5 ; continue loop; brtc PC+5 com var10 com var11 adc var10,lc adc var11,lc ret
file: /Techref/atmel/avr/mul8x8sws-ec.htm, 1KB, , updated: 2007/9/14 15:52, local time: 2024/11/22 10:00,
18.117.166.52: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://massmind.org/Techref/atmel/avr/mul8x8sws-ec.htm"> Atmel AVR, atmega, Microcontroller, embedded controller, math 8x8 signed</A> |
Did you find what you needed? |
Welcome to massmind.org! |
Welcome to massmind.org! |
.