Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;************************************************
  2. ;* Beginn der globalen Daten *
  3. ;************************************************
  4.                    AREA MyData, DATA, align = 2
  5.  
  6. isPrime FILL    1000,"x",1                          ;
  7. primeField FILL 500,0,2
  8.  
  9. ;***********************************************
  10. ;* Beginn des Programms *
  11. ;************************************************
  12.     AREA |.text|, CODE, READONLY, ALIGN = 3
  13. ; ----- S t a r t des Hauptprogramms -----
  14.                 EXPORT main
  15.                 EXTERN Init_TI_Board
  16. main            PROC
  17.                 bl    Init_TI_Board                 ;HW Initialisieren
  18. ;Laden von Konstanten in Register
  19.                 ldr r0,=isPrime                     ;Primzahlenfeld füllen
  20.                                                
  21. ;Zur Übersicht laden der Konstanten
  22.                 mov r1,#2                           ;r1= thisPrime
  23.                 mov r3,#32                          ;r3= maxValue(Wurzel 1000)
  24.                 add r3,r3,r0;                       ;Startpunkt+MaxValue
  25.                 mov r4,#1                           ;r4= counterFindNext
  26.                 mov r10,#"."                        ;Keine Primzahl
  27.                 mov r11,#1000                       ;höchste Zahl
  28. ;erste while schleife          
  29.                 cmp r1,r3                           ;ob thisPrime>maxValue(Wurzel 1000)
  30.                 ble starthochrechn                  ;gehe zu starthochrechn
  31.                 b forever                           ;beende Programm
  32.  
  33. starthochrechn  mov r5,r1                           ;bereite Sieb vor
  34.                 mul r5,r1  
  35.                 sub r5,r1
  36. ;zweite Schleife
  37.  
  38. hochrechnen     add r5,r1                           ;rechne um Primzahl hoch
  39.                 mov r12,r0                          ;Primzahlenfeld fuellen
  40.                 add r12,r12,r5                      ;Bestimmung Vielfaches
  41.                 strb r10,[r12]                      ;Vielfaches speichern
  42.                 cmp r5,r11                          ;Pruefen ob Feldende
  43.                 bmi hochrechnen                     ;gehe zu hochrechnen
  44.  
  45. ;dritte schleife
  46. findeprim       add r1,r1,#1                        ;Erhoehe die letzte Primzahl um 1
  47.                 add r4,r1,r0                        ;Primzahl+Offset
  48.                 ldrb r2,[r4]                        ;Lade Wert in r2
  49.                 cmp r4,r3                           ;Pruefung ob thisPrime<=maxValue
  50.                 bhs speichereum                     ;gehe zu speichereum
  51.                 cmp r2,#"x"                         ;Markieren von Primzahlen mit "x"
  52.                 beq starthochrechn                  ;gehe zu starthochrechn
  53.                 b findeprim                         ;gehe zu Schleifenanfang
  54.  
  55. ;Umspeichern der Primzahlen
  56. speichereum     add r0,#2                           ;Speichere:Start bei 2
  57.  
  58. primzahlenspeichern
  59.                 mov r9,#0                           ;j
  60.                 mov r0,#0                           ;Offset
  61. for                        
  62. if              cmp r0,#0                           ;
  63.                 beq end_if                          ;
  64.                 cmp r0,#1                           ;
  65.                 beq end_if                          ;
  66.                 ldr r1,=isPrime                     ;
  67.                 ldrb r1,[r1,r0]                     ;Offset in R1 Laden
  68.                 cmp r1,#"x"                         ;Vergleich mit "x"
  69.                 bne end_if                          ;
  70. then            ldr r7,=primeField                  ;Primzahlenfeld in r7 Ladne
  71.                 strh r0,[r7,r9]                     ;
  72.                 add r9,#2                           ;
  73. end_if          add r0,#1                           ;
  74.                 cmp r0,#1000                        ;
  75.                 bhs forever                         ;
  76.                 b for                               ;
  77.                
  78. end_for        
  79.  
  80.  
  81.                
  82. forever         ldr r0,=primeField       
  83.  
  84.                 b   forever                     ;
  85.                 ENDP
  86.                 END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement