Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [Assembly 8086] acquisizione

    Ciao raga, come posso far acquisire un numero di piu' cifre in assembly usando la tastiera.
    Avrei pensato di inserire far inserire il numero in un registro fino a quando non premo invio.
    Come devo fare?? mi potete aiutare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Esiste la sottofunzione 0x0A della INT21 per l'input da tastiera ...

    http://heim.ifi.uio.no/~stanisls/helppc/int_21-a.html
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    cioe' la sintassi sarebbe:
    codice:
    MOV     AH, 0Ah
    INT     21h
    ; ma poi come devo fare per DS:DX
    DSX = pointer to input buffer of the format:

    cosa significa :
    puntatore al buffer di ingresso del formato???

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    DS : DX deve essere caricato prima di chiamare la funzione.

    DS deve essere impostato uguale al valore del segmento dei dati, dove stanno le tue variabili.

    DX deve essere il puntatore ad un area fatta, ad esempio, in questo modo

    codice:
    DBuf DB  20h
    KCnt DB  00h
    Buff  DB  00h DUP(20h)
    In questo modo indichi di effettuare un input di massimo 20h caratteri (compreso il tasto invio) all'interno del buffer che parte da Buff. Il numero di caratteri effettivamente pressati sono in KCnt.

    Mi sembra tutto abbastanza chiaro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    dici cosi:
    codice:
    DSEG    SEGMENT 'DATA'
    
    DBuf   DB  20h
    KCnt   DB  00h
    Buff   DB  00h DUP(20h)
    
    DSEG    ENDS
    
    SSEG    SEGMENT STACK   'STACK'
            DW      100h    DUP(?)
    SSEG    ENDS
    
    CSEG    SEGMENT 'CODE'
    
    ;*******************************************
    
    START   PROC    FAR
    
    ; Store return address to OS:
        PUSH    DS
        MOV     AX, 0
        PUSH    AX
    
    ; set segment registers:
        MOV     AX, DSEG
        MOV     DS, AX
        MOV     ES, AX
    
    
    ; TODO: add your code here!!!!
    
        MOV     AH, 0Ah
        INT     21h

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Manca solo l'indirizzo di DBuf in DX prima della chiamata ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    e come faccio a metterlo se DX e' a 16 bit e DBuff e' a 8 bit???

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Salvatore_91
    e come faccio a metterlo se DX e' a 16 bit e DBuff e' a 8 bit???
    NON il valore, ma l' INDIRIZZO ... (che e' a 16 bit) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ah scusami.
    Fino ad adesso non ho mai operato con gli indirizzi, non so proprio come farlo

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... dovresti studiarlo ... e' fondamentale ...

    LEA DX, DBuf
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.