Oppure

Loading
20/02/10 18:52
mistervox
Ciao ragazzi, oggi mi è stato assegnato un programma per casa da fare in assembly che stampi semplicemente un numero decimale a due cifre, il problema è che il prof ci ha spiegato solo com fare se il numero è compreso tra 0 e 9, perchè basta sommare al registro 30h, e poi uso 01h e l'interrupt se il numero è a due cifre non so come fare.
Se ho capito giusto con questo codice mi stampa solo la cifra 1 di pippo, che vale 15.
Questo è il codice:
;****************************************************************************************
; XXXX
;****************************************************************************************

.model small 
.stack
.data
	; <<inserire qui le dichiarazioni delle variabili>>
	pippo db 15
	
.code

inizio:
	mov ax, @data     ; imposto il segmento dati
	mov ds, ax
	
	; <<inserire qui le istruzioni del programma>>
	
	mov al,pippo				; restituisco il controllo al DOS con codice 0
	mov ah,01h
	add ah,30h
	mov ah,pippo
	int 21h
	
end inizio

Potete gentilmente spiegarmi come fare per stampare due cifre? Grazie :)
Ultima modifica effettuata da mistervox 12/11/13 22:20
aaa
20/02/10 19:07
nessuno
Postato originariamente da mistervox:
... spiegarmi come fare ...


Devi dividere il valore per 10, convertire il risultato in ASCII (aggiungendo il 30h) e visualizzare il risultato; poi prendi il resto della divisione, lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.
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à.
20/02/10 19:12
mistervox
Postato originariamente da nessuno:

Postato originariamente da mistervox:
... spiegarmi come fare ...


Devi dividere il valore per 10, convertire il risultato in ASCII (aggiungendo il 30h) e visualizzare il risultato; poi prendi il resto della divisione, lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.

Domani provo a farlo e poi ti so dire. Grazie.
aaa
25/02/10 20:24
mistervox
Ragazzi ecco la consegna completa dell'esercizio: Produrre la pseudocodifica per l'algoritmo che stampa a video un numero intero positivo di n cifre, una cifra per volta.

Come posso fare, io devo stampare una cifra alla volta.
Io avevo pensato così, dato che devo solo produrre la pseudocodifica avevo pensato ad una cosa del genere come mi è stato detto alcuni post sopra.

quoto: Devi dividere il valore per 10
Se io acquisisco 470
divido 470 per 10 e ottengo 47

quoto: convertire il risultato in ASCII (aggiungendo il 30h)
ora non posso aggiungere 30h perchè 47 ha due cifre

quoto: visualizzare il risultato
qua non ci sono problemi uso int 21h

quoto: poi prendi il resto della divisione
come faccio? :-|

quoto: lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.
add 30h e int 21h, ma se è un numero da più cifre non si può fare
aaa
25/02/10 20:28
nessuno
Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...
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à.
25/02/10 20:35
mistervox
Postato originariamente da nessuno:

Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...

All'inizio non sapevo la consegna esatta, ora che si sa potete aiutarmi?
aaa
25/02/10 20:39
nessuno
E dove sta questo valore a n cifre?
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à.
25/02/10 20:45
mistervox
Postato originariamente da mistervox:

Postato originariamente da nessuno:

Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...

All'inizio non sapevo la consegna esatta, ora che si sa potete aiutarmi?

Siamo proprio alle basi, non devo nemmeno inserirlo da fuori il numero lo inserisco direttamente dal sorgente, ora il professore non spiega nulla, quindi non saprei dove metterelo.
Io so che per stampare una cifra aggiungo 30h alla cifra, la sposto in dl e col servizio 02h di int 21 la stampo, ma se ho un numero dentro ad un registro di più cifre ad esempio ho il numero 15 come faccio a stampare una cifra alla volta?
aaa