Ergebnis 1 bis 7 von 7

Thema: String vergleich!

  1. #1
    Member
    Registriert seit
    Dec 2000
    Beiträge
    97
    Renommee
    10

    String vergleich!

    hi...

    ich weis, die frage ist ned sehr anspruchsvoll, aber ich hab seit einiger zeit ein dummes problem, bei dem vergleichen zweier strings, von denen ich den ersten erst von der Tastatur einlese!

    Code:
    Buffer db ?     ;Buffer für 0Ah
           db ?
    passw  db 5
           db "geek" ; String zum vergleichen!
    
    mov ah, 0Ah      ;wir lesen den String von 
    mov Buffer, 5    ;der Tastatur in Buffer
    lea dx, Buffer
    INT 21h
    
                     ;nun wollen wir Buffer mit 
                     ;passw vergleichen!
    
    lea di, Buffer
    lea si, passw
    cmpsb
    je weiter
    
    weiter: ...      ;und so weiter und sofort
    was stimmt nicht, was habe ich nicht bedacht oder beachtet! thx

    cu ExRevel




  2. #2
    Member
    Registriert seit
    Apr 2001
    Beiträge
    156
    Renommee
    10

    Post

    Original erstellt von ExRevel:

    Code:
    Buffer db ?     ;Buffer für 0Ah
           db ?
    passw  db 5
           db "geek" ; String zum vergleichen!
    
    mov ah, 0Ah      ;wir lesen den String von 
    mov Buffer, 5    ;der Tastatur in Buffer
    lea dx, Buffer
    INT 21h
    
                     ;nun wollen wir Buffer mit 
                     ;passw vergleichen!
    
    lea di, Buffer
    lea si, passw
    cmpsb
    je weiter
    
    weiter: ...      ;und so weiter und sofort
    hm ich lerne zwar grade asm, aber ich denke das du mal
    Code:
    cmp di, si
    oder
    Code:
    cmp buffer, passw
    ausprobieren könntest, (würde ich zumindest so machen ob das klappt weiß ich net, möcht ich jetzt auch nich ausprobiern *Gg*)


  3. #3
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    @ExRevel dein CMPSB ist schon richtig, nur das vergleicht nur den 1. character. REP CMPSB vergleicht einen String bei DS:SI mit einem String bei ESI. Dafür muss die Stringlänge vorher in CX:

    Code:
    movzx cx, byte ptr [passw] ; hier steht die länge des strings, als byte
    mov si, offset passw+1   ; source
    mov di, offset Buffer+1  ; destination
    rep cmpsb                ; vergleichen
    
    test cx,cx   ; wenn CX=0, war der String derselbe
    jz passw_richtig

    Hier stimmt noch was nicht:
    Code:
    Buffer db ?     ;Buffer für 0Ah
           db ?
    Damit reservierst du nur 1 byte für den Buffer. Wenn du 4 bytes haben willst, musst du 5 bytes reservieren:
    Code:
    Buffer db 4
           db 5 dup(?)
    Weil du ein byte zusätzlich für ENTER brauchst, wenn ich mich richtig erinnere.


    [Dieser Beitrag wurde von toxic am 07. Juni 2001 editiert.]

  4. #4
    Member
    Registriert seit
    Dec 2000
    Beiträge
    97
    Renommee
    10
    hey danke!!

    hab leider nur ein Assemblerbuch, das von Rainer Backer "Eine strukturierte Einführung, und da ist der meiste teil doch sehr knapp gehalten!

    danke für eure hilfe!

    cu ExRevel



  5. #5
    Moderator
    Registriert seit
    May 2000
    Beiträge
    1.367
    Renommee
    1285

    Arrow

    Original erstellt von toxic:
    Weil du ein byte zusätzlich für ENTER brauchst, wenn ich mich richtig erinnere.
    Hmm.. wenn das ein String ("Vektor") werden soll, dann brauchst du für 4 Bytes tatsächlich 5 Byte Buffer, weil ein String mit \0 terminiert wird.

    Beim Einlesen muss natürlich auch irgendwo Enter abgefangen werden, entweder ein zusätzliches Byte im Buffer, oder Enter schon verarbeiten, ohne es in den Buffer zu schreiben. Je nach dem, wie es gecoded ist...


  6. #6
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    Nene, die DOS-Kommandozeile ist mit 13 (Enter) terminiert.

  7. #7
    at
    Guest

    Post

    Also wenn ich net ganz falsch liege habt ihr beide recht!

    Ein String wird wird mit \0 abgeschlossen...
    Und die Enter Taste eintspricht 13h.

    hat aber nix mit einander zutun!
    soviel was mir mal mein wissen sagt!

    cu Snake


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. [php] Vergleich
    Von dschungelratte im Forum PHP, Perl und ASP
    Antworten: 7
    Letzter Beitrag: 08.07.2005, 13:52
  2. Vergleich von char* und std::string
    Von the-WebCoder im Forum C / C++
    Antworten: 4
    Letzter Beitrag: 11.03.2003, 20:21
  3. [SQL] Like-Vergleich ...
    Von dschungelratte im Forum Datenbanken
    Antworten: 4
    Letzter Beitrag: 30.01.2002, 17:59
  4. String-Problem... Wie kann ich einen String nach einem @ durchsuchen?
    Von the-WebCoder im Forum PHP, Perl und ASP
    Antworten: 1
    Letzter Beitrag: 06.07.2001, 22:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •