head	1.1;
access;
symbols;
locks; strict;
comment	@# @;


1.1
date	2008.06.29.23.38.48;	author dimo;	state Exp;
branches;
next	;
commitid	4a2e48681cf04567;


desc
@@


1.1
log
@multiplication program source added
@
text
@; Multiplikationsroutine

	nop
	lda	#8	; Initialisierung des Bitzaehlers
	sta	count
	lda	#0	; Loeschen des Akkumulators
	sta	low
	sta	high
	lda	#197	;Testzahlen: 197 * 77 = 15169
	sta     op1
	lda     #77
	sta     op2

; Hauptschleife (gewichtetes und bedingtes Addieren )

loop	lda	op2	; Hole 1. Multiplikand und
	sra		; teste naechstes Bit
	sta	op2
	jmpc	ADD	; falls gesetzt: Addiere
	lda	low	; 2. Multiplikand zum Ergebnis
	jmp 	noadd	; sonst lass es bleiben
ADD	lda 	low	;
	ldb	op1	; evtl. den Uebertrag
	add
	sta	low	; beruecksichtigen
	jmpc	carry
noadd	lda	count
	ldb	#255
	add
	sta	count
	jmpz	ende
	lda	low
	sra		; Das ganze Ergebnis wird nach
	sta	low	; rechts verschoben
	lda	high
	ror
	sta 	high
	jmp 	loop
carry	lda	high
	ldb 	#1
	add
	sta	high
	jmp 	noadd

ende	ldb     low	; Anzeige des Ergebnisses
        lda     high	; auf den HEX-Display
        jmp 	ende

 	; Definition der Variablennamen (Harvard-Architektur !!)

low	db	0	; niederwertiger Ergebnisteil
high	db	0	; hoeherwertiger Ergebnisteil
count	db	0	; Bitzaehler fuer Schleife
op1	db	0 
op2	db	0

.end
@
