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![]()
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![]()
Quale assembly? Quali strumenti usi?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Assembly x86 a 32 bit
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.
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![]()
Nel blocco assembly puoi anche scrivere dei dati.
Mostra il codice C da cui parti.
No MP tecnici (non rispondo nemmeno!), usa il forum.
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
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.
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.
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.