mikrocontroller.net

Forum: Compiler & IDEs C: Assembler Aufruf mit Parametern


Autor: Wolfram Hildebrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte dieses Assembler Programm aus dem C Programm aufrufen. Dabei 
soll ein Wert (im Bsp. 0x23) an das Assembler Programm übergeben werden.
Wie funktioniert das? Wo finde ich die 0x23?

Assembler Datei:

#define _ASSEMBLER_ 1
#define __SFR_OFFSET 0
#include <avr/io.h>
#include <ports.h>

    .global display_command
display_command:
        cbi    LCD_PORT, LCD_CLK
  cbi    LCD_PORT, LCD_DATA
  sbi    LCD_PORT, LCD_CLK

  ldi    r19, 8
dis_cmd1:
  cbi    LCD_PORT, LCD_CLK
  mov    r16, r24
  rol    r16

C:
extern void display_command(char data);

display_command(0x23);

Autor: Joe Die (kosmonaut_pirx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

selber nicht ausprobiert, aber schau mal hier:

http://www.nongnu.org/avr-libc/user-manual/FAQ.htm...

bei "Function call conventions"

lässt mich vermuten, dass R24 verwendet wird.

bye kosmo

Autor: Wolfram Hildebrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das habe ich gerade auch im Dissassembler gesehen, dass es R24 ist.
Die verwenden wohl einfach bestimmte Register je nach Anzhal der 
Parameter.

Ich vermisse im Dissassembler Fenster jedoch den Code für den Assembler 
File.
Schreibt AVR Studio den nicht mit rein?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum machst du's nicht in inline-Assembler? Dann wird die 
Parameterübergabe von der C-Seite erledigt.

Autor: Wolfram Hildebrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ging um eine Grafikroutine, die ich in Assembler schreiben wollte, 
damit das Display schneller ist.
Das wäre in Inline Assembler zu aufwendig.
Mittlerweile läuft der Code und wird als externe Assembler Funktion 
eingebunden. Damit ist das Display 3,5-4 mal schneller.

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.