Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;************************************************
- ;* Beginn der globalen Daten *
- ;************************************************
- AREA MyData, DATA, align = 2
- isPrime FILL 1000,"x",1 ;
- primeField FILL 500,0,2
- ;***********************************************
- ;* Beginn des Programms *
- ;************************************************
- AREA |.text|, CODE, READONLY, ALIGN = 3
- ; ----- S t a r t des Hauptprogramms -----
- EXPORT main
- EXTERN Init_TI_Board
- main PROC
- bl Init_TI_Board ;HW Initialisieren
- ;Laden von Konstanten in Register
- ldr r0,=isPrime ;Primzahlenfeld füllen
- ;Zur Übersicht laden der Konstanten
- mov r1,#2 ;r1= thisPrime
- mov r3,#32 ;r3= maxValue(Wurzel 1000)
- add r3,r3,r0; ;Startpunkt+MaxValue
- mov r4,#1 ;r4= counterFindNext
- mov r10,#"." ;Keine Primzahl
- mov r11,#1000 ;höchste Zahl
- ;erste while schleife
- cmp r1,r3 ;ob thisPrime>maxValue(Wurzel 1000)
- ble starthochrechn ;gehe zu starthochrechn
- b forever ;beende Programm
- starthochrechn mov r5,r1 ;bereite Sieb vor
- mul r5,r1
- sub r5,r1
- ;zweite Schleife
- hochrechnen add r5,r1 ;rechne um Primzahl hoch
- mov r12,r0 ;Primzahlenfeld fuellen
- add r12,r12,r5 ;Bestimmung Vielfaches
- strb r10,[r12] ;Vielfaches speichern
- cmp r5,r11 ;Pruefen ob Feldende
- bmi hochrechnen ;gehe zu hochrechnen
- ;dritte schleife
- findeprim add r1,r1,#1 ;Erhoehe die letzte Primzahl um 1
- add r4,r1,r0 ;Primzahl+Offset
- ldrb r2,[r4] ;Lade Wert in r2
- cmp r4,r3 ;Pruefung ob thisPrime<=maxValue
- bhs speichereum ;gehe zu speichereum
- cmp r2,#"x" ;Markieren von Primzahlen mit "x"
- beq starthochrechn ;gehe zu starthochrechn
- b findeprim ;gehe zu Schleifenanfang
- ;Umspeichern der Primzahlen
- speichereum add r0,#2 ;Speichere:Start bei 2
- primzahlenspeichern
- mov r9,#0 ;j
- mov r0,#0 ;Offset
- for
- if cmp r0,#0 ;
- beq end_if ;
- cmp r0,#1 ;
- beq end_if ;
- ldr r1,=isPrime ;
- ldrb r1,[r1,r0] ;Offset in R1 Laden
- cmp r1,#"x" ;Vergleich mit "x"
- bne end_if ;
- then ldr r7,=primeField ;Primzahlenfeld in r7 Ladne
- strh r0,[r7,r9] ;
- add r9,#2 ;
- end_if add r0,#1 ;
- cmp r0,#1000 ;
- bhs forever ;
- b for ;
- end_for
- forever ldr r0,=primeField
- b forever ;
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement