Salve a tutti, dopo molti tentativi XD, alla fine sono riuscito a terminare un programma, che mi visualizzi un menù automobile, per visualizzare lo stato dell'olio, delle freccie eccetera, purtroppo vorrei aggiungere un tocco di classe che però nn mi riesce, quando arrivo al makefile. in poche parole queste le specifiche.
Il programma potrà essere avviato in due modalità:
-) utente (lanciando solo il nome dell’eseguibile da riga di comando)
-) supervisor (lanciando il nome dell’eseguibile seguito dal codice 2244).
Se avviato in modalità utente, il programma dovrà visualizzare, una riga alla volta, il seguente
menù, partendo dalla prima riga e scorrendo sulle altre premendo il tasto freccia-giù/freccia-
su+invio (un freccia-giù+invio da messaggio di riga 6 corrisponde alla visualizzazione del
messaggio riga 1):
• Setting automobile:
• Data: 15/06/2014
• Ora: 15:32
• Blocco automatico porte: ON
• Back-home: ON
• Check olio
Se avviato in modalità supervisor, il programma dovrà visualizzare la riga 1 nel seguente modo:
“Setting automobile (supervisor)”, e poter visualizzare anche le seguenti righe:
• Frecce direzione
• Reset pressione gomme
Ad ogni voce visualizzata, premendo i tasti freccia-destra+invio si potrà entrare nel sottomenù
corrispondente, nel quale verrà visualizzato lo stato attuale del setting e data la possibilità di
impostazione. Ad esempio, una volta visualizzato il menù “Blocco automatico porte: ON”,
premendo il tasto freccia-destra+invio, si dovrà permettere il cambiamento del setting ON, tramite i
tasti fraccia-giù o freccia-su+invio.
In particolare, si dovrà permettere il setting dei sottomenù 4 e 5, con possibilità di impostazione
ON/OFF come nell’esempio sopra. I sottomenù 2, 3, 6, non dovranno essere implementati in questo
elaborato. All’interno di un sottomenù, il solo inserimento di invio da tastiera corrisponde al ritorno
al menù principale.
Se avviato in modalità supervisor, il sottomenù “Frecce direzione” dovrà visualizzare il numero dei
lampeggi modalità autostrada (3 per default) con possibilità di variazione (valore minimo 2, valore
massimo 5) tramite tastiera (valori inseriti fuori range corrispondono al setting del max/min valore).
Nel sottomenù “Reset pressione gomme”, inserendo il carattere freccia-destra seguito+invio, il
menù dovrà restituire il messaggio “Pressione gomme resettata” e tornare al menù principale.
ok fin qui tutto bene il programma simulato e provato funziona, l unica cosa che vorrei aggiungere è l 'aggiornamento di data e ora ad ogni avvio
io ho provato a prendere il file c per l ora e dopo opportune modifiche per rientrare nelle mie necessità convertirlo con gcc, il problema sorge quando provo a compilarlo insieme al resto.
ecco il file convertito, ne metto uno ma è simile anche per la data
.section .rodata
.LC0:
.string "3. Ora: %d:%d:%d\n"
.text
.globl tim
.type tim, @function
tim:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
pushl %ebx
andl $-16, %esp
subl $32, %esp
leal 24(%esp), %eax
movl %eax, (%esp)
.cfi_offset 3, -12
call time
leal 24(%esp), %eax
movl %eax, (%esp)
call localtime
movl %eax, 28(%esp)
movl 28(%esp), %eax
movl (%eax), %ebx
movl 28(%esp), %eax
movl 4(%eax), %ecx
movl 28(%esp), %eax
movl 8(%eax), %edx
movl $.LC0, %eax
movl %ebx, 12(%esp)
movl %ecx, 8(%esp)
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
movl $0, %eax
movl -4(%ebp), %ebx
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
.cfi_restore 3
ret
.cfi_endproc
ecco quindi la mia domanda sapreste dirmi come fare per un programma interamente in assembly at&t intel 80x86 per aggiornare l ora ad ogni avvio? grazie infinite a chi risponderà. Purtroppo ho provato ma nn riesci a darne fuori