; MULDIV.ASM SZORZAS, OSZTAS (INT.MOD) (c) 1991 HSOFT. MULBCDE: LD HL,0 ;HL'HL=BC*DE MOLBCDE1: EXX LD HL,0 MULBCDE2: LD DE,0 LD B,16 ;ciklusszamlalo MULBCDE10: EXX SRL B ;BC=BC/2 RR C ;CY=kicsordulo bit JR NC,MULBCDE20 ADD HL,DE EXX ADC HL,DE EXX MULBCDE20: SLA E ;DE'DE=DE'DE*2 RL D EXX RL E RL D DJNZ MULBCDE10 EXX RET ; -------------------------------------------- MULAE: LD D,0 ;HL=A*E MULADE: LD HL,0 ;HL=A*DE MULADE1: LD B,8 ;HL=A*DE+HL MULADE10 RRCA JR NC,MULADE20 ADD HL,DE MULADE20: SLA E RL D DJNZ MULADE10 RET ; -------------------------------------------- DIVHLDE: EXX ;BC=INT(HLHL'/DE) ;HLHL'=MOD(HLHL'/DE) LD B,17 XOR A LD D,A LD E,A DIVHLDE10: SBC HL,DE ;HLHL'DEDE'? EXX SBC HL,DE JR NC,DIVHLDE20 ;Ugras ha kivonhato EXX ;HLHL' ertek visszaallitas ADD HL,DE EXX ADC HL,DE DIVHLDE20: RL C ;CY begorgetese AC-be RLA SRL D ;DEDE'=DEDE'/2 RR E EXX RR D RR E DJNZ DIVHLDE10 EXX CPL ;BC=FFFH-AC LD B,A ;(AC BITEK komplementalasa) LD A,C CPL LD C,A RET ; -------------------------------------------- DIVHLA: LD E,L ;DE=INT(HL/A) HL=MOD(HL,A) LD L,H LD B,A CALL DIVLB LD D,A LD H,L LD L,E LD B,C CALL DIVLB1 LD E,A RET ; -------------------------------------------- DIVLB: LD H,0 DIVLB1: LD C,0 ;A=INT(L/B) L=MOD(L,B) LD A,1 DIVLB10: SRL B RR C SBC HL,BC JR NC,DIVLB20 ADD HL,BC DIVLB20: RLA JR NC,DIVLB10 CPL RET