Advertisement
exnon

ARMSIEB_Sami

Apr 24th, 2019
3,407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.94 KB | None | 0 0
  1. ;******************** (C) COPYRIGHT HAW-Hamburg ********************************
  2. ;* File Name          : main.s
  3. ;* Author             : Alfred Lohmann
  4. ;* Author             : Tobias Jaehnichen  
  5. ;* Version            : V2.0
  6. ;* Date               : 23.04.2017
  7. ;* Description        : This is a simple main.
  8. ;                     : The output is send to UART 1. Open Serial Window when
  9. ;                     : when debugging. Select UART #1 in Serial Window selection.
  10. ;                     :
  11. ;                     : Replace this main with yours.
  12. ;
  13. ;*******************************************************************************
  14.  
  15.     EXTERN Init_TI_Board        ; Initialize the serial line
  16.     EXTERN ADC3_CH7_DMA_Config  ; Initialize the ADC
  17.     ;EXTERN initHW              ; Init Timer
  18.     EXTERN  puts                ; C output function
  19.     EXTERN  TFT_puts            ; TFT output function
  20.     EXTERN  TFT_cls             ; TFT clear function
  21.     EXTERN  TFT_gotoxy          ; TFT goto x y function  
  22.     EXTERN  Delay               ; Delay (ms) function
  23.     EXTERN GPIO_G_SET           ; Set output-LEDs
  24.     EXTERN GPIO_G_CLR           ; Clear output-LEDs
  25.     EXTERN GPIO_G_PIN           ; Output-LEDs status
  26.     EXTERN GPIO_E_PIN           ; Button status
  27.     EXTERN ADC3_DR              ; ADC Value (ADC3_CH7_DMA_Config has to be called before)
  28.  
  29. ;********************************************
  30. ; Data section, aligned on 4-byte boundery
  31. ;********************************************
  32.    
  33.     AREA MyData, DATA, align = 2
  34.    
  35.     GLOBAL text
  36.     GLOBAL max
  37. text    DCB "Hallo TI-Labor!\n\r",0
  38. max     DCD 1001
  39.     AREA SamiData, DATA, align = 0
  40.    
  41. primfeld    FILL 1000*1,1 ;1000x1Byte werden mit 1 initialisiert
  42. ;********************************************
  43. ; Code section, aligned on 8-byte boundery
  44. ;********************************************
  45.  
  46.     AREA |.text|, CODE, READONLY, ALIGN = 3
  47.  
  48. ;--------------------------------------------
  49. ; main subroutine
  50. ;--------------------------------------------
  51.     EXPORT main [CODE]
  52.    
  53. main    PROC
  54.  
  55.         BL  Init_TI_Board   ; Initialize the serial line to TTY
  56.                             ; for compatability to out TI-C-Board
  57.         ;BL initHW          ; Timer init
  58.        
  59.         LDR r0,=primfeld    ;r0 = address von feld
  60.         ;ADD r0,r0,#1
  61.         LDRB r5,[r0]            ;in r5 wird der aktuelle Wert von der Adresse
  62.         MOV r1,#1           ;i=1   
  63.         ;MOV r2,#1          ;r2 =1  ueberfluessig?
  64.         LDR r3,=max         ;laedt adresse von max in r3
  65.         LDR r3,[r3]         ;r3=max
  66.         MOV r6,#0           ;unser NICHTPRIMZAHL wert, meckert wenn STRB #0, daher STRBr6
  67. for01   ADD r1,r1,#1        ;i++
  68.         MUL r4,r1,r1        ;i*i       
  69.         CMP r4,r3           ;i*i<=max
  70.         BGE end01           ;Wenn i*i>=1000
  71. if01    LDRB r5,[r0,r1]     ;Laedt wert von primfeld[i]
  72.         CMP r5,#1           ;Kuckt ob primfeld[i] = true ist
  73.         BNE for01           ;wenn nicht true auf for01 springen
  74.         MOV r7,r4           ;initialisiert p(r7) mit i*i
  75. for02   CMP r7,r3           ;p >= max
  76.         BGE for01
  77.         ADD r8,r0,r7        ;primfeld[p] Adresse+p wird in r8 gespeichert
  78.         STRB r6,[r8]        ;Setzt den Boolean bei unserer aktuellen Adresse auf 0/falsch
  79.         ADD r7,r7,r1        ;p+=i springt auf nächste multiple vom Index unseres Arrays
  80.         BAL for02
  81. end01
  82. if02   
  83. forever b   forever     ; nowhere to retun if main ends    
  84.         ENDP
  85.    
  86.         ALIGN
  87.        
  88.         END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement