|
ecco i codici
buongiorno, innanzitutto scusate il ritardo ma ho avuto molto da fare, comunque quello che sono riuscito a ottenere dopo aver lanciato il programma da terminale è questo:
Menù cruscotto
1. Setting automobile:
2. Data: 15/06/2014
3. Ora: 15:32
4. Blocco automatico porte: ON
5. Back-home: ON
6. Check olio
7. Frecce direzione
8. Reset pressione gomme
invece quello che si deve vedere è questo:
Menù cruscotto
1. Setting automobile:
//poi premendo freccia giù + invio deve spostarsi di rigas in riga
Menù cruscotto
2. Data: 15/06/2014 visualizzandone però sempre una alla volta,
ecco io ho sviluppato il programma in 1 main e 8 funzioni (sottoprogrammi) per facilitarmi nel caso avessi riscontrato dei problemi
ecco il main
.section .data
menu:
.ascii " Menù cruscotto\n"
menu_len:
.long . -menu # lunghezza della stringa in byte
.section .text
.global _start
_start:
movl $4, %eax # 4 corrisponde alla system call "write"
movl $1, %ebx # stampa nello standard output (schermo)
leal menu, %ecx # puntatore char a ciò che si vuole stampare
movl menu_len, %edx # copia del contenuto della variabile. carica la lunghezza della variabile
int $0x80 # system call (int sarebbe "interaction"); con 0x80 si lancia una interaction generale
# dichiarata (in base ai valori caricati precedentemente nei registri)
call setting
jmp exit
call data
jmp exit
call ora
jmp exit
call porte
jmp exit
call home
jmp exit
call olio
jmp exit
call frecce
jmp exit
call reset
exit:
xorl %eax, %eax
inc %eax
xorl %ebx, %ebx
int $0x80
---------------------------------------
//sottoprogramma per le righe, ne posto solo uno perchè gli altri sono uguali a parte le etichette e sull'ultimo quello per la riga reset alla fine ho messo l'istruzione ret per uscire dal programma
.section .data
set:
.ascii "1. Setting automobile:\n"
set_len:
.long . -set # lunghezza della stringa in byte
.section .text
.global setting
.type setting, @function
setting:
movl $4, %eax # 4 corrisponde alla system call "write"
movl $1, %ebx # stampa nello standard output (schermo)
leal set, %ecx # puntatore char a ciò che si vuole stampare
movl set_len, %edx # copia del contenuto della variabile. carica la lunghezza della variabile
int $0x80 # system call (int sarebbe "interaction"); con 0x80 si lancia una interaction generale
# dichiarata (in base ai valori caricati precedentemente nei registri)
il problema dell'aggiornamento dell'ora e della data è facoltativo era solo una mia curiosità
vi chiedo scusa ancora per il tempo dedicatomi e spero si legga. Buona giornata
|