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