[help] Procedura in assembler

di il
6 risposte

[help] Procedura in assembler

Ciao a tutti ragazzi !!! Sono nuovo del forum e mi servirebbe una mano per dei programmini (penso molto semplici ma che a me risultano un pò di difficile comprensione ) in assembler (asm 8086) .
Qualcuno molto gentile potrebbe scrivermi la traccia del codice per realizzare questa procedura:

"Scrivere una procedura assembler il cui protitopo C sia:
int f( char *s, char c );
e che restituiisca il numero di occorrenze del carattere ‘c’ all’interno della stringa ‘s’. "


Grazie mille in anticipo!!!!

6 Risposte

  • Re: [help] Procedura in assembler

    Ciao,

    Un qualcosa del genere potrebbe andare.
    Supposto che i parametri tu li abbia pronti nei registri DS:SI (la stringa) e BL (il carattere), e che tu abbia già calcolato ed inserito in CX la lunghezza della stringa:
       XOR DX,DX 
    ciclo:
       LODSB
       CMP AL,BL
       JNZ continua
       INC DX
    continua:
       LOOP ciclo
    Al termine, in DX avrai il numero di caratteri c contenuti nella stringa s.

    Ciaociao
  • Re: [help] Procedura in assembler

    Grazie mille bottomap mi sei stato di grande aiuto!!!
    Scusa se abuso della tua disponibilità ma avrei un' altra procedura che non riesco a fare ed è questa:

    "Scrivere una procedura assembler il cui protitopo C sia:
    int f( char *s, char *t );
    e che restituisca 1 se tutti i caratteri di s sono anche caratteri di t, e 0 altrimenti."

    Puoi aiutarmi ? grazie mille ciaoooooo
  • Re: [help] Procedura in assembler

    Ciao,

    Questa procedura può essere un po' più complicata. Sostanzialmente s sarebbe un insieme di caratteri (sottoforma di stringa "abcdxyz") e tu vuoi verificare se t comprenda tutti i suoi caratteri (e, al limite altri).

    Se puoi utilizzare la procedura precedente, si tratterebbe di chiamarla, per ognuno dei caratteri di s, su t... se anche una sola delle chiamate ritorna 0 in DX (il numero di occorrenze) c'è un carattere di s che non si trova in t.
    Modificando leggermente la procedura precedente puoi fare in modo che essa cerchi solo se il carattere esiste nella stringa (e non ne conti il numero di occorrenze), ritornando 0 o 1.

    Ciaociao
  • Re: [help] Procedura in assembler

    Grazie... ecco l'unica cosa che non capisco è questa istruzione
     xor dx,dx
    cosa fa?
  • Re: [help] Procedura in assembler

    bigboss_dv ha scritto:


    Grazie... ecco l'unica cosa che non capisco è questa istruzione
     xor dx,dx
    cosa fa?
    svuota il registro dx
  • Re: [help] Procedura in assembler

    Come dice sikshady azzera dx (se osservi bene come funziona lo xor è evidente).
    E' sostanzialmente analoga ad una mov dx,0 (dal Pentium in poi ha alcuni vantaggi per l' accoppiabilità e tende quindi ad essere leggermente più veloce all'interno dei cicli)

    Ciaociao
Devi accedere o registrarti per scrivere nel forum
6 risposte