; ; Programmodul 'MULTI' zur Multiplikation ; von zwei 16 Bit Zahlen ; ; IN reg bc : Multiplikator ; reg de : Multiplikand ; ; OUT reg bc : Multiplikator (bleibt erhalten) ; reg de : hoeherwertige 16 Bit des Produkts ; reg hl : niederwertige ; ; REG a,f,d,e,h,l ; multi: ld a,16 ; Zaehler vorbelegen ld hl,0 mloop: add hl,hl ; links schieben rl e ; hochwertiges Bit rl d ; ueberpruefen jr nc,nosum add hl,bc ; aufaddieren jr nc,nosum inc de ; Uebertrag in hochwertiges ; Wort eintragen nosum: dec a jr nz,mloop ; fuer jedes Bit in de ; wiederholen ; Produkt in dehl ret ; ; Programmodul 'DIVI' zur Division von ; zwei 16 Bit Zahlen ; ; IN reg bc : Divisor ; reg de : Dividend ; ; OUT reg bc : Divisor (bleibt erhalten) ; reg de : Rest der Division ; reg hl : Quotient ; ; REG a,f,d,e,h,l ; divi: xor a ; Zaehler vorbelegen ld h,a ld l,a ld a,16 dloop: rl e ; links schieben rl d adc hl,hl ; links schieben sbc hl,bc ; Subtraktion jr nc,diffok add hl,bc ; Sub. revidieren diffok: ccf dec a jr nz,dloop ; fuer jedes Bit in de ; wiederholen ; Quotient in hl, Rest in de ret end