Sida 1 av 1
AVR ASM Argument till macro, går det?
Postat: 28 april 2006, 19:57:18
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?
Typ så här:
Kod: Markera allt
.MACRO MyMacro [color=red](#ARGUMENT#[/color])
ldi r16[color=red],#ARGUMENT#[/color]
.ENDMACRO
Postat: 28 april 2006, 20:35:22
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
Postat: 28 april 2006, 23:16:26
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.

Postat: 28 april 2006, 23:28:36
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
Postat: 28 april 2006, 23:33:04
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:
Postat: 28 april 2006, 23:47:03
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 ???
Postat: 29 april 2006, 00:02:18
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?

Postat: 29 april 2006, 00:18:14
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

Postat: 29 april 2006, 00:44:58
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 ?
Postat: 29 april 2006, 01:06:14
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.
Postat: 29 april 2006, 07:06:04
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.