Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    16

    [Assembly8086] acquisizione numero

    devo acquisire un numero che può andare da 0 a 65536....
    non ho ancora scritto niente di codice...
    chiaramente devo acquisire in input il valore e confrontarlo prima con 0 e poi con 65536...o sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    L'input viene effettuato tramite una stringa ASCII (con la funzione del DOS apposita).

    La stringa deve essere poi convertita in binario in un registro o può rimanere nel buffer in ASCII?

    P.S. In ogni caso, forse il valore deve essere compreso tra 0 e 65535 estremi inclusi ... giusto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    16
    Originariamente inviato da oregon
    L'input viene effettuato tramite una stringa ASCII (con la funzione del DOS apposita).

    La stringa deve essere poi convertita in binario in un registro o può rimanere nel buffer in ASCII?

    P.S. In ogni caso, forse il valore deve essere compreso tra 0 e 65535 estremi inclusi ... giusto?
    sisi
    potresti aiutarmi nella realizzazione?
    domani ho un esame e potrebbe servirmi

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da kaitokid
    sisi
    Sisi ... cosa? Ti ho fatto una domanda ... non puoi dire sisi ...

    potresti aiutarmi nella realizzazione?
    domani ho un esame e potrebbe servirmi
    Certo che ti posso aiutare ... ma tu comincia a scrivere il codice che serve all'input di una stringa di max 5 caratteri (come nell'esempio precedente ...).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    16
    Originariamente inviato da oregon
    Sisi ... cosa? Ti ho fatto una domanda ... non puoi dire sisi ...



    Certo che ti posso aiutare ... ma tu comincia a scrivere il codice che serve all'input di una stringa di max 5 caratteri (come nell'esempio precedente ...).
    era un si,sono compresi i 2 estremi ....


    #MAKE_COM#
    ORG 100h

    ;INSERIMENTO
    MOV DX,offset STR_MAX
    MOV AH,0ah
    int 21h

    MOV CL, STR_CNT

    RET

    ;------------VARIABILI----------
    STR_MAX DB 5
    STR_CNT DB 0
    STR_DAT DB 5 DUP(?)

    ecco
    ora non so andare avanti

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il numero massimo di caratteri da prevedere è 6 (e non 5) perchè devi pensare che viene scritto anche il valore ASCII 0D alla fine della stringa (il tasto return).

    Tuttavia questo non viene contato e se pressi solamente invio senza inserire dati, il primo carattere sarà 0D ma il valore inserito in CL sarà 0.

    Ovviamente, se il valore di CL è zero, vuol dire che non è stato inserito alcun carattere e quindi potresti controllarlo per indicare che c'e' stato un errore.

    Quindi provvederai ad azzerare il valore di un registro, ad esempio DX, per inserirci il valore binario finale dopo la conversione

    MOV DX,0

    Se non è così, inserisci nel registro indice BX l'indirizzo della parte dati della stringa e accedi al carattere con

    MOV BX, OFFSET STR_DAT

    MOV AL, [BX]

    a questo punto

    1) dovrai confrontare il valore di AL con l'ASCII del carattere '0' (non deve essere minore) e con l'ASCII del carattere '9' (non deve essere maggiore)

    2) se i confronti precedenti sono andati a buon fine, devi convertire in binario il valore ASCII presente in AL, eseguendo una operazione AND per azzerare il bit 5

    3) a questo punto dovrai moltiplicare per 10 il valore di DX e aggiungere il valore di AL appena convertito

    Adesso aumenterai il valore di BX e ripeterai in un loop (usando CL come contatore), dall'istruzione MOV AL, [BX]

    Come vedi, non è semplicissimo per chi non lo sa fare e ha un esame domani ... forse ti ci voleva un po' piu' di tempo e studio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.