Konekielisten ohjelmien kirjoittaminen ja testaaminen pelkästään paperilla on työlästä ja hankalaa. Niiden tekeminen ja testaaminen Koksi-simulaattorilla on paljon mielekkäämpää. Jos mitenkään mahdollista, niin käytä Koksia. Koksin käyttö ei kuitenkaan ole edellytys kurssin suorittamiseen. Kokeessa on kuitenkin osattava kirjoittaa konekielinen ohjelma paperimuodossa.
Alku LOAD R1,=0 STORE R1,15 IN R2,=KBD STORE R2,14 LOAD R3,15 ADD R3,14 STORE R3,15 LOAD R4,14 SUB R4,=1 STORE R4,14 JPOS R4,4 LOAD R5,15 OUT R5,=CRT Loppu SVC SP,=HALT
int x=7, y=33, z=5; /* variables x, y, z */ main () { /* main program */ y = 4; x = 52 - y * z; if (x < 40) { y = x - 34; } else { y = x / y + 4; z = 23; } printf ( "%d %d %d \n", x, y, z) /* print x, y, z */ }
int n, i, prev, fib, next; /* variables n, i, prev, fib, next */ main () { /* main program */ scanf ("%d", &n); /* read n */ i = 1; prev = 0; fib = 1; while (i < n) { next = prev+fib; prev = fib; fib = next; i = i+1; } printf ( "%d %d \n", n, fib); /* print n, fib */ }
Voit pitää muuttujien arvoja joko muistissa tai rekistereissä.
Tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin
avulla.
Anna esimerkki tilanteesta, jossa tapa (a) olisi sopivin. Vastaavasti tapauksille b ja c. Perustele esimerkkisi.
# record person: 3 integer fields Id EQU 0 # relative address within record Age EQU 1 Salary EQU 2
Tietueet Pekka ja Jussi on varattu muistista alustettuna ja tietue Maija on varattu muistista alustamattonana pseudokäskyillä
Pekka DC 3214 # ID = 3214 DC 35 # AGE = 35 DC 12345 # SALARY = 12345 Jussi DC 8888 DC 54 DC 14321 Maija DS 3 # initial values not defined
Esimerkki: Jos R4 osoittaa tietueen Pekka alkuun, niin Pekan palkka saadaan rekisteriin R5 konekäskyllä "LOAD R5, Salary(R4)".
Tee ttk-91-koneen symbolisella konekielellä ohjelma, joka