Include-fil för att använda Word i assembler på AVR?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Include-fil för att använda Word i assembler på AVR?

Inlägg av Glattnos »

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?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av Andax »

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. :)
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av Glattnos »

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
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av vfr »

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? :? :shock:

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...
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av sneaky »

Undrar hur lång tid det tar innan vfr slår sig själv i pannan och undrar hur han tänkte igentligen :lol:
Användarvisningsbild
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?

Inlägg av Swech »

Han menar word som i 16 bitar .. 2 bytes m.a.o inte microsoft word :doh:

Swech
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av Glattnos »

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.

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
Kan jag skriva såhär också om macrona cpw och cpcw är med:

Kod: Markera allt

	cpw		Res1, X
	cpcw		Res2, X
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av jesse »

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 :P )
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av vfr »

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 :lol:
:doh: :waving:

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av sodjan »

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 !?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av vfr »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av sodjan »

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... :-)
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av jesse »

>>"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 ? :mrgreen:

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.
Användarvisningsbild
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?

Inlägg av Swech »

"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
Nerre
Inlägg: 27257
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av Nerre »

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å.
Skriv svar