Français
Assembler Forum

Aider chez Profan pour Assembler

 

GDL
allô Frank,

voudrais doch dans XPIA einiges realisieren.avec den Grundversionen viens je dank deiner Beispiele lente bien sûr.
Bräuchte mais chez den Arrays encore hilfe.
Möchtest du mir s'il te plaît ca comme Beispiel traduire?

num%=0
whilenot num% > 100
A%[num%]=num%+1 1feldarray
B%[num%,num%+1]=num%+3 2feldarray
inc num%
Wend

qui Boucle bekomme je oui hin, mais comment lege je qui Arrays à?
et comment bekomme je qui Arrays wieder pour Profan zurück?

salut
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
14.10.2006  
 




Frank
Abbing
allô Georg,

Assembler bietet de maison aus aucun Unterstützung pour Arrays à. si on mais bedenkt, dass Arrays aussi seulement Speicherbereiche sommes, dans denen qui données hintereinander gespeichert stehen, ist qui Solution simpel. Behandle Arrays simple comment Bereiche wobei du mais tenir compte de musst, dass Word-Arrays comment z.B. spielfeld%[0,0] 4 Bytes pro Eintrag besoin, genauso comment Long-Arrays, z.B. spielfeld&[0,0].
un avec >Declare spielfeld%[2,2]< geschaffenes Array nécessaire alors 3x * 3y *4 Bytes = 36 Bytes.

Um chez meinem Beispiel trop rester:
KompilierenMarqueSéparation
Declare feld%[2,2]
feld%[0,0] = 1 : feld%[1,0] = 2 : feld%[2,0] = 3
feld%[0,1] = 4 : feld%[1,1] = 5 : feld%[2,1] = 6
feld%[0,2] = 7 : feld%[1,2] = 8 : feld%[2,2] = 9pre>

Im grenier steht cela Array maintenant folgendermassen:

[box:c9f0d92ac8]7FD30010 : 01 00 00 00 - 02 00 00 00 - 03 00 00 00 - 04 00 00 00
7FD30020 : 05 00 00 00 - 06 00 00 00 - 07 00 00 00 - 08 00 00 00
7FD30030 : 09 00 00 00
00000036 : BYTES TOTAL[/box:c9f0d92ac8]
[hr:c9f0d92ac8]
So, um deinen Code umzusetzen, übergibts du d'abord einmal qui Adresse qui Arrays à qui Assemblerroutine et manipulierst qui Werte direct im grenier. qui Anfang zur Konvertierung wäre alors:

AsmStart FillArrays(addr(a%[0]),addr(b%[0,0]))

dans para1 steht maintenant qui Adresse de Array a% et dans para2 steht qui Adresse de Array b%

maintenant peux du qui Werte dans den grenier écrivons. Versuch la fois, si du qui Konvertierung maintenant déjà selber hinbekommst.
 
15.10.2006  
 




GDL
allô Frank,

viens avec dem grenier pas bien sûr, mais avec dem Beispiel aus dem Kurs devrait es aussi aller.
AsmStart Arrays
Paramètres adresse1&,wert1&,adresse2&,wert2&
jmp @f
data dd 0,0,0,0,0,0,0,0,0,0,0,0 ;Datenbereich(muss so gross comment qui arraydeclare son)
@f:
mov ebx,para1
mov eax,para2
mov ecx,para3
mov edx,para4
lea esi,data
mov [esi+ebx],eax;Wert1 écrivons
mov [esi+ecx],edx;Wert2 écrivons

AsmEnd
 
Windows7 Xprofan 8,9,10 [...]  [...] 
16.10.2006  
 




Frank
Abbing
Georg, lass uns chez deinem ersten Code rester et pas alles durcheinander werfen. Du vouloir alors que voici mise en œuvre bekommen?
KompilierenMarqueSéparation
 {$iq}
Declare num%,a%[101],b%[101,101],x&,y&
num%=0

whilenot num% > 100

    A%[num%]=num%+1 1feldarray
    B%[num%,num%+1]=num%+3 2feldarray
    Print a%[num%],b%[num%,num%+1]
    inc num%

wend

AsmStart ShowMe(addr(a%[0]),addr(b%[0,0]))

    PrintDec para2
    DumpMem para1,400
    DumpMem para2,800

AsmEnd

Print "Fertig."
WaitInput
Fin
 
17.10.2006  
 




Frank
Abbing
So, ici la hâte du beide Versionen des gleichen Codes. qui Assemblercode ist pas optimiert, avec cela qui Arbeitsweise besser verständlich wird:
KompilierenMarqueSéparation
!{$iq}
Declare num%,a%[101],b%[101,101],x&,y&
*** Profanversion
num%=0

whilenot num% > 100

    A%[num%]=num%+1
    B%[num%,num%+1]=num%+3
    inc num%

wend

*** Assemblerversion

AsmStart FillArray(addr(a%[0]),addr(b%[0,0]))

    mov ebx,para1
    mov edx,para2
    add edx,408
    mov ecx,0

    .while ecx <=100

        inc ecx           ;ecx = num%+1
        mov [ebx],ecx
        add ebx,4         ;Adresse des nächsten Wertes in a%[]
        add ecx,2         ;ecx = num%+3
        mov [edx],ecx
        add edx,412       ;Adresse des nächsten Wertes in b%[,]
        sub ecx,3
        inc ecx           ;Schleifenzähler um eins erhöhen

    .endw

AsmEnd

WaitInput
Fin

je empfehle dir chez weiteren Umsetzungen pour Assembler Bereiche trop verwenden. Arrays sommes plan pas sonderlich kompatibel trop Assembler.
 
17.10.2006  
 




GDL
allô Frank,

erstmal merci pour Dein Beispiel.mais je verwende desswegen Arrays, là es wesentlich einfacher ist.
Beispiel: Speedausgabe&=standardspeed&[punkt&,lok&]
ou bien neue Standardspeed pour Lok& irgendeine Lok pour irgendeinen Punkt
standardspeed&[punkt&,lok&]=lesewert&

lok&,punkt&,lesewert&=sind toujours 8bit breit.

cela erste Quellcodebeispiel était seulement un fiktives Beispiel à substance erstmal trop kapieren,alors pour den Einstieg.

je werde es wahrscheinlich avec Data faire.Data utilise aussi Atmelassembler chez seinen Arrays.suis en ausgegangen cela MASM32 Arrays peux.
Werde ici mais weitermachen, là qui Geschwindigkeitszuwächse avant allem sur Rechnern sous 800 Mhz enorm sommes.(Lies dein Rechenbeispiel courir).

Muss chez den Data Beispiel Kit sur den Augen gehabt avons.cet Beispiel ouvrez chez meinem Prog überhaupt gänzlich neue Routinen.

salut
Georg

P.S. chez deinem Beispiel vermute je la fois dass alles dans den Registern ebx et edx abgehandelt wird . je muss alors toujours seulement 8 bit breite 0 Werte erzeugen cet ensuite Auffüllen et am richtigen place dans dem Bereich kopieren.et chez Profan hernach chez chaque Arrayersatz selbige Procédure wieder.Verstehe je cela so richtig?
 
Windows7 Xprofan 8,9,10 [...]  [...] 
17.10.2006  
 




Frank
Abbing
Hi.

[quote-part:7bd08b357f]mais je verwende desswegen Arrays, là es wesentlich einfacher ist.[/quote-part:7bd08b357f]
Alles l'affaire qui Gewöhnung. mais im Grunde la hâte du droite.

[quote-part:7bd08b357f]je werde es wahrscheinlich avec Data faire.Data utilise aussi Atmelassembler chez seinen Arrays.suis en ausgegangen cela MASM32 Arrays peux.[/quote-part:7bd08b357f]
cela selbe dans vert. seulement erzeugst du dans deinem DATA-Beispiel den grenier mittels MASM32, au cours de dans mon umgesetzen Code Profan den grenier (dans den le cas comme Array) zur Disposition stellt.

[quote-part:7bd08b357f]P.S. chez deinem Beispiel vermute je la fois dass alles dans den Registern ebx et edx abgehandelt wird . je muss alors toujours seulement 8 bit breite 0 Werte erzeugen cet ensuite Auffüllen et am richtigen place dans dem Bereich kopieren.et chez Profan hernach chez chaque Arrayersatz selbige Procédure wieder.Verstehe je cela so richtig?[/quote-part:7bd08b357f]
non. Register avec trois Buchstaben (EAX usw.) travailler toujours avec 32 Bit...
je denke pas, dass du mon Umsetzung verstanden la hâte. mon Assemblercode füllt qui Profan-Arrays, direct. Profan übergibt aiguille sur qui Arrays, alors qui Adressen, dans denen qui Werte des Arrays im grenier stehen. ensuite écrit qui Assembler-Boucle direct Werte dans qui Arrays, sodass vous Profan pour dem sortir de qui Assembler-Routine déjà zur Disposition stehen.
Dein DATA-Beispiel nützt dans sofern rien, weil Assembler den grenier zur Disposition se mettre soll et Profan später rien en hat...

Incidemment stellt qui MASM32.lib quelques Arrayfunktionen zur Disposition. là XPIA cet Library eingebunden hat, peux du vous sans weiteres benutzen.

arr_add Ajouter à integer to every member of a DWORD array
arr_mul Multiply every member of a DWORD array by à integer
arr_sub Subtract à integer à partir de every member of a DWORD array
create_array Créer à array of pointers to a user defined array

Particularités en supplément findest du im MASM32-paquet dans help/masmlib32.hlp
 
17.10.2006  
 




GDL
allô Frank,

la hâte droite,verstehe ca encore pas entier.Habe momentan avec qui jetztigen Fassung genug Stress.(Hardware erstellen).
peux gesundheitlich pas plus so viel.
Werde mais drann rester, là toujours plus Mitglieder cela Prog avons voulons, mais partiellement seulement 486DX33 calculateur (Modellbahnrechner arrêt) avons.
peut-être könnten wir uns la fois sous Skype unterhalten, si du vouloir?

salut
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
18.10.2006  
 




Frank
Abbing
Bien sûr, volontiers. Du findest mich là sous dem Namen grasshopper64
 
18.10.2006  
 




Michael
Wodrich
Hmm, , Im Herbst pas plus im Gras unterwegs?
 
Programmieren, das spannendste Detektivspiel der Welt.
18.10.2006  
 




GDL
allô Frank,

bekomme es comment im ersten Antwortposting pas sur qui Reihe.Habe mais dans einer Kopie de betrieb angefangen mittels Data trop travailler et den Rückgabewert ensuite dans Profan ins Array trop écrivons.Funzt aussi.
Habe maintenant un kleines Warmstartprogramm vorweg dass qui Festplattenwerte dans qui Datapositionen écrit.dans Zusammenarbeit avec meiner RAMdisk wesentlich plus rapide comme auparavant.
Zwar pas qui Königsweg, mais und dir versuchsweise déjà pas mal.GDL plan.

salut
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
27.10.2006  
 




Frank
Abbing
Wenns fonctionne.
chez qui Rückschau sur ältere Code de mir bemerke je aussi souvent, dass je manches aujourd'hui anders lösen serait. on lernt plan toujours en supplément, et genauso wird es dir aussi ergehen, si du deinen Code dans 2-3 Jahren ansiehst.
 
27.10.2006  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

11.168 Views

Untitledvor 0 min.
Tommy29.03.2022
p.specht22.02.2019
Jörg Sellmeyer25.05.2018
Chregu Mueller10.05.2015
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie