Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26

    [Assembler] problema media elementi vettore

    altro problema. l'esercizio richiedeva anche di acquisire 5 elementi per un vettore e farne la media.
    va tutto bene, ma dopo che eseguo mi stampa sullo schermo "media: T" com'è possibile? come risolvo?

    nel ciclo2 ho acquisito gli elementi del vettore, nel ciclo media ho invece sommato tutti gli elementi e fatto la divisione attraverso il comando div d (con d impostato con valore 5 nei dati), ma poi eseguendo mi dà quel problema..

    codice:
    ; multi-segment executable file template.
    
    data segment
        DIM EQU 10
        NOME db  10 dup(?)
        msg db "Inserire nome e cognome: $"
        DIM EQU  5
        NUM db 0
        msg_2 db "Inserire numeri del vettore: $"
        d db 5  
        msg_3 db "Media: $ "
        ; add your data here!
        pkey db "press any key...$"
    ends
    
    stack segment
        dw   128  dup(0)
    ends
    
    code segment
    start:
    ; set segment registers:
        mov ax, data
        mov ds, ax
        mov es, ax
        
        
        lea dx, msg
        mov ah, 9
        int 21h
        
        mov ax, 0
        mov cx, 10
        mov si, 0
    ciclo:mov ah, 1
          int 21h  
          mov NOME[si], al
          inc si
          loop ciclo  
          
          mov dl, 13
          mov ah, 2
          int 21h
          mov dl, 10
          mov ah, 2
          int 21h
          
          lea dx, msg_2
          mov ah, 9
          int 21h 
             
            mov ax, 0
            mov cx, 5
            mov si, 0
    ciclo2: mov ah, 1
            int 21h 
            sub al,48
            mov NUM[si], al
            inc si
            loop ciclo2 
           
           
          mov dl, 13
          mov ah, 2
          int 21h
          mov dl, 10
          mov ah, 2
          int 21h 
           
          
          
            
          mov ax, 0
          mov cx, 5
          mov si, 0  
    media:add al, NUM[si] 
          inc si
          loop media  
          div d
             
          
          
          lea dx, msg_3  
          mov ah, 9
          int 21h 
          
          add al, 48
          mov dl, al 
          mov ah, 2
          int 21h
          
        
                  
          
        ; add your code here
                
        lea dx, pkey
        mov ah, 9
        int 21h        ; output string at ds:dx
        
        ; wait for any key....    
        mov ah, 1
        int 21h
        
        mov ax, 4c00h ; exit to operating system.
        int 21h    
    ends
    
    end start ; set entry point and stop the assembler.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    T'avevo gia' chiesto ... come hai prelevato e stampato il risultato ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26
    scusa non mi ero ricordata...
    comunque il risultato dell'operazione div d, viene posto in al;
    quindi ho usato l'interrupt 21h (con mov AH, 2) per stampare il numero, e ho spostato al in dl; poi qui avrei dovuto mettere add dl, 48 per convertire da numero ad ASCII

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Probabilmente il valore di AL viene "sporcato" dalla chiamata che sta in mezzo ... preserva il valore nello stack ...

    codice:
          push ax
          lea dx, msg_3  
          mov ah, 9
          int 21h 
          pop ax
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    26
    va bene, grazie mille, e scusate il ritardo nella risposta ^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.