Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29

    [assembly] calcolo giorni tra due date

    Ciao a tutti, ho un problema con un elaborato in assembly.. Devo calcolare il numero di giorni tra due date he non ho idea di come distinguere il numero di giorni dei vari mesi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quale assembly? Quali strumenti usi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    Assembly x86 a 32 bit

  4. #4
    Puoi fare una tabella di lookup sul numero del mese...
    codice:
        ; nel segmento dati
    gpm:
        db 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
    
    
        ; nel codice
        xor eax,eax
        mov al, byte ptr[gpm + ebx] ; supponendo che il numero del mese *a base zero* stia in ebx
        ; aggiusta poi febbraio se siamo in un anno bisestile (supponendo che l'anno stia in ecx)
        test ecx,3
        jnz annonorm
        ; qui dovresti anche controllare che non sia divisibile per 400...
        inc eax
    annonorm:
        ; eccetera
    Ultima modifica di MItaly; 19-05-2015 a 22:48
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    Noi possiamo implementare solo il blocco in assembly, le variabili che possiamo utilizzare sono già dichiarate in c e non posso aggiungerne altre. Scusate l'ignoranza ma noi abbiamo fatto solo le basi dell'assembly, l'unica soluzione che mi è venuta in mente è salvare i giorni dei mesi nello stack però poi non so come accedere al mese giusto

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Nel blocco assembly puoi anche scrivere dei dati.

    Mostra il codice C da cui parti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    codice:
    #include <stdio.h>
    void main()
    {
       int giorno1=2;
       int giorno2=5;
       int mese1=6;
       int mese2=1;
       int anno1=1900;
       int anno2=1990;
    
       int risultato;
    
       __asm {
           //blocco assembly
       }
    
       Printf("giorni:%d", risultato);
    }
    Ultima modifica di tr_gal; 20-05-2015 a 11:19

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il tag di chiusura è /CODE e non \CODE ...

    Comunque, a prescindere dall'assembly, tu come risolveresti questo esercizio logicamente?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    conto i giorni che rimangono ad andare alla fine del primo mese, sommo i mesi rimanenti ad andare alla fine del primo anno, sommo tutti gli anni fino ad arrivare all'ultimo, arrivata all'ultimo anno sommo i mesi rimasti e la differenza di giorni dell'ultimo mese. Sempre tenendo conto degli anni multipli di 4 per gli anni bisestili. Se fossi in c mi basterebbe un ciclo che utilizza un vettore con memorizzati il numero di giorni dei vari mesi e i vari controlli per gli anni bisestili.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    conto i giorni che rimangono ad andare alla fine del primo mese, sommo i mesi rimanenti ad andare alla fine del primo anno, sommo tutti gli anni fino ad arrivare all'ultimo, arrivata all'ultimo anno sommo i mesi rimasti e la differenza di giorni dell'ultimo mese. Sempre tenendo conto degli anni multipli di 4 per gli anni bisestili. Se fossi in c mi basterebbe un ciclo che utilizza un vettore con memorizzati il numero di giorni dei vari mesi e i vari controlli per gli anni bisestili.

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.