00001 #include "p18cxxx.inc"
00002 udata_acs
00003 a res 1 ; ez a szorzandó
00004 b res 1 ; ez a szorzó
00005 RST CODE
00006 goto start
00007 ;--- a * b kiszámítása
00008 ;--- a végeredmény a:b-ben lesz
00009 PGM CODE
00010 start: movlw 0x3a
00011 movwf a ; a=58
00012 movlw 0xa8
00013 movwf b ; b=-88
00014 call mult8s
00015 nop
00016 goto $-2
00017
00018 ;--- Eljárás 8x8 előjeles szorzás elvégzésére ----------
00019 ; belépéskor a = szorzandó, b = szorzó
00020 ; kilépéskor a:b-ben lesz a szorzat
00021 mult8s: movf a,w
00022 mulwf b
00023 btfsc b,7 ; b előjelének vizsgálata
00024 subwf PRODH,f ; b negatív, levonjuk a << 8-at
00025 movf b,w
00026 btfsc a,7 ; a előjelének vizsgálata
00027 subwf PRODH,f ; a negatív, levonjuk b << 8-at
00028 movff PRODL,b
00029 movff PRODH,a
00030 return
00031 END