| Autore |
Discussione  |
|
|
axelgenus
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 27/05/2005 : 18:34:34
|
Ciao a tutti,
ricollegandomi al thread precedente "Conversione HEX->DEC" ho trovato una soluzione: utilizzare il metodo delle divisioni successive. D'altronde è lo stesso metodo adottato dal prof. Anelli.
Ho tentato di riscrivere il programma in modo che converta un'intera parola (16 bit) da esadecimale e decimale, invece che un solo byte per volta. Purtroppo l'istruzione DIV mi da sempre errore di "overflow di divisione". Quacuno mi può spiegare in che cosa consiste e come si può risolvere?
Grazie, Axel.
PS - Scusate l'insistenza con cui posto su questo forum ma lunedì ho l'esame di laboratorio e vorrei andarci ben preparato!
|
|
|
mrluglio
Utente Sempre in Vacanza
  

Regione: Puglia
Prov.: Bari
Città: Terlizzi
|
Inserito il - 28/05/2005 : 11:02:16
|
non è che per caso dividi per 0 (poi nn so...è solo un suggerimento) |
Spazio agli inventori : "Questa cosa non funziona...funzionerebbe però se usassimo il RETROMOUSE" by Anonimo
 |
 |
|
|
axelgenus
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 28/05/2005 : 12:21:04
|
Citazione: Messaggio inserito da mrluglio
non è che per caso dividi per 0
No, non era quello il problema. Comunque ho risolto da solo, grazie!  |
 |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 31/05/2005 : 11:46:23
|
| qualcuno che ha sostenuto la prova di laboratorio può postare la traccia ?? |
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
 |
|
|
M]i[K
utente juventino
  

Regione: Puglia
Prov.: Bari
|
Inserito il - 31/05/2005 : 15:28:24
|
io l'ho fatto l'anno scorso con la deCarolis, e mise di immettere un vettore di numeri da tastiera e dovevi prima ordinare il vettore di numeri, e poi avere come output due messaggi, uno che ti dicceva il numero dei numeri pari del vettore, e l altro messaggio diceva il numero dei dispari.
Al secondo turno, che fece il mio amico invece, mise di immettere un vettore di numeri, e di invertirli con un altro vettore di numeri gia dato da lei però.
Spero di esserti stao utile..in bocca al lupo  |
 |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 31/05/2005 : 16:38:40
|
| grazie xoom |
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
 |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 14/06/2005 : 16:36:20
|
| ma per la prova di laboratorio la prof. de carolis mette già a disposizione le subroutine di lettura e scrittura di un byte,o le dobbiamo scrivere noi ?? |
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
 |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 16/06/2005 : 18:31:13
|
qualcuno mi sa dire perchè questo esercizio mi da l'errore di overflow di divisione (nella proc PARIV)
;programma che acquisisce 5 numeri da tastiera,ne esegue la somma ;e mi dice i numeri pari ;============================SEGMENTO STACK============================== STACK SEGMENT PARA STACK 'STACK' DB 100H DUP(0) STACK ENDS ;============================SEGMENTO DATI============================== DATA SEGMENT PARA PUBLIC 'DATA' TOTALE DB 5 ;quanti numeri contiene il vettore VETTORE DB 5 DUP(0) SOMMA DW 0 ;risultato della somma PARI DW 0 DIECI DB 10 ;conversione ASCII-numero DIECIW DW 10 ;conversione nuero-ASCII ACCAPO DB 13,10,'$' MSGX DB 'IMMETTERE UN VALORE : $' MSG1 DB 'LA SOMMA RISULTA= $' MSG2 DB ': $' MSG3 DB 'I NUMERI PARI SONO: $' MSG4 DB ': $' DATA ENDS ;============================SEGMENTO CODICE============================ CODE SEGMENT PARA PUBLIC 'CODE' MAIN PROC FAR ;================prologo standard========================= ASSUME CS:CODE PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV ES,AX ASSUME ES:DATA MOV DS,AX ASSUME DS:DATA ;=======================MAIN===================== CALL ACQUISIZIONE CALL CALCOLO CALL OUTPUT CALL PARIV RET ;=========================PROCEDURE======================= ;------------------------------------------------------------------------- INPUT PROC NEAR XOR DX,DX LEA DX,MSGX CALL VISUAL CALL INPUT_N ;acquisisce un valore e pone il risultato in AL RET INPUT ENDP ;------------------------------------------------------------------- ACQUISIZIONE PROC NEAR XOR AX,AX XOR BX,BX XOR CX,CX MOV CL,5 CICLO: CALL INPUT MOV VETTORE[BX],AL INC BX LOOP CICLO RET ACQUISIZIONE ENDP ;------------------------------------------------------------------- CALCOLO PROC NEAR XOR AX,AX XOR BX,BX XOR CX,CX MOV CL,TOTALE CICLOX: ADD AL,VETTORE[BX] INC BX LOOP CICLOX MOV SOMMA,AX RET CALCOLO ENDP ;------------------------------------------------------------ PARIV PROC NEAR XOR DX,DX LEA DX,MSG3 CALL VISUAL CALL INPUT_N XOR AX,AX XOR BX,BX XOR CX,CX MOV CL,TOTALE CICLOP: MOV AL,VETTORE[BX] MOV BX,2 DIV BX CMP AH,0 JNE FINE LOOP CICLOP MOV PARI,AX FINE: RET PARIV ENDP
;------------------------------------------------------------ OUTPUT PROC NEAR PUSH AX PUSH DX LEA DX,MSG1 ;'LA SOMMA è= $' CALL VISUAL ;stampa stringa puntata da DS:DX mediante INT 21h,09h MOV AX,SOMMA CALL STAMPA_N ;stampa il risulato LEA DX,ACCAPO ;passaggio alla riga successiva CALL VISUAL POP DX POP AX RET OUTPUT ENDP ;------------------------------------------------------------------------- ;Input di numero decimale < 256 (byte)da tastiera: in AL Input_N PROC NEAR PUSH BX PUSH CX PUSH DX XOR AX,AX ;Inizializza AX MOV CX,5 ;Lettura di massimo 5 caratteri Ciclo1: CALL Char_N ;Input di un carattere ASCII in DL CMP DL,13 ; INVIO = DEC 13 in ascii JE VerificaB ;E' stato premuto INVIO? SUB DL,'0' ;Conversione ASCII-numero MUL dieci ;AX <- dieci * AL ADD AL,DL LOOP Ciclo1 ;salta se meno di cinque cifre VerificaB: CMP AX,256 JB Fuori ;E' stato effett letto un byte? LEA DX,msgx ;puntatore del messaggio in DX CALL VISUAL ;Stampa la stringa puntata da DX XOR AH,AH CALL Stampa_N ;Stampa del byte utilizzato Fuori: LEA DX,accapo ;Passaggio alla riga successiva CALL VISUAL ;Stampa la stringa puntata da DX POP DX POP CX POP BX RET Input_N ENDP ;-------------------------------------------- ;Input da tastiera di cifra '0'..'9','INVIO', resa in DL Char_N PROC NEAR PUSH AX Ripeti: MOV AH,1 INT 21h MOV DL,AL CMP DL,13 JE Char_N_Ok ;E' stato premuto INVIO? CMP DL,'0' JB Indietro ;Il carattere è < '0'? CMP DL,'9' JBE Char_N_Ok ;Il carattere <= '9'? Indietro: PUSH BX MOV AH,3 ;servizio 3:acquisizione cursore MOV BH,0 ;pagina 0 INT 10h ;DH riga DL colonna DEC DL MOV AH,2 ;servizio 2:definizione cursore INT 10h POP BX JMP Ripeti ;rilegge il carattere Char_N_Ok: POP AX RET Char_N ENDP ;------------------------------------------------- ;------------------------------------------------------------------- ;la proceduta VISUAL stampa la stringa puntata da DS:DX mediante INT 21h,09h VISUAL PROC NEAR PUSH AX MOV AH,9 INT 21H POP AX RET VISUAL ENDP ;------------------------------------------------------------------------- ;la procedura STAMPA_N scrive a video il valore di AX come stringa di cifre STAMPA_N PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV CX,0 ;inizializza il numero di cifre CICLO2: MOV DX,0 DIV DIECIW ADD DX,'0' PUSH DX ;salvataggio cifra INC CX CMP AX,0 JNE CICLO2 ;ci sono altre cifre? MOV AH,2 CICLO3: POP DX INT 21H LOOP CICLO3 POP DX POP CX POP BX POP AX RET STAMPA_N ENDP ;----------------------------------------------------------------------------- MAIN ENDP CODE ENDS END MAIN
|
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
 |
|
| |
Discussione  |
|
|
|