Primzahlentabelle

Help Contents DLX-Beispielprogramme Primzahlentabelle
Faktoriellenberechnung INPUT-Beispiel

Primzahlentabelle

Das Listing der Primzahlentabellengenerierung (PRIM.S)

;*********** WINDLX Bsp. 3: Primzahlentabelle erzeugen *************
;*********** (c) 1991 Günther Raidl *************

;-------------------------------------------------------------------
; Programmanfang bei Symbol main
; Erzeugt eine Tabelle der ersten 'Count' Primzahlen ab 'Table'
;-------------------------------------------------------------------

	.data

	;*** Grösse der zu erzeugenden Primzahlentabelle
	.global	Count
Count:	.word	10
	.global	Table
Table:	.space	Count*4


	.text
	.global	main
main:
	;*** Initialisierungen
	addi	r1,r0,0	;Index in Table
	addi	r2,r0,2	;Aktueller, betrachteter Wert

	;*** Feststellen, ob R2 durch einen Wert in der Tabelle teilbar
NextValue:	addi	r3,r0,0	;Hilfeindex in Table
Loop:	seq	r4,r1,r3	;Tabellenende erreicht?
	bnez	r4,IsPrim	;Wert in R2 ist eine Primzahl
	lw	r5,Table(R3)	;Tabellenwert holen
	divu	r6,r2,r5	;Modulo-Wert berechnen

multu	r7,r6,r5
	subu	r8,r2,r7
	beqz	r8,IsNoPrim	;Ganzzahlig teilbar
	addi	r3,r3,4	;Zum nächsten Tab.-Eintr.
	j	Loop

IsPrim:	;*** Wert in Table eintragen und Index erhöhen
	sw	Table(r1),r2
	addi	r1,r1,4

	;*** Notwendige Anzahl erreicht?
	lw	r9,Count	;Gewünschte Anzahl
	srli	r10,r1,2	;Aktuelle Anzahl ber. (/4)
	sge	r11,r10,r9
	bnez	r11,Finish

IsNoPrim:	;*** Nächsten Wert überprüfen
	addi	r2,r2,1	;R2 um eins erhöhen
	j	NextValue

Finish:	;*** Programmende
	trap	0

Faktoriellenberechnung INPUT-Beispiel