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
 [Assembler] Istruzione DIV

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
axelgenus 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!
7   U L T I M E    R I S P O S T E    (in alto le più recenti)
silent 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

silent 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 ??
silent Inserito il - 31/05/2005 : 16:38:40
grazie xoom
M]i[K 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 Inserito il - 31/05/2005 : 11:46:23
qualcuno che ha sostenuto la prova di laboratorio può postare la traccia ??
axelgenus 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!
mrluglio Inserito il - 28/05/2005 : 11:02:16
non è che per caso dividi per 0
(poi nn so...è solo un suggerimento)

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,08 secondi.

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