Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    18

    [assembly MC68000] Elementi in un range di valori

    Salve a tutti,
    vi chiedo un aiuto per risolvere una parte di un esercizio che mi sta facendo penare.
    Il programma che ho simulato funziona alla perfezione ma come potete notare, mancano le istruzioni (sia nello stack che nell'area dati ho,per ora, escluso i parametri relativi alla posizione) relative all'output della posizione del primo elemento del vettore che è compreso nell'intervallo[MIN,MAX].
    Ed è lì il problema... dato che sto passando in rassegna tutti gli elementi del vettore, se inserisco il controllo della posizione nel ciclo non avrò la posizione del primo vettore che soddisfa la condizione, ma dell'ultimo.

    HELP ME,PLEASE!

    codice:
    *Scrivere una procedura in Assembler MC68000 che riceve in ingresso un vettore di byte
    *e la sua dimensione DIM e restituisce in uscita il numero di elementi compresi (CONT) tra MIN e MAX (estremi inclusi)
    *e restituisce la posizione(POSPRIMO) del primo elemento che rispetta questa condizione.
    *Per la posizione si consideri che il primo elemento parte dalla posizione ZERO.
    *Si utilizzi una procedura con subroutine con passaggio di parametri tramite stack.
    
    *AREA OFFSET PARAMETRI
    CONT_OFF         EQU    10
    DIM_OFF        EQU    08
    V1_OFF        EQU    04
    RIT_OFF        EQU    00
    
    
    *PROGRAMMA PRINCIPALE
                ORG     $8000
    MAIN
            MOVE         CONT,-(A7)
            MOVE        DIM,-(A7)
            MOVE.L    #V1,-(A7)
            JSR        COMPRESO
            MOVE        (A7)+,CONT
    
    
    FINE        JMP        FINE
    
    
    *SUBROUTINE
    COMPRESO    MOVEA.L    RIT_OFF(A7),A3
            MOVEA.L    V1_OFF(A7),A1
            MOVE        DIM_OFF(A7),D0
            MOVE        #0,D2            conta elementi compresi    
    LOOP        MOVE.B    (A1)+,D1
            CMP.B        MAX,D1
            BGT        DIVR
            CMP.B        MIN,D1
            BLT        DIVR        
            ADD        #1,D2
    DIVR        SUB        #1,D0
            BNE        LOOP
            MOVE        D2,CONT_OFF(A7)
            ADDA.L    #CONT_OFF,A7
            JMP        (A3)
    
    
    *AREA DATI
            ORG        $8500
    V1        DC.B        1,-2,-4,7,8,3,10,-3
    DIM        DC.w        8
    MIN        DC.B        -2
    MAX        DC.B        5
    CONT        DS.W        1
            END MAIN
    Ultima modifica di MItaly; 12-11-2013 a 14:30 Motivo: Tag CODE, titolo

Tag per questa discussione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.