AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASM - PChars vergleichen

Ein Thema von Neutral General · begonnen am 7. Okt 2006 · letzter Beitrag vom 8. Okt 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 18:33
Ok danke... wollte es auch eigentlich mit Boolean machen aber da ich noch nicht so viel Ahnung von Booleans in ASM hab (eigentlich gar keine^^) aber dafür von PChars, hab ichs erstmal so gemacht Also im Ernstfall würd ich ja für sowas auch nie im Leben en PChar oder nen String nehmen

Wobei es nett wäre wenn du die neu hinzugefügten Zeilen erklären würdest
Ach ja du musst bei bei dem Code jne durch je ersetzen ^^
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 19:10
Ein Boolean ist nichts anderes als ein Byte. Nur dass er normalerweise nur $00 oder $FF enthält.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#13

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 19:24
nein, das jne war für den Fall gedacht daß repe cmpsb mit ZF=0 beendet wird. Das dann folgende cmp sollte prüfen, ob das letzte geprüfte Zeichen im zu prüfenden String das Ende-Byte war. Da hab ich mich durch vorherige Kommentare aufs Glatteis locken lassen.

Ich habe meinen Beitrag noch mal überarbeitet.

so wie es jetzt im Beitrag steht sollte es funktionieren.
repe cmpsb vergleicht solange bis Ungleichheit festgestellt wird, maximal aber 7 Zeichen (einschließlich Nullbyte am Ende der Strings). Wenn also nach Abarbeitung dieses Befehlt (besser der Befehlskombination) ZF=1 ist, dann wurden 7 Zeichen überprüft und alle Zeichen waren identisch. ZF kann nur in folgenden Fällen = 0 sein.
1) A ist länger als PW. Dann ergibt der Vergleich Nullbyte aus PW vs. Zeichen aus A ein false.
2) A ist kürzer als PW. Dann ergibt der Vergleich Zeichen aus PW vs. Nullbyte aus A ein false.
3) A und PW sind gleichlang, aber der Vergleich eines der Zeichen aus A und PW ergibt false.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#14

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 19:26
Zitat von 3_of_8:
Ein Boolean ist nichts anderes als ein Byte. Nur dass er normalerweise nur $00 oder $FF enthält.
Nein, $00 für False, $01 für True.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 22:40
Zitat von Amateurprofi:
Zitat von 3_of_8:
Ein Boolean ist nichts anderes als ein Byte. Nur dass er normalerweise nur $00 oder $FF enthält.
Nein, $00 für False, $01 für True.
Sollte und nicht ist!

False = $00, True <> $00

Und nur so, kann man ordentlich arbeiten. Es gibt genug Dinge in der VCL die nicht eine $01 bei True zurück geben! Siehe auch die ständigen Hinweise zum = True Vergleich in If Abfragen.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#16

Re: ASM - PChars vergleichen

  Alt 7. Okt 2006, 22:59
Dann müsste Delphi aber doch bei sowas wie "not a" das ganze direkt in "not a" als Maschinencode umsetzen und nicht "xor a, 1" Wo käm man da hin, wenn "(not true) <> false"
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

Re: ASM - PChars vergleichen

  Alt 8. Okt 2006, 10:07
sete al // setzt result dann=1 (true), wenn ZF=1 ist Die Zeile versteh ich von der Syntax her irgendwie nicht ganz...
Sete heißt doch bestimmt "Set if Equal" oder? AL ist ein register... aber was hat AL mit ZF zu tun (ZF = Undefinierter Bezeichner) und warum setzt es al auf 1 wenn ZF=1 ist... wo in dieser Zeile erkennt man

Delphi-Quellcode:
if ZF=1 then
 ...
?

AL ist ja der Register um Booleans zurückzugeben, bzw um Booleans zu schreiben zu lesen weil SizeOf(Boolean) = 1 = AL ne ?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#18

Re: ASM - PChars vergleichen

  Alt 8. Okt 2006, 10:11
Zitat von Neutral General:
Sete heißt doch bestimmt "Set if Equal" oder? AL ist ein register... aber was hat AL mit ZF zu tun (ZF = Undefinierter Bezeichner) und warum setzt es al auf 1 wenn ZF=1 ist...
Set if equal ist richtig. Mit ZF ist wohl das Zero-Flag gemeint.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: ASM - PChars vergleichen

  Alt 8. Okt 2006, 10:16
cmp subtrahiert die beiden Operanden.

Sinnvollerweise wird dann das Sign- und Zero-Flag gesetzt bzw. nicht gesetzt.

Dann entsprechen folgende Operatoren folgenden Flags:
<: SF=1
<=: SF=1 oder ZF=1
=: ZF=1
>=: SF=0
>: SF=0 und ZF=0
<>: ZF=0
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

Re: ASM - PChars vergleichen

  Alt 8. Okt 2006, 10:18
ahhh

Ok ich glaube ich habs verstanden. Nur noch eine Frage: SF = ?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz