Forum: Mikrocontroller und Digitale Elektronik Keil & inline-Assembler


von Khani (Gast)


Lesenswert?

Hallo Leute,

folgende Funktion lässt sich nicht kompilieren :

int AddUp (
  int n,
  int near *pTab)
{
  __asm  {            ; open inline-assembly block
    mov   r2,pTab     ; R2:=start of table
    mov   r3,n
    cmp   r3,#0
    jmp   cc_sle,stop ;
    shl   r3,#1       ; n * 2
    add   r3,r2       ; R3 := (n*2)+pTab, end of table + 2
    mov   r4,#0x00    ; clear result

lM: add   r4,[r2+]    ; add up next value
    cmp   r2,r3       ; end of table ?
    jmp   cc_nz,lM    ; loop if not eot
    ret               ; need result in R4


stop:
   nop    ; single line assembly
   nop    ; another nop          }
  return (0);
}

Der Fehler scheint zu sein, dass die Variablen "pTab" und "n" im
Assembler-Code nicht als Variablen erkannt werden und dann beim
Ausführen des Assmeblers als "undefined symbols" eingehen. (Übrigens
das ist ein Beispiel-Code von www.Keil.com (dieser Minuten leider
server down)).

Ist es vielleicht eine Compiler-Option, die ich übersehen habe ?!

Danke für Eure Hilfe !
MfG, Khani

von Peter D. (peda)


Lesenswert?

Ja ja, schmeiß die Brocken nur so hin.

Würde Dir denn sowas Spaß machen ?


Ich vermute mal, es geht NICHT um den AT89C4051 und NICHT um den Keil
Compiler UVW Version XYZ.

Zu weiterem Rätselraten habe ich keine Lust mehr.


Peter


P.S.:
Ist Dir schon mal aufgefallen, daß Fehlermeldungen einen Text haben und
auch eine Zeilennnummer ?

von Khani (Gast)


Lesenswert?

Danke Peter,

mit genau dem Text des obigen wurde mir schon wo anders geholfen.

MfG, Khani.

P.S.: Warum antwortest Du, wenn Du nicht willst ?!

von Tobi (Gast)


Lesenswert?

weil sein kommentar richtig ist, nur der ton könnte was freundlicher
sein :) ein paar mehr details könnten nicht schaden, vor allem die
genaue fehlermeldung

von Peter D. (peda)


Lesenswert?

"P.S.: Warum antwortest Du, wenn Du nicht willst ?!"


Ich wollte Dir ja nur helfen, Deine Fragen so zu stellen, daß sie ein
anderer auch verstehen kann ohne ein Hellseher sein zu müssen.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.