Hirdetés

Új hozzászólás Aktív témák

  • AlapVaj

    csendes tag

    válasz AlapVaj #299 üzenetére

    Végre megvan a tökéletes algoritmus! Nem 5 perc volt kitalálni (nem ismétléses permutációra). Viszont még mindig nagy a gond, mivel kéne helyesbítenem az "XX"-t :(
    Valakinek nincs ötlete? Most így látva a teljes lényegi, kódot könnyebb, gondolom.

    XOR CX,CX ; Kinullázzuk
    XOR AX,AX ; Kinullázzuk
    XOR BX,BX ; Kinullázzuk

    ; 1. vizsgálat:

    CIKLUS:

    MOV AH, [szo1 + BX] ;Betöltjök AH-be a szo1 0,1,2,3....39ik bytját
    MOV AL, [szo2 + XX] ;Betöltjök AL-be a szo2 0,1,2,3....39ik bytját
    CMP AH, 1 ; Mindig megnézzük utolsó lépés e ez.
    JE CIKLUS2 ; Elugrunk a másik CIKLUSBA

    CMP AH,AL ; Összehasonlítjuk a tartalmat
    JE NULL ; Ha 0, tehát egyenlők
    JNE ROSSZ ; Ha különböznek

    ROSSZ: ; Ha nem egyezik a két betű
    CMP AL, 1
    JE HELYESBIT
    INC XX ; Növeljük a regisztert
    JMP CIKLUS ; Ugrunk a következő karakterre

    HELYESBIT:
    XOR XX,XX ; 0-ra álítjuk, hogy előröl induljon
    INC BX ; Az első szó második lépésére
    JMP CIKLUS

    NULL:
    MOV szo1[BX], '0' ; Betesszük a szo1 BX-ben tárolt helyére a '0' értéket
    MOV szo2[DX], '0' ; Betesszük a szo2 CX-ben tárolt helyére a '0' értéket
    INC BX ; Novelunk
    INC XX ; Novelunk
    JMP CIKLUS

    ;2. vizsgálat:

    XOR CX, CX ; Kinullázzuk
    XOR AX,AX ; Kinullázzuk
    XOR BX,BX ; Kinullázzuk

    CIKLUS2:
    MOV AH, [szo2 + BX] ;Betöltjök AH-be a szo1 0,1,2,3....39ik bytját
    MOV AL, [szo1 + XX] ;Betöltjök AL-be a szo2 0,1,2,3....39ik bytját

    CMP AH, 1 ; Mindig megnézzük utolsó lépés e ez.
    JE DONTES: ; Elugrunk a másik CIKLUSBA

    CMP AH,AL ; Összehasonlítjuk a tartalmat
    JE NULL2 ; Ha 0, tehát egyenlők
    JNE ROSSZ2 ; Ha különböznek

    ROSSZ2: ; Ha nem egyezik a két betű
    CMP AL, 1
    JE HELYESBIT2
    INC XX ; Növeljük a regisztert
    JMP CIKLUS2 ; Ugrunk a következő karakterre

    HELYESBIT2:
    XOR XX,XX ; 0-ra álítjuk, hogy előröl induljon
    INC BX ; Az első szó második lépésére
    JMP CIKLUS2

    NULL2:
    MOV szo2[BX], '0' ; Betesszük a szo1 BX-ben tárolt helyére a '0' értéket
    MOV szo1[DX], '0' ; Betesszük a szo2 CX-ben tárolt helyére a '0' értéket
    INC BX ; Novelunk
    INC XX ; Novelunk
    JMP CIKLUS2

Új hozzászólás Aktív témák