This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Declaring Variables in cortex m3 Assembly Language

I declare 32 bit variables in the MyAsmVar section.

I know the base address of MyAsmVar. Also I know the address of var1 and var2.

AREA MyAsmVar, DATA,NOINIT, READWRITE, ALIGN=3

var1 DCD 0x00
var2 DCD 0x00

LDR R0,=0x20000000 ; base address of MyAsmVar
LDR R1,[R0,#0] ; read var1 in to R1 (var1 address is 0)
LDR R2,[R0,#4] ; read var2 in to R2 (var2 address is 4)

We must know the numeric value of variable address and this is not good.

How can I use the variables names instead of address?

I want the following lines but compiler give error messages;

LDR R0,=0x20000000
LDR R1,[R0,#var1] ; read var1 in to R1
LDR R2,[R0,#var2] ; read var1 in to R2

Also i try following lines but compiler dont compile.

LDR R1,[R0,#&var1] ; read var1 in to R1
LDR R2,[R0,#&var2] ; read var1 in to R2

if I use

var1 equ 0
var2 equ 4

problem solving, but i dont want to count address of variables.

Parents
  • I wrote the simple precompiler.

    Download address: www.cncdesigner.com/.../Precompile.rar

    
    ; Sample assembly program caluclates Var3 = Var1 + Var2
    
     AREA  MyVar, READWRITE, ALIGN=2
    
     Var0   DCD 0
     Var1   DCD 0
     Var2   DCD 0
     Var3   DCD 0
    
     INCLUDE Variables.s
    
     AREA    MyProg, CODE, READONLY
     THUMB
    
     LDR    R0,=Var0
     LDRD   R1,R2,[R0,#Var1_]
     ADD    R1,R2
     STR    R1,[R0,#Var3_]
    

    Precompile.exe calculates the offset values of variables and writes EQU directives in to file.
    Asm program should include the file name variables.s with the INCLUDE directive command.

    Step1: Write your asm program (your all variables definition here)
    Step2: Compile with precompile.exe (ofset calculation of variables)
    Step3: Compile all project files with the Keil.

    Thats all.

Reply
  • I wrote the simple precompiler.

    Download address: www.cncdesigner.com/.../Precompile.rar

    
    ; Sample assembly program caluclates Var3 = Var1 + Var2
    
     AREA  MyVar, READWRITE, ALIGN=2
    
     Var0   DCD 0
     Var1   DCD 0
     Var2   DCD 0
     Var3   DCD 0
    
     INCLUDE Variables.s
    
     AREA    MyProg, CODE, READONLY
     THUMB
    
     LDR    R0,=Var0
     LDRD   R1,R2,[R0,#Var1_]
     ADD    R1,R2
     STR    R1,[R0,#Var3_]
    

    Precompile.exe calculates the offset values of variables and writes EQU directives in to file.
    Asm program should include the file name variables.s with the INCLUDE directive command.

    Step1: Write your asm program (your all variables definition here)
    Step2: Compile with precompile.exe (ofset calculation of variables)
    Step3: Compile all project files with the Keil.

    Thats all.

Children