AVR ASM Argument till macro, går det?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

AVR ASM Argument till macro, går det?

Inlägg av Greensilver »

Finns det något sätt att skicka ett argument till ett macro?
Eller är jag för bortskämd med åratal av basic programmering? :lol:

Typ så här:

Kod: Markera allt

.MACRO MyMacro [color=red](#ARGUMENT#[/color])

ldi r16[color=red],#ARGUMENT#[/color]

.ENDMACRO
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Är det så här du menar, från avrbeginners.net

.macro ldi16 ; lets make a macro for loading two registers
; with a 16-bit immediate
ldi @0, low(@2) ; load the first argument (@0) with the low byte of @2
ldi @1, high(@2) ; same with second arg (@1) and high byte of @2
.endmacro ; end the macro definition

ldi16 r16,r17,3226 ; r16 = 0x9A r17 = 0x0C
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

Inlägg av Greensilver »

Ja, just precis. Vore tacksam om någon ville förklara vad @ tecknen gör eller tipsa om en länk. Skall kika på avrbeginners.net också. Tack! :)

EDIT: Hittade det nu! Det var ju en mycket bra sida det där. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vore tacksam o mnågon ville förklara vad @ tecknen gör eller tipsa om en länk.

AVR Assembler User Guide
http://www.atmel.com/dyn/resources/prod ... OC1022.PDF

Section 4.5.15, sidan 4-15 :
4.5.15 MACRO - Begin macro

The MACRO directive tells the Assembler that this is the start of a Macro.
...
A Macro can take up to 10 parameters. These parameters are referred to
as @0-@9 within the Macro definition. When issuing a Macro call, the
parameters are given as a comma separated list.
...

Syntax:
.MACRO macroname

Example:

Kod: Markera allt

.MACRO    SUBI16                   ; Start macro definition
          subi @1,low(@0)          ; Subtract low byte
          sbci @2,high(@0)         ; Subtract high byte
.ENDMACRO                          ; End macro definition

.CSEG                              ; Start code segment
          SUBI16 0x1234,r16,r17    ; Sub.0x1234 from r17:r16
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

haha, nu går skam på torra land (eller vad det heter) SODJAN ger AVR källhänvisningar :D Kom igen nu sodjan och ge dig in i den underbra AVR världen (eller det är kanske det du gjort?). :) :) :evil:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

He he, jag var bara nyfiken på hur snabbt det skulle gå att först
hitta dokumentet på www.atmel.com, sedan ladda ner det och slutligen
hitta svaret. Ca 5 minuter (varav nerladdning över modemet var 3.5 min...)

Sen tog det ytterligare 10 minuter att få till quoten snyggt... :-)

Och, nej, jag har aldrig sett en AVR i verkligehen, inte sett
dokumentet innan eller någonsin skrivit en enda rad AVR assembler
och jag tror att det är flera år sedan jag var inne på Atmels site...

Det finns en 4-bokstavsförkortning för frågor av den typen... :-)

Men allvarligt talat, dokumentet jag länkade till är väl det *FÖRSTA*
stället man borde leta efter svaret, är det inte ???
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

Inlägg av Greensilver »

Jodå, jag har allt läst både datablad och hjälpfiler men fördelen med att kasta ut en fråga så här är ju att någon troligtvis kan detta "from the top of their head" och kan ge ett svar på två rader som löser problemet. Typ som om din bil skulle stanna för dig och du ville ha tips om var du skulle börja titta. Jag skulle kunna ge dig ett par tre punkter att kolla för att du sedan skulle kunna hitta den info du behöver på rätt ställe. Det är ju ingen tvekan om att all info man behöver finns därute - vad det är frågan om är ju att veta var den relevanta informationen finns.

Tack för hjälpen att hitta den där filen - jag hade inte sett den förut då jag använder AVR Studio, den där verkar vara för wavrasm? :)
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

"AVR Assembler User Guide 4"

"The Assembler runs under Microsoft Windows 3.11, Microsoft Windows95 and
Microsoft Windows NT. In addition, there is an MS-DOS command line version."

Antikrundan :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jodå, jag har allt läst både datablad och hjälpfiler...

Och det stog inte där ?

> den där verkar vara för wavrasm?

Möjligt, men är syntaxen fel ?
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

Inlägg av Greensilver »

Nej, i databladet finns inte ens instruktionerna beskrivna - enbart en summary över de instruktioner som kretsen (i detta fall ATMega32) har stöd för. Finns dock ett annat dokument som beskriver instruktionerna "in depth" men det innehåller inget om assembler instruktionerna.

Har ej kollat syntaxen i dokumentet du länkade till då thepirateboy's länk löste mitt problem. Dock fanns det mycket annat där som jag nog kommer att ha nytta av.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Grejen med macros är just att det INTE är instruktioner men att man kan bygga "egna" så det är inlysande att macro's inte står i instruktionslistan.
Skriv svar