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.