![]() ![]() |
![]() ![]() |
;*********** 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 |
![]() ![]() |
![]() ![]() |