Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Architettura degli elaboratori
 procedura HEX -> stampa
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 21/01/2005 : 21:53:29  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
chi mi da gentilmente una procedura che stampa a video dei valori esadecimali presenti in un vettore?

Spero che qualcuno sia così gentile.. vi ringrazio in anticipo





feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 22/01/2005 : 06:19:39  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato  Rispondi Quotando
Bi_Asc proc near ; Subroutine che converte i due hexdigit XY di un byte
push cx
push dx ; in due caratteri ASCII
mov bh,0 ; Input XY in BL - Out ASCII(X) in BH , ASCII (Y) in BL
push bx
and bx,0fh
add bx,offset numeri
mov dl,[bx]
pop bx
and bx,0f0h
mov cl,4
shr bx,cl
add bx,offset numeri
mov dh,[bx]
mov bx,dx
pop dx
pop cx
ret

questa ti dovrebbe restituire due caratteri ascii corrispondenti al valore in esadecimale del numero che gli passi
poi il resto e' semplice

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 22/01/2005 : 08:51:19  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato  Rispondi Quotando
ppinux non ho capito bene la domanda.

Tu hai un vettore che continene dei valori in esadecimale o in base 10?
E vuoi stamparli a video sempre in esadecimale o no?

Torna all'inizio della Pagina

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 22/01/2005 : 17:16:06  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da fabbattista

ppinux non ho capito bene la domanda.

Tu hai un vettore che continene dei valori in esadecimale o in base 10?
E vuoi stamparli a video sempre in esadecimale o no?



forse è meglio se spiego il problema nei dettagli.

1-ho un vettore di valori esadecimali
2-devo stampare a video gli elementi del vettore
3-devo effettuare la somma di tutti gli elementi del vettore
4-devo stampare a video la somma

premessa: ho effettuato il trasferimento presso informatica da circa un mese, quindi l'assembler l'ho studiato tutto da solo

il dubbio principale è questo:
posso lavorare su dei valori esadecimali (es nel punto 3) oppure devo convertire tutti i valori in decimale => efettuare la somma => convertirla in esadecimale => stamparla

per quanto riguarda la stampa del vettore: devo effettuare delle conversioni?





Modificato da - pinux in data
Torna all'inizio della Pagina

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 22/01/2005 : 17:17:44  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da feeb

Bi_Asc proc near ; Subroutine che converte i due hexdigit XY di un byte
push cx
push dx ; in due caratteri ASCII
mov bh,0 ; Input XY in BL - Out ASCII(X) in BH , [cut]
questa ti dovrebbe restituire due caratteri ascii corrispondenti al valore in esadecimale del numero che gli passi
poi il resto e' semplice



senti ho creato un ciclo
all'interno:
carico vet[i] in BL
chiamo bi_asc
stampo bx

ma nn mi funziona...
ho sbagliato qualcosa?





Modificato da - pinux in data
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 23/01/2005 : 21:03:23  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da pinux

forse è meglio se spiego il problema nei dettagli.

1-ho un vettore di valori esadecimali
2-devo stampare a video gli elementi del vettore
3-devo effettuare la somma di tutti gli elementi del vettore
4-devo stampare a video la somma

premessa: ho effettuato il trasferimento presso informatica da circa un mese, quindi l'assembler l'ho studiato tutto da solo

il dubbio principale è questo:
posso lavorare su dei valori esadecimali (es nel punto 3) oppure devo convertire tutti i valori in decimale => efettuare la somma => convertirla in esadecimale => stamparla

per quanto riguarda la stampa del vettore: devo effettuare delle conversioni?



Allora vediamo un po'. Puoi tranquillamente lavorare con gli esadecimali e farci tutte le operazioni che vuoi.

Per quanto riguarda la stampa in esadecimale, il codice che ti ha dato feeb è solo un pezzo di un programma piu' grosso. Se hai riscritto il codice di feeb senza adattarlo al tuo è normale che non funzioni.

In ogni caso si, devi effettuare delle conversioni. Il byte che contiene il tuo valore lo devi convertire in due byte corrispondenti ai codici ascii delle cifre del numero esadecimale da stampare.

Torna all'inizio della Pagina

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 23/01/2005 : 23:23:21  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
Citazione:

Allora vediamo un po'. Puoi tranquillamente lavorare con gli esadecimali e farci tutte le operazioni che vuoi.



scusate per la totale ignoranza... ma l'assemblatore come fa a capire che stiamo trattando dei valori esadecimali?
Il vettore lo devo definire in questa maniera:

VET DB 09,0D,15,1A,1C

oppure

VET DB 09h,0Dh,15h,1Ah,1Ch

o in altra maniera?




Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 24/01/2005 : 07:26:06  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato  Rispondi Quotando
Pinux, la seconda che hai detto
Torna all'inizio della Pagina

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 24/01/2005 : 10:20:09  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da fabbattista

Pinux, la seconda che hai detto



ok... qua ci siamo...

per stampare il vettore ho fatto una cosa del genere
carico tutti i valori esadecimali (byte) di VET in VET2 (word)

VET DB 09h,0Dh,1Ah,1Bh,1Ch
VET2 DW 5 DUP (?)

LEA SI, VET
MOV CL, 5
MOV DI, 2
RIPETI: MOV BL, [SI]
CALL BI_ASC
MOV AH, BL
INC SI
MOV BL, [SI]
CALL BI_ASC
MOV AL, BL
MOV VET2[DI], AX
ADD DI, 2
LOOP RIPETI

è stato così gentile fino ad ora.. mi potrebbe dire anche in questo caso dove sbaglio?
grazie!!





Modificato da - pinux in data
Torna all'inizio della Pagina

fabbattista
utente SEMPRE giovane

Gecko


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 24/01/2005 : 12:03:31  Mostra Profilo  Visita l'Homepage di fabbattista Invia a fabbattista un Messaggio Privato  Rispondi Quotando
Dunque, non ho capito perke' sposti da vet (byte) a vet2 (word). Se mi fai leggere la tua procedura di stampa forse mi è piu' chiaro. In ogni caso:

1. Perche' DI lo fai partire dal valore 2?
2. Poiche' hai un numero dispari di elementi in vet, potresti avere qualche problema con l'ultimo
3. Se la procedura BI_ASC è quella di feeb, stai attento che lui fa riferimento a un vettore numeri. Tu lo hai definito?
Torna all'inizio della Pagina

pinux
Utente Mamone

pinux2


Regione: Puglia


Inserito il - 25/01/2005 : 23:36:58  Mostra Profilo  Visita l'Homepage di pinux Invia a pinux un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da fabbattista

Dunque, non ho capito perke' sposti da vet (byte) a vet2 (word). Se mi fai leggere la tua procedura di stampa forse mi è piu' chiaro.



la procedura fatta in precedenza era sbagliata..
nn avevo capito bene cosa dovevo fare...
voi avevate detto che il byte che conteneva il valore lo devevo convertire in due byte.. quindi ho fatto un po' di confuzione

In ogni modo questa è la nuova procedura e mi funziona!

MOV CL, TOT
MOV SI, 0
OUTP: MOV BL, VET[SI]
CALL BI_ASC
MOV AL, BH
CALL VISASCII ;INT 10H - AH,14
MOV AL, BL
CALL VISASCII ;INT 10H - AH,14

INC SI
LOOP OUTP

secondo voi è corretta sintatticamente o è solo funzionante?
in poche parole.. sta fatta bene o potevo fare di meglio?

cmq grazie per l'attenzione!
siete uno dei pochi prof. in grado di darla!





Modificato da - pinux in data
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,26 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000