[RISOLTO] Input di una parola

di il
16 risposte

[RISOLTO] Input di una parola

Salve a tutti.

Vorrei sapere se è possibile digitare in input una parola ad esempio il proprio nome e poi rivederlo stampato in output.

p.s. uso l'assembly 8086

Grazie

16 Risposte

  • Re: [RISOLTO] Input di una parola

    Sì, è possibile.
  • Re: [RISOLTO] Input di una parola

    Interessante...
    Qualcuno potrebbe spiegarmi come procedere?
  • Re: [RISOLTO] Input di una parola

    Usa le funzioni della INT 21h del DOS ... in particolare la AH=0Ah per l'input e la AH=09h per l'output
  • Re: [RISOLTO] Input di una parola

    Mmm...ok però adesso mi sorge un dubbio...
    in che registro si salva il valore in input, nel senso che se digito un carattere termina in AL in questo caso?

    Ecco il programma che ho scritto fino ad ora:
    DATA SEGMENT PUBLIC
    	
    	PAROLA DB ?
    	DOM DB "Digita il tuo nome: ",'$'
    	RIS DB "Il tuo nome e': ",'$'
    	ACAPO DB "",10,13,'$'
    
    DATA ENDS
    
    CODE SEGMENT
    
    	ASSUME CS:CODE,DS:DATA
    
    INIZIO:
    
    	MOV AX,DATA
    	MOV DS,AX
    	
    	
    	MOV AH,09H
    	LEA DX,DOM
    	INT 21H
    	
    	MOV AH,0AH
    	INT 21H
    	
    
    
    CODE ENDS
    END INIZIO
    E' corretto l'input fino a questo punto? La variabile parola che conterrà il nome digitato?
  • Re: [RISOLTO] Input di una parola

    No ... non è corretto (non l'hai provato?) ...

    Dove hai studiato l'uso della funzione di input ah=0Ah ?
  • Re: [RISOLTO] Input di una parola

    Il programma non lo ho provato perché mi sono bloccato li dato che non sapevo come proseguire.
    In ogni caso nessuno mi ha mai spiegato AH = 0Ah.
    A scuola abbiamo solo visto 09h,01h,02h... sono io che sono curioso e vorrei approfondire almeno qualcosa...
  • Re: [RISOLTO] Input di una parola

    E' inutile mostrarti del codice ... cerca la documentazione della funzione 0Ah e studiala ... la trovi ovunque su internet e non è difficile ... provaci, se vuoi imparare.
  • Re: [RISOLTO] Input di una parola

    Allora dopo qualche ricerca ho trovato un file pdf con tutti i vare le varie funzioni di AH abbinati agli interrupt, fra queste c'era anche 0ah.
    Ho guardato l'esempio cercando di capirlo e ho provato a rifarlo a pc.
    
    DATA SEGMENT PUBLIC
    	DIM EQU 20
    	DOM DB "digita il tuo nome: ",'$'
    	RISP DB "Nome: ",10,13,'$'
    	ACAPO DB "",10,13,'$'
    	
    DATA ENDS ;fine dichiarazione delle variabili
    
    CODE SEGMENT
    
    	ASSUME CS:CODE,DS:DATA
    	
    INIZIO:
    
    	MOV AX,DATA
    	MOV DS,AX
    
    	MOV AH,09H
    	LEA DX,DOM
    	INT 21H
    	
    	MOV DX,OFFSET BUFFER
    	MOV AH,0AH 
    	INT 21H
    	
    	BUFFER DB 10,?, 10 DUP(' ') 
    	
    	;STAMPA DELLA PAROLA IN INPUT
    	
    	MOV AH,09H
    	LEA DX, ACAPO
    	INT 21H
    	
    	
    	XOR BX,BX
    	MOV BL,BUFFER[1]
    	MOV BUFFER[BX+2],'$'
    	MOV AH,09H
    	MOV DX, OFFSET BUFFER+2
    	INT 21H
    	
    MOV AH,4CH
    INT 21H
    
    CODE ENDS
    END INIZIO
    
    l'esempio non è proprio così in realtà in ogni caso ci sono alcune parti che non riesco a capirle...
    Prima di tutte perchè l'operazione XOR di BX.
  • Re: [RISOLTO] Input di una parola

    La XOR di un registro con sé stesso è usata per azzerare il registro velocemente.
    Equivale a

    BX=0
  • Re: [RISOLTO] Input di una parola

    Interessante... questa non la sapevo!

    Poi mi potresti spiegare anche le mov seguenti?

    Queste nello specifico:

    MOV BL,BUFFER[1]
    MOV BUFFER[BX+2],'$'


    Inoltre scusa la mia ignoranza ma non si aggiunge "+2" quando un array è formato da celle di memoria DW?
  • Re: [RISOLTO] Input di una parola

    Cosa non capisci di quelle MOV ?
  • Re: [RISOLTO] Input di una parola

    Il perché spostare in BX buffer indicando fra parentesi quadre un valore numerico.
    Ciò non capita quando ci sono gli array e da come ho capito questo buffer è un array di caratteri...
    In ogni caso non capisco perché spostare proprio quelle celle di buffer in bx
  • Re: [RISOLTO] Input di una parola

    Devi ragionare su come è fatto quel buffer.

    Il primo byte è il numero massimo di caratteri accettabili nella stringa, il secondo conterrà il numero effettivo di caratteri digitati e solo dal terzo comincia la stringa vera e propria.

    Quindi BUFFER[1] si riferisce al secondo byte, la lunghezza effettiva della stringa in input
  • Re: [RISOLTO] Input di una parola

    Un buffer non è una successione di dati contenuti in un array?

    Ritornando al programma quindi BUFFER[BX+2],'$' serve per richiamare quindi la parte effettiva che contiene la stringa aggiungendole il segno '$' così che la stringa abbia punto di chiusura giusto?
Devi accedere o registrarti per scrivere nel forum
16 risposte