mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keil & inline-Assembler


Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?!

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.