Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [assembly 8086] acquisizione da tastiera

    Ciao raga, vorrei fare una semplice acquisizione da tastiera usando l'emulatore 8086, (su Windows).
    Sto usando l'istruzione INT 21h / AH=01h.
    Ma quando do in Input il mio numero [4] , nel registro AL, mi trovo il risultato [34]. Dov'è l'errore???
    codice:
        MOV     AH, 01h
        INT     21h

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Nessun errore ... i computer funzionano così (!) ... 34 esadecimale e' il codice ASCII del carattere '4' ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    HAI RAGIONE, ho risolto sottraendo al registro 30, per avere la visualizzazione del numero in esadecimale.
    Sto facendo ora, una semplice somma di 2 numeri.
    Ma , quando uso INT21 / AH=02h per l'output, non mi trovo, perche' mi stampa un'altro carattere, che non ha nulla a ke fare con il risultato.
    codice:
        MOV     AH, 01h
        INT     21h
        SUB     AL, 30h  ;SOTTRAGGO PER AVERE IL NUMERO DATO IN INPUT IN ESDECIMALE
        MOV     DL, AL
        INT     21h
        SUB     AL, 30h  ;SOTTRAGGO PER AVERE IL NUMERO DATO IN INPUT IN ESADECIMALE
        ADD     DL, AL
        MOV     AH, 02h
        INT     21h

  4. #4
    scusa ho risolto, sono stato un po' ingenuo

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quando lo visualizzi devi trasformare il risultato in ASCII ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Infatti, ho fatto nel seguente modo:
    codice:
        MOV     AH, 01h
        INT     21h
        SUB     AL, 30h  ;SOTTRAGGO PER AVERE IL NUMERO DATO IN INPUT IN ESADECIMALE
        MOV     DL, AL
        INT     21h
        SUB     AL, 30h  ;SOTTRAGGO PER AVERE IL NUMERO DATO IN INPUT IN ESADECIMALE
        ADD     DL, AL
        MOV     AH, 02h
        ADD     DL, 30h   ;  aggiungo per avere il risultato in ASCII  
    INT     21h
    Ma se ad esempio faccio l'addizoone tra 8+2, mi stampa sul video i due punti ":", perche la loro somma corrisponde al loro codice ASCII.
    E come devo fare se vorrei avere come risultato 10???

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi trasformare il risultato dell'addizione in BCD e dopo le singole cifre del risultato in ASCII
    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.