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
 Aiuto Assembler 8086 - non mi fa la somma
 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  

p4olo
Nuovo Utente



Inserito il - 27/05/2009 : 17:32:35  Mostra Profilo  Visita l'Homepage di p4olo Invia a p4olo un Messaggio Privato  Rispondi Quotando
Ciao a tutti, sto avendo un problema con un esercizio sull'assembler, che non mi effettua l'addizione con i numeri contenuti nei vettori, (uso emu8086 come programma).
La trama è:
- Scrivere un programma assembler che calcoli la media di 4 cifre (0..9) inserite in un vettore definito nel segmento dati.

il codice è questo:
; calcolo media di 4 cifre (0..9) inserite in un vettore definito nel segmento dati
data segment       

numeri db 2,2,2,2 ; cifre definite di cui calcolare la media
quattro db 4; dividendo  
             
    data ends 

code segment 
    assume CS:CODE,SS:STACK,DS:DATA

inizioprogramma:    
    MOV AX,DATA
    MOV DS,AX
             
    MOV AX,0; inizializzo ax
    MOV SI,0; inizializzo il contatore si
    MOV BX,offset numeri;  carico l'offset nel vettore BX
    
    
sommatot:
    CMP SI,4 
    JE dividi; se si e' uguale a 4 salta a dividi
    
    ADD AL,byte ptr[bx+si] ; sommo i numeri
                        
    INC SI; incrementa il contatore si
    JMP sommatot ;salta sempre a sommatot   
           
dividi:  
    
    DIV quattro; divido AX:QUATTRO  

code ends


Vi metto alcuni screenshot di quello che esce nei registri:

- Qui esce direttamente 70 (invece dovrebbe essere inserito 2) in AL.


- qui invece va da 70 a 71 (invece di 4):

- infine nell'ultimo ciclo di ADD AL,byte ptr[bx+si] va direttamente a 65:


Non capisco l'errore dove sia. Mi potete aiutare?

p4olo
Nuovo Utente



Inserito il - 28/05/2009 : 01:04:28  Mostra Profilo  Visita l'Homepage di p4olo Invia a p4olo un Messaggio Privato  Rispondi Quotando
Ho risolto ;)
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,14 secondi.

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