Seite 1 von 2

Long in ASM an Variable übergeben ?

Verfasst: Fr 1. Aug 2014, 18:35
von funkheld
Hallo, guten Tag.
Ich kann mit dem ASM fast alles anstellen wenn es um die Pins 0-28 , Timer usw geht.

Aber eine Long Addieren und direkt an eine Variable übergeben klappt nicht.

Danke.
Gruss

Code: Alles auswählen

CON

  _10us = 1_000_000 /        10   ' Divisor for 10 us
  _1ms  = 1_000_000 /     1_000   ' Divisor for 1 ms
  _1s   = 1_000_000 / 1_000_000   ' Divisor for 1 s
  
  _clkmode = xtal1 + pll16x
  _clkfreq = 80_000_000

VAR

  long share 
 
OBJ

  serial        : "FullDuplexSerial"
  
PUB Main 

  serial.Start(31, 30, %0000, 19_200)                   

  cognew(@entry,0)

  waitcnt(cnt + (clkfreq /_1ms*100))

  serial.Dec(share)
  serial.Tx($0D)
  serial.Str(STRING("Fertig!"))

  waitcnt(cnt + (clkfreq /_1ms*100))                      
  
  serial.Stop                                           

DAT

entry
        ORG   
        add             pshare, #123456 ' wie kann ich hier auch 123456 addieren, klappt nicht.           
        wrlong          pshare,......       ' wie wird der Wert von pshare direkt an share übergeben?
            
pshare long  567678 

Re: Long in ASM an Variable übergeben ?

Verfasst: Fr 1. Aug 2014, 20:14
von PIC18F2550

Code: Alles auswählen

        add             pshare, #123456 ' wie kann ich hier auch 123456 addieren, klappt nicht.           
123456 ist zu groß für directwerte da stehen nur 9 bit zur verfügung.
Das musst Du in eine Variable packen.

Re: Long in ASM an Variable übergeben ?

Verfasst: Fr 1. Aug 2014, 21:03
von funkheld
Jup, danke.

Wie geht das in ASM, in eine Variable mit MOV oder Add oder... einen Wert größer 9 Bit zuzuweisen?
Wie kann ich eine Variable aus "VAR" etwas übergeben ohne dieses "par" in ASM?

Danke.
Gruss

Re: Long in ASM an Variable übergeben ?

Verfasst: Fr 1. Aug 2014, 21:27
von PIC18F2550
mittels constanten / berechnungen können Startwerrte Übergebenwerden.

Code: Alles auswählen

sync            long    $0200                   ' locked to %00 {%hv}

slow_pixels     long    $001FFFE0               ' 5/16/11 (LSB first)
slow            long    4 << 12 | 128           ' 4/128
hvis            long    1 << 12 | 8             ' 1/8

vcfg_norm       long    %0_01_0_00_000 << 23 | 2 << 9 | $0FF
vcfg_sync       long    %0_01_0_00_000 << 23 | 3 << 9 | %11

mask            long    $0FF << (2 * 8) | %11 << (3 * 8)

hide            long    $40000000               ' no colour fetch
do_v            long    pointer                 ' task index (vertical)
do_h            long    fetch_c                 ' task index (horizontal)
          
dst1            long    1 << 9                  ' dst +/-= 1
dst2            long    2 << 9                  ' dst +/-= 2

'                               V        H
'                               bbgggrrr_bbgggrrr
plte            long    NEGX | %00111111_11000000   ' default colour
vier            long    NEGX                        ' hidden

zero            long    $1F0                                ' par (dst only)
res_y           long    300                                 ' |
scrn            long    @scrnE-33                   '????? offset 33
font            long    @font1+16                   '????? offset 16
scan            long    height1

Wenn du nur einen Wert oder einen Zeiger auf ein Array übergeben willst (par) <<<< Zu deinem Problem

Code: Alles auswählen

CON
VAR
  long  array[größe]

PUB init
  cognew(@code, 0)   ' 0 kann durch einen wert $0..$FFFFFFFF  oder @array
Eine weitere möglichkeit währe vor dem Start des COG-Codes diesen zu Modifizieren.

Code: Alles auswählen

PUB Spinroutine
 scan := $100

DAT  ' COG-CODE
....
' Variabeln oder CODE
scan            long    height1

Re: Long in ASM an Variable übergeben ?

Verfasst: Fr 1. Aug 2014, 22:32
von funkheld
Jup danke.
Das hat mir weitergeholfen.

Gruss

Re: Long in ASM an Variable übergeben ?

Verfasst: Mo 23. Feb 2015, 08:40
von Adhore Khwaab
Wie kann ich eine Variable aus "VAR" etwas übergeben ohne dieses "par" in ASM?

Re: Long in ASM an Variable übergeben ?

Verfasst: Mo 23. Feb 2015, 10:42
von TuxFan
???????????
Dieser Satz :
Adhore Khwaab hat geschrieben:Wie kann ich eine Variable aus "VAR" etwas übergeben ohne dieses "par" in ASM?
kam hier :
funkheld hat geschrieben:Jup, danke.
Wie geht das in ASM, in eine Variable mit MOV oder Add oder... einen Wert größer 9 Bit zuzuweisen?
Wie kann ich eine Variable aus "VAR" etwas übergeben ohne dieses "par" in ASM?
Danke.
Gruss
schon mal vor.
Ähnliche Aufwallungen von Trolligkeit hatten wir ja schon in anderen Threads............nur der Name ist jetzt noch exotischer.........

Gruß
TuxFan

Re: Long in ASM an Variable übergeben ?

Verfasst: Mo 23. Feb 2015, 11:59
von BorgKönig
durchaus möglch tuxfan... intern gibts aber keine auffälligkeiten... werden die bots "inteligenter"...? sobald da was rumzickt, schmeiss ich den raus...

Re: Long in ASM an Variable übergeben ?

Verfasst: Mo 23. Feb 2015, 13:17
von TuxFan
BorgKönig hat geschrieben:durchaus möglch tuxfan... intern gibts aber keine auffälligkeiten... werden die bots "inteligenter"...? sobald da was rumzickt, schmeiss ich den raus...
An anderer Stelle hatte ich mal erwähnt, daß dieser Bot ein humanoides Wesen sein könnte, dessen Adresse ich wegen seiner Internetumtriebigkeit kenne. Schade, daß er seine Intelligenz mit solchen Kindereien unterfordert.

Re: Long in ASM an Variable übergeben ?

Verfasst: Mo 23. Feb 2015, 17:51
von yeti
TuxFan hat geschrieben:An anderer Stelle hatte ich mal erwähnt, daß dieser Bot ein humanoides Wesen sein könnte, dessen Adresse ich wegen seiner Internetumtriebigkeit kenne. Schade, daß er seine Intelligenz mit solchen Kindereien unterfordert.
Ich musste dabei an...

Bild

...denken.