Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    3

    Procedura con i puntatori [Assembly]

    Salve a tutti,ho cercato la sezione relativa alle presentazioni ma non l'ho trovata quindi mi scuso se mi presento qui. Sono francesco,19 anni,e studio ingegneria elettronica e informatica. Sono al secondo anno e alle prese con l'8086 della intel. Provavo a svolgere questa traccia Realizzare in un linguaggio assemblativo una procedura che riceve in ingresso il puntatore a una stringa di caratteri terminata da 0 (ASCII NUL) e che restituisca la lunghezza della stessa. La procedura dovrà essere richiamabile da un programma esterno e ricevere il numero n come parametro variabile attraverso lo stack. Ho provato a elaborare qualcosa e vorrei un vostro parere in merito al mio procedimento.


    codice:
    
    
    codice:
    PUSH   BP
    MOV    BP,SP
    MOV    DX,DI ; salva DI
    MOV    AX,DS
    MOV    ES,AX
    MOV    DI,Word Ptr [BP+04]         ;puntatore alla stringa
    XOR    AX,AX                            ;azzero AX
    MOV    CX,0FFFFH                     ;il massimo numero rappresentabile 65536
    REPNE  SCASB                          ; scansiono la stringa fino a cercare la fine
    NOT    CX
    DEC    CX
    XCHG   AX,CX                           ;sposto il valore di ritorno in ax    
    MOV    DI,DX
    POP    BP                                 ;ripristino bp
    RET

    Ci sono errori? avreste altri modi di svolgere il tutto? Grazie a tutti!
    Ultima modifica di LeleFT; 08-07-2014 a 13:49 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Credo che manchi il settaggio della direzione (CLD) e il salvataggio di alcuni registri sullo stack per evitare problemi durante l'uso con altre funzioni. E qualche scambio di riga per ottimizzare le pipelines
    Ultima modifica di linoma; 09-07-2014 a 08:36
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Direi che alla fine dovrebbe essere

    codice:
    mov	sp, bp
    pop 	bp
    


    P.S. Bentrovato Francesco anche qui ... come ti dico sempre, l'hai provato il codice ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Direi che alla fine dovrebbe essere

    codice:
    mov    sp, bp
    pop     bp
    


    P.S. Bentrovato Francesco anche qui ... come ti dico sempre, l'hai provato il codice ?
    Ciao oregon! Comunque ho provato il codice usando un output a video ma non funziona alla fine ho archiviato questo esercizio svolgendolo con la ricerca del carattere null incrementando man mano un contatore come mi suggeristi per quell'altro esercizio.. Penso sia la cosa più semplice..Oregon una domanda,hai materiale sui puntatori? Qualche esercizio svolto? qualsiasi cosa

  5. #5
    ciao a tutti!

    scusa oregon ma non ho capito perchè
    mov sp, bp
    pop bp

    in questo caso non è necessario siccome lo sp avrà lo stesso valore del bp fino alla fine della procedura

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì maluz, è vero per il caso specifico. Ma la mia voleva essere un'indicazione "generica" per metterlo al riparo nel caso dovesse usare altro codice.

    Cesc ... no non ho materiale del genere. Ma penso che con una ricerca troverai mille mila esempi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    sisi immaginavo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Sì maluz, è vero per il caso specifico. Ma la mia voleva essere un'indicazione "generica" per metterlo al riparo nel caso dovesse usare altro codice.

    Cesc ... no non ho materiale del genere. Ma penso che con una ricerca troverai mille mila esempi.
    Ho cercato,purtroppo non capisco questa discriminazione nei confronti dell'8086 Per c++ e java si trova materiale in tutte le salse,peccato che l'8086 non goda della stessa considerazione e diffusione Vi saluto,e alla prossima!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.