Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Come inserire valori da tastiera utilizzandoli nel programma?
Forum - Altri Linguaggi - Come inserire valori da tastiera utilizzandoli nel programma?

Avatar
ludo90 (Normal User)
Newbie


Messaggi: 2
Iscritto: 16/07/2011

Segnala al moderatore
Postato alle 10:24
Domenica, 17/07/2011
Scusate ma ho iniziato da poco ad utilizzare l'assembly e ho molti dubbi
Ad esempio ho fatto un programma che calcola la potenza: in questo caso 5^3

.model small
.stack 200h
.code
start:
mov cx,03  ;esponente
sub cx,1
mov al,05  ;base
mov dl,05
rit:
mul dl
loop rit
mov dl,al
mov ah,2h
int 21h
mov ax,4c00h
int 21h
end start

L'ho provato e funziona,ma se volessi inserire base ed esponente da tastiera e poi utilizzarli come dovrei fare?
Ho provato a fare in questo modo:
mov ah,7h
int 21h
mov bl,al
Ciò che ho inserito da tastiera dovrebbe essere in al e quindi spostandolo in un altro registro,dovrei poterlo usare durante il programma,ma nn funziona.Qual è il problema? Inoltre per l'esponente come potrei fare dato che il registro di destinazione è cx? non penso di poter fare mov cx,al.
Grazie in anticipo

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 10:48
Domenica, 17/07/2011
nel registro ah devi mettere il seguente valore 07h. Questo è il "comando" per poter eseguire l'input da tastiera. Maggiori informazioni sul web: http://www.alessioluffarelli.it/guide_tutorial/basso_livel ...

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6385
Iscritto: 03/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:02
Domenica, 17/07/2011
E' meglio usare la subfunction 01h per ottenere un solo carattere e vederlo oppure la subfunction 0Ah per avere una stringa intera ad un indirizzo specifico.

Quello che ottieni nel registro (o in memoria) è il codice ASCII del tasto.
Se scrivi 2 nel registro otterrai il valore 32h

Prima di usarlo devi trasformarlo in decimale con una

and al,0fh

In maniera analoga con l'input di una stringa per ogni carattere nel buffer di input.

Grazie funziona,e se da tastiera volessi inserire una doppia cifra? cioè fare 14+14,come posso fare? me ne fa inserire una sola per ogni input. - ludo90 - 17/07/11 11:30
Ho sempre il problema che poi quello che ho in al(inserito da tastiera) non posso metterlo in cx che sarebbe l'esponente e sono stato costretto a farlo cosi? può provare problemi metterlo in cl? e se si come posso fare?.model small .stack 200h .code start: mov ah,7h int 21h and al,0fh mov cl,al sub - ludo90 - 17/07/11 11:46
Per una stringa di più di un carattere, ti ho già detto, devi usare la subfunction 0Ah (ma avrai una sequenza di caratteri ASCII ... ad esempio per 14 avrai 31h 34h da trasfornare in decimale) - nessuno - 17/07/11 13:44
Per la faccenda di CX, puoi spostare il valore in CL e azzerare CH con mov ch,0 - nessuno - 17/07/11 13:45
Scusate io c'ho provato per quel che riguarda la stringa ma non mi è stato mai speigato :.model small .stack 100h .code start: mov ah,0Ah int 21h mov dl,al mov ah,2h int 21h mov ax,4c00h int 21h end start Ho fatto una cosa del genere ma penso che sia tutto sbagliato,potreste aiutarmi? - ludo90 - 17/07/11 23:51
Scusa, ma tu studi l'assembly ? Con quale documentazione ? Da dove prendi le informazioni necessarie a questo tipo di programmazione ? - nessuno - 18/07/11 09:34
Ho iniziato a studiarlo da tre giorni e studio da internet..non ho documentazione in particolare,perchè? - ludo90 - 18/07/11 10:37
Perché? Perché non è possibile scrivere programmi assembly senza studiare la documentazione per un po' di tempo ! - nessuno - 18/07/11 11:06
Quello che penso pure io..ma non lo sto studiando per passatempo ma per l'università e siccome quest'anno ci sono stati problemi l'università è iniziata in ritardo e adesso dopo domani ho l'esame..quindi non ho scelta.. - ludo90 - 18/07/11 12:31
A maggior ragione ...Se il professore (a torto o a ragione) ti chiede qualcosa, tu per dopodomani, anche con l'aiuto del forum, non potrai mai rispondere. - nessuno - 18/07/11 13:08


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM