Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

asm frage

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 73
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 31.07.2009, 09:19    Titel: asm frage Antworten mit Zitat

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 zwinkern 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 ! lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 73
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 01.08.2009, 19:51    Titel: Antworten mit Zitat

frage noch mal höflich nach zwinkern

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" grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 04.08.2009, 22:10    Titel: Antworten mit Zitat

Ich habe jetzt erst geschnallt das es um diese Zeile geht grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 73
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 03.09.2009, 22:42    Titel: durch 0 teilen ? Antworten mit Zitat

hi alle miteinander, lieber volta zwinkern

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 lächeln

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 lächeln 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz