Advertisement
exnon

Untitled

Apr 24th, 2019
3,291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.92 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 primfeld
  37.     GLOBAL max
  38. text    DCB "Hallo TI-Labor!\n\r",0
  39. primfeld    FILL 1000*1,1 ;1000x1Byte werden mit 1 initialisiert
  40. max     DCD 1001
  41. ;********************************************
  42. ; Code section, aligned on 8-byte boundery
  43. ;********************************************
  44.  
  45.     AREA |.text|, CODE, READONLY, ALIGN = 3
  46.  
  47. ;--------------------------------------------
  48. ; main subroutine
  49. ;--------------------------------------------
  50.     EXPORT main [CODE]
  51.    
  52. main    PROC
  53.  
  54.         BL  Init_TI_Board   ; Initialize the serial line to TTY
  55.                             ; for compatability to out TI-C-Board
  56.         ;BL initHW          ; Timer init
  57.        
  58.         LDR r0,=primfeld    ;r0 = address von feld
  59.         ADD r0,r0,#1
  60.         LDRB r5,[r0]            ;in r5 wird der aktuelle Wert von der Adresse
  61.         MOV r1,#1           ;i=1   
  62.         ;MOV r2,#1          ;r2 =1  ueberfluessig?
  63.         LDR r3,=max         ;laedt adresse von max in r3
  64.         LDR r3,[r3]         ;r3=max
  65.         MOV r6,#0           ;unser NICHTPRIMZAHL wert, meckert wenn STRB #0, daher STRBr6
  66. for01   ADD r1,r1,#1        ;i++
  67.         MUL r4,r1,r1        ;i*i       
  68.         CMP r4,r3           ;i*i<=max
  69.         BGE end01           ;Wenn i*i>=1000
  70. if01    LDRB r5,[r0,r1]     ;Laedt wert von primfeld[i]
  71.         CMP r5,#1           ;Kuckt ob primfeld[i] = true ist
  72.         BNE for01           ;wenn nicht true auf for01 springen
  73.         MOV r7,r4           ;initialisiert p(r7) mit i*i
  74. for02   CMP r7,r3           ;p >= max
  75.         BGE for01
  76.         ADD r8,r0,r7        ;primfeld[p] Adresse+p wird in r8 gespeichert
  77.         STRB r6,[r8]        ;Setzt den Boolean bei unserer aktuellen Adresse auf 0/falsch
  78.         ADD r7,r7,r1        ;p+=i springt auf nächste multiple vom Index unseres Arrays
  79.         BAL for02
  80. end01
  81. if02   
  82. forever b   forever     ; nowhere to retun if main ends    
  83.         ENDP
  84.    
  85.         ALIGN
  86.        
  87.         END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement