INF1070 Oppgaver uke 11 (13.-17.3.2006) (Oppgave 3 er den viktigste denne uken. Oppgave 2 og 4 er sv?rt raske ? l?se n?r man f?rst har skj?nt hva man skal gj?re.)) Oppgave 1 Skriv om funksjonen `yellower? fra mandagens forelesning til ? behandle fargekomponentene i en l?kke som g?r tre ganger. Hint: Bruk instruksjonsnotasjonen for vektoraksess. Hint: Hvis du trenger flere registre enn EAX, EBX, EXC og EDX, kan du bruke ESI og EDI. Oppgave 2 Skriv et lite program i C eller x86-assemblerspr?k som avgj?r om maskinen bruker little- eller big-endian. Oppgave 3 Ta utgangspunkt i funksjonen `innforst? fra mandagens forelesning og skriv en `innsist? som setter inn et element sist i listen. Oppgave 4 Skriv x86-funksjonen int downcase (int c) som omformer en stor bokstav til den tilsvarende lille bokstaven. Sm? bokstaver skal forbli de samme. Vi antar at parameteren c alltid er en bokstav (dog ikke ? og ?). Hint: Det er nok med ?n instruksjon (foruten de som er med i alle funksjoner for ? ta seg av registerinitiering og retur). Hint. Se p? en oversikt over tegnsettet vi bruker (for eksempel ~dag/www_docs/ISO8859-table.pdf) og studer bit-m?nsteret for for eksempel 'A' og 'a'. Eksempel: Programmet #include extern int downcase (int c); char data[] = { 'a', 'A', 'w', '?', '?' }; int main (void) { int data_len = sizeof(data)/sizeof(char), i; for (i = 0; i < data_len; ++i) printf("downcase('%c') = '%c'\n", data[i], downcase(data[i])); return 0; } skal skrive ut: downcase('a') = 'a' downcase('A') = 'a' downcase('w') = 'w' downcase('?') = '?' downcase('?') = '?'