This is an old revision of the document!


TP 11 - Assembly

In acest laborator vom folosi simulatorul pentru limbaj de asamblare https://schweigi.github.io/assembler-simulator/. Acesta simuleaza un procesor cu urmatoarele caracteristici:

  • 4 Hz
  • 4 registre de uz general A, B, C si D
  • un registru pentru instructiunea curenta IP
  • un regsitru pentru varful stivei SP
  • 256 B RAM
  • 24 B memorie video (ultimii bytes din memoria RAM)

Setul de instructiuni

Setul de instructiuni reprezinta comenzile pe care un procesor le poate executa. Acest procesor stie urmatoarele instructiuni:

  • mov - atribuire de date
  • add - adunare
  • sub - scadare
  • inc - incrementare
  • dec - decrementare
  • mul - inmultire
  • div - impartire
  • and - si pe biti
  • or - sau pe biti
  • xor - xor pe biti
  • not - negarea bitilor
  • shl - sifatre la stanga (echivalent cu inmultirea cu 2)
  • shr 0 siftare la dreapta (echivalent cu impartirea cu 2)
  • cmp - comparare
  • jmp - salt
  • j.. - salt (aici sunt mai multe instructiuni)
  • call - apel de functie
  • ret - intarcere din functie
  • hlt - oprirea procesorului
  • push - punerea pe stiva
  • pop - stergerea de pe stiva si punerea intr-un registru

Setul de instructiuni cu descrierea lor este disponibil pe site-ul simulatorului https://schweigi.github.io/assembler-simulator/instruction-set.html.

Exercises

  1. Rulati programul initial si incercati sa va dati seama cum sa va scrieti numele la output (2p)
  2. Scrieti un program care pune in registrele A, B, C si D numerele 1, 3, 5 si 7 (1p)
  3. Scrieti codul pentru a calcula restul impartirii valorii din registrul A la valoarea din registrul B (1p)
  4. Scrieti care afiseaza in output 0 de atatea ori cat valoarea din registru A. (2p)
  5. Scrieti un program si o functie care calculeaza restul impartirii a doua variabile. Trimitei parametrii functiei folosind registre registre (1p).
  6. Scrieti un program si o functie care calculeaza restul impartirii a doua variabile. Trimitei parametrii functiei folosind stiva (1p).
  7. Scrieti un program si o functie care calculeaza dimensiunea unui string stocat sub forma unei variabile. Puteti incepe de la exemplul din primul program. Functia trebuie sa fie reapelabila din interiorul ei. (2p)
  8. Bonus Scrieti un program si o functie care calculeaza sirul a(n) = a(n-1)*a(n-2), a(0) este 1 si a(1) este 2. (2p)
alf/laboratoare/11.1588014981.txt.gz · Last modified: 2020/04/27 22:16 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0