Include-fil för att använda Word i assembler på AVR?
Include-fil för att använda Word i assembler på AVR?
Hej!
Jag hittade för en tid sedan ett program någonstans här på forumet som innehöll assembler-kod för att använda word direkt när man skrev i assembler.
Där fanns tex:
ldsw (ladda två register med ett word)
stsw (lagra word i SRAM)
subw (subtraktion mellan två word)
addw (addition mellan två word)
etc.
Det var smidigt att ha det programmet som en include-fil eftersom man då inte behöver skriva lika mycket. Lite luddig förklaring men jag tror att ni förstår vad jag menar.
Nu har jag dock tappat bort detta program och hittar det inte här på forumet. Kan någon hjälpa mig att hitta det eller ett liknande program?
Jag hittade för en tid sedan ett program någonstans här på forumet som innehöll assembler-kod för att använda word direkt när man skrev i assembler.
Där fanns tex:
ldsw (ladda två register med ett word)
stsw (lagra word i SRAM)
subw (subtraktion mellan två word)
addw (addition mellan två word)
etc.
Det var smidigt att ha det programmet som en include-fil eftersom man då inte behöver skriva lika mycket. Lite luddig förklaring men jag tror att ni förstår vad jag menar.
Nu har jag dock tappat bort detta program och hittar det inte här på forumet. Kan någon hjälpa mig att hitta det eller ett liknande program?
Re: Include-fil för att använda Word i assembler på AVR?
Några projekt på http://elm-chan.org/ har include filer som definierar makron för Word instruktioner för avr assembler. Bästa tipset jag kan ge från sandstranden. 

Re: Include-fil för att använda Word i assembler på AVR?
Nu hittade jag det:
Kod: Markera allt
.equ bit0 = 0b00000001
.equ bit1 = 0b00000010
.equ bit2 = 0b00000100
.equ bit3 = 0b00001000
.equ bit4 = 0b00010000
.equ bit5 = 0b00100000
.equ bit6 = 0b01000000
.equ bit7 = 0b10000000
;------------------------------------------------;
; Push/Pop register pair
;
; pushw Z
.macro pushw
push @0H
push @0L
.endm
.macro popw
pop @0L
pop @0H
.endm
;------------------------------------------------;
; Load/store word from/to direct memory/immediate
;
; ldsw Z,mem
; ldiw Z,imm
.macro ldiw
ldi @0L,low(@1)
ldi @0H,high(@1)
.endm
.macro ldsw
lds @0L,@1
lds @0H,@1+1
.endm
.macro lddw
ldd @0L,@1
ldd @0H,@1+1
.endm
.macro stsw
sts @0,@1L
sts @0+1,@1H
.endm
.macro stdw
std @0,@1L
std @0+1,@1H
.endm
;------------------------------------------------;
; Store immediate into indirect memory via r16
;
; sti Z,imm
; stdi Z+d,imm
.macro sti
ldi r16,@1
st @0,r16
.endm
.macro stdi
ldi r16,@1
std @0,r16
.endm
;------------------------------------------------;
; add/sub/subc/cp/cpc/lsl/lsr/rol/ror to register pair
;
.macro addiw
subi @0L,low(-(@1))
sbci @0H,high(-(@1))
.endm
.macro subiw
subi @0L,low(@1)
sbci @0H,high(@1)
.endm
.macro addw
add @0L,@1L
adc @0H,@1H
.endm
.macro adcw
adc @0L,@1L
adc @0H,@1H
.endm
.macro subw
sub @0L,@1L
sbc @0H,@1H
.endm
.macro sbcw
sbc @0L,@1L
sbc @0H,@1H
.endm
.macro cpw
cp @0L,@1L
cpc @0H,@1H
.endm
.macro cpcw
cpc @0L,@1L
cpc @0H,@1H
.endm
.macro andw
and @0L,@1L
and @0H,@1H
.endm
.macro andiw
andi @0L,low(@1)
andi @0H,high(@1)
.endm
.macro orw
or @0L,@1L
or @0H,@1H
.endm
.macro oriw
ori @0L,low(@1)
ori @0H,high(@1)
.endm
.macro lslw
lsl @0L
rol @0H
.endm
.macro lsrw
lsr @0H
ror @0L
.endm
.macro rolw
rol @0L
rol @0H
.endm
.macro rorw
ror @0H
ror @0L
.endm
.macro clrw
clr @0L
clr @0H
.endm
.macro comw
com @0L
com @0H
.endm
.macro movew
mov @0L, @1L
mov @0H, @1H
.endm
;------------------------------------------------;
; Store immediate into direct memory via r16
;
; stsi var,imm
.macro stsi
ldi r16,@1
sts @0,r16
.endm
;------------------------------------------------;
; Output port immediate via r16
;
; outi port,var
.macro outi
ldi r16,@1
out @0,r16
.endm
;------------------------------------------------;
; Add immediate to register
.macro addi
subi @0,-(@1)
.endm
Re: Include-fil för att använda Word i assembler på AVR?
Ursäkta, men varför i hela friden vill man använda en koloss som Word för något som den absolut inte är gjord för?

Jag kan förstå både dom som vill ha en absolut minimalistisk editor som är lättstartad och körbar på allting i PC-väg, och dom som vill ha absolut alla funktioner som finns med syntax highlighting o.s.v. Men Word...


Jag kan förstå både dom som vill ha en absolut minimalistisk editor som är lättstartad och körbar på allting i PC-väg, och dom som vill ha absolut alla funktioner som finns med syntax highlighting o.s.v. Men Word...
Re: Include-fil för att använda Word i assembler på AVR?
Undrar hur lång tid det tar innan vfr slår sig själv i pannan och undrar hur han tänkte igentligen 

- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Include-fil för att använda Word i assembler på AVR?
Han menar word som i 16 bitar .. 2 bytes m.a.o inte microsoft word
Swech

Swech
Re: Include-fil för att använda Word i assembler på AVR?
Jag menade naturligtvis 16-bitars word och inte Microsoft.
Jag har en fråga till här, hur gör jag för att jämföra 32-bitar med 32-andra bitar? Kan man använda cp och cpc som jag har gjort här? Utgå från att jag har ovanstående macron med också. Hela programmet är inte med här men det viktiga är med.
Kan jag skriva såhär också om macrona cpw och cpcw är med:
Jag har en fråga till här, hur gör jag för att jämföra 32-bitar med 32-andra bitar? Kan man använda cp och cpc som jag har gjort här? Utgå från att jag har ovanstående macron med också. Hela programmet är inte med här men det viktiga är med.
Kod: Markera allt
.DEF Res1L = r2
.DEF Res1H = r3
.DEF Res2L = r4
.DEF Res2H = r5
.DSEG
.ORG 0x100
Max_effekt_v: .BYTE 4
Main:
ldsw X, Max_effekt_v
ldsw Y, Max_effekt_v+2
cp Res1L, XL
cpc Res1H, XH
cpc Res2L, YL
cpc Res2H, YH
brlo Nytt_max_effekt
rjmp Vrid_effekt_klart
Kod: Markera allt
cpw Res1, X
cpcw Res2, X
Re: Include-fil för att använda Word i assembler på AVR?
jo, så kan du göra.
(... 16 bitar ja... Windows har väl bara en bit, och den är nollställd för det mesta
)
(... 16 bitar ja... Windows har väl bara en bit, och den är nollställd för det mesta

Re: Include-fil för att använda Word i assembler på AVR?
sneaky skrev:Undrar hur lång tid det tar innan vfr slår sig själv i pannan och undrar hur han tänkte igentligen


Snabba slutsatser. Lite för snabba ibland. Det var väl anknytningen till att fakiskt någon gång ha sett någon som använt MS Word som editor vid kodning.
Re: Include-fil för att använda Word i assembler på AVR?
Jag hade naturligstvis exakt samma tanke som vfr först när jag såg den nya tråden.
Och det är ju ganska naturligt när man skriver Word (med versalt W). Varför skulle
man göra det mitt inne i en mening om man *inte* menar MS Word !?
Och det är ju ganska naturligt när man skriver Word (med versalt W). Varför skulle
man göra det mitt inne i en mening om man *inte* menar MS Word !?
Re: Include-fil för att använda Word i assembler på AVR?
Där har du ju helt klart en poäng. Även om det säkert inte är avgörande, så kan det nog bidraga till såna misstag. Jag tänkte inte så långt ens efteråt när jag insåg att jag misstagit mig, men man är ju van att se Word med versal som just namnet. Och MS Word är väl det mest kända namnet, så det ligger säkert lite i det.
Re: Include-fil för att använda Word i assembler på AVR?
Om man tänker sig rubriken *utan* versalt "W" så tänker i alla fall
inte jag direkt på MS Word. Sen så var det ju rellativt tydligt av
själva förstainlägget vad som avsågs. Det första jag tänkte efter vfr's
första inlägg var, läste han inte inlägget också ??
Sen så är jag inte direkt förtjust i uttryck som "subtraktion mellan två word".
"Subtraktion mellan två 16-bitars ord" låter bättre.
Eller "subtraktion mellan två 16-bitars variabler", vilket ju är samma sak.
Men det är bara mindre synpunkter...
inte jag direkt på MS Word. Sen så var det ju rellativt tydligt av
själva förstainlägget vad som avsågs. Det första jag tänkte efter vfr's
första inlägg var, läste han inte inlägget också ??

Sen så är jag inte direkt förtjust i uttryck som "subtraktion mellan två word".
"Subtraktion mellan två 16-bitars ord" låter bättre.
Eller "subtraktion mellan två 16-bitars variabler", vilket ju är samma sak.
Men det är bara mindre synpunkter...

Re: Include-fil för att använda Word i assembler på AVR?
>>"subtraktion mellan två word".
Jo, det låter väldigt konstigt - en märklig swängelska. Jag fick läsa inlägget två gånger innan jag förstod vad som menades med "word". Det är väl inte tillräckligt ofta använt som uttryck för att man självklart ska associera till 16-bitars tal. Jag säger heller 8-bitars- 16-bitars eller 32 bitars tal... istället för byte, word och ...jaa.. vad heter då de 32-bitars?? Extended word kanske ?
Nu verkar det dessutom så, om man googlar efter "32 bit word" att ordet word är flexibelt och kan vara olika antal bitar långa, beroende på processor / arkitektur. Så då är det ju inte ens definierat vad man menar:
Jo, det låter väldigt konstigt - en märklig swängelska. Jag fick läsa inlägget två gånger innan jag förstod vad som menades med "word". Det är väl inte tillräckligt ofta använt som uttryck för att man självklart ska associera till 16-bitars tal. Jag säger heller 8-bitars- 16-bitars eller 32 bitars tal... istället för byte, word och ...jaa.. vad heter då de 32-bitars?? Extended word kanske ?

Nu verkar det dessutom så, om man googlar efter "32 bit word" att ordet word är flexibelt och kan vara olika antal bitar långa, beroende på processor / arkitektur. Så då är det ju inte ens definierat vad man menar:
The term 'word' is used for a small group of bits which are handled simultaneously by processors of a particular architecture. The size of a word is thus CPU-specific. Many different word sizes have been used, including 6-, 8-, 12-, 16-, 18-, 24-, 32-, 36-, 39-, 48-, 60-, and 64-bit. Since it is architectural, the size of a word is usually set by the first CPU in a family, rather than the characteristics of a later compatible CPU. The meanings of terms derived from word, such as longword, doubleword, quadword, and halfword, also vary with the CPU and OS.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Include-fil för att använda Word i assembler på AVR?
"jaa.. vad heter då de 32-bitars?? Extended word kanske ? "
På 68000 heter det longword och den kör med byte, word och longword
så word i sig är långtifrån "fel"
Swech
På 68000 heter det longword och den kör med byte, word och longword
så word i sig är långtifrån "fel"
Swech
Re: Include-fil för att använda Word i assembler på AVR?
Det är just det som är problemet, word kan betyda en massa olika.
För en 4-bitars processor så är 8 bitar antagligen word, och 16 bitar long word.
Det är ju lite som med int etc i C, det finns short int, int och long int och två av dem är samma men det beror på arkitektur vilka två.
För en 4-bitars processor så är 8 bitar antagligen word, och 16 bitar long word.
Det är ju lite som med int etc i C, det finns short int, int och long int och två av dem är samma men det beror på arkitektur vilka två.