 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 78 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 31.07.2009, 10:19 Titel: asm frage |
|
|
schönen guten Morgen allerseits,
habe eine Frage zu einem ASM register, vielleicht weiß da jemand näheres drüber, mir ist line 33 unschlüssig habe eine neue Zeil mit asm dec ecx hinzugefügt, um m.E. nach abwärts zu kalkulieren. Bin mir nicht sicher, ob das so geht und stimmt.
Code: |
'CPU Speed
Dim As Ulongint start64,diff64
Dim As Single starttimer,onesecond=1.0045!
Dim as integer repeat
'get timer
starttimer=Timer
'CPU Counter holen
asm rdtsc
asm mov dword Ptr [start64], eax
asm mov dword Ptr [start64+4], edx
'wait one second
While (timer-starttimer)<onesecond:Wend
'CPU Counter erneut lesen
asm rdtsc
'Diffrenz bilden carrybit nicht vergessen
asm mov ebx, eax
asm mov eax, edx
asm Sub ebx, dword Ptr [start64]
asm sbb eax, dword Ptr [start64+4]
asm mov dword Ptr [diff64], ebx
asm mov dword Ptr [diff64+4], eax
'Differenz durch 1 Millionen teilen
asm mov ecx, 1000000
asm mov eax, ebx
asm cdq
asm idiv ecx
asm dec ecx : jge repeat
asm mov dword Ptr [diff64], eax
asm mov dword Ptr [start64], eax
Print "CPU Speed "; Str$(diff64) ; " MHz."
Print " Counter speed"; Str$(start64) ; " millisec."
Print "repeat factor"; Str$(repeat) ; " (x)repeats."
Sleep
End
|
das ASM Beispiel habe ich vom FB forum hier (der Link ist irgendwo im Nirwana verloren, sorry) und nur herumexperimentiert, wollte wissen, ob das geht, es müßte sich um einen Decrease (incr, decr) Faktor handeln.
Vielleicht hat jemand eine Hilfe parat, wäre toll.
möchte mehr über die System Infos wissen !
Beste Grüße, Löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 78 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 01.08.2009, 20:51 Titel: |
|
|
frage noch mal höflich nach
also wenn niemand antwortet, gehe ich davon aus, dass keiner im Moment weiter weiß oder gerade niemand da ist, der helfen könnte, stimmt's ? muss grinsen... ist nicht schlimm, kann noch ne Weile warten oder jemand sagt, "hey, du liegst hier völlig falsch mit dem Code" oder "ist absoluter Quatsch" oder "doch irgendwie sinnvoll"
danke, abendliche Grüße samt Weizenbier, löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.08.2009, 23:10 Titel: |
|
|
Ich habe jetzt erst geschnallt das es um diese Zeile geht
Code: | asm dec ecx : jge repeat |
Was willst du denn dort machen?
Ich kann dir nur schreiben wie der Assembler diese Zeile sieht:
ecx = ecx -1
(Leerzeichen) mit DP <- Fehler: kein gültiges Label
Springe wenn >= nach repeat <- Fehler: finde kein "repeat:" Label _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 78 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 03.09.2009, 23:42 Titel: durch 0 teilen ? |
|
|
hi alle miteinander, lieber volta
das letzte Beispiel hat sich erledigt, weil es ja auch ohne meine zusätzliche Zeile ging. Es handelte sich um eine Abwärtskalkulation, die ich hier aber nicht benötigte, hatte ich von einem anderen Beispiel
hier nun ein neues Beispiel. Auch mit einer Frage. Im letzten Teil wird durch 0 oder 1 geteilt ? Oder wie kann ich das verstehen mit...
Zitat: |
asm
fld qword Ptr [A]
fld qword Ptr [B]
fdiv st(0), st(1)
fst qword ptr[C]
end asm
|
Code: |
screenres 320,320,4
dim as single A, B, C
input A
input B
ASM
fld dword ptr [A]
fmul dword ptr [B]
fstp dword ptr [C]
END ASM
print "ergebnis multipliziert: "; C
print
Circle (320, 240), 200, 2, , , 0.2, F
sleep
cls
input A
input B
ASM
fld dword ptr [A]
fdiv dword ptr [B]
fstp dword ptr [C]
END ASM
print "ergebnis teilen: "; C
print
Circle (320, 240), 200, 6, , , 0.4, F
sleep
cls
input A
input B
asm
fld qword Ptr [A]
fld qword Ptr [B]
fdiv st(0), st(1)
fst qword ptr[C]
end asm
print "ergebnis teilen durch 0 ? : "; C
print
Circle (320, 240), 200, 8, , , 0.4, F
sleep
cls
|
Vielleicht kann jemand helfen, ob das richtig ist mit meinem Text "Ergebnis durch 0 teilen". Das Beispiel geht. Immer eine Zahl nach Input eingeben, dann rechnet FB selbst. Die Kreise habe ich einfach nur so hinzugefügt, damit es besser aussieht Ist ein kleines ASM Übungsbeispiel, was ich gefunden und leicht abgeändert habe.
Beste Grüße, löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|