1TX Computersystemen

Uit Diana's examenwiki

Tips

In het begin zijn de lessen zeer makkelijk, maar een keer je met het werkelijke programmeren begint wordt het gauw moeilijk. Probeer zo vaak mogelijk aanwezig te zijn in de lessen en aarzel niet om hulp te vragen tijdens het programmeren aan de leerkrachten. Zorg ook dat je zoveel mogelijk oefenigen afmaakt tijdens de praktijklessen, uit ondervinding weten we dat het heel verleidelijk is spelletjes te spelen. Als je de oefeningen goed kan zal het examen ook wel lukken: de moeilijkste oefeningen zijn immers veel moeilijker dan de programmeeropdrachten op het examen. Er worden ook 2 testen gehouden tijdens het jaar. De eerste test gaat alleen over hoofdstuk 1 de andere gaat over programmeren. Normaal gezien wordt duidelijk op voorhand gezegd wanneer de test plaatsvindt en wat je goed moet kennen. Zorg dat je hier goed op scoort, dit levert je een groot voordeel op bij het examen.


2016: De testen zijn een manier om makkelijk aan je punten te geraken, studeer hier zeker voor! Dit zijn zo goed als gratis examenpunten.
2019: De eerste test gaat over hoofstuk 1, de tweede over hoofdstuk 2. De oefeningen zijn vrij gelijkaardig aan die op EduBlend.

Januari 2020

Examen bestond uit 5 vragen:

  • Geef de inhoud van EAX en EDX tijdens een programma met MOV-, ADD-, IMUL, en IDIV bevelen (32 bits!!!!!!)
  Vergeet niet: Na IMUL DWORD komt het product in EDX:EAX Dit wil zeggen dat als het getal niet in EAX past, het verderloopt in EDX. 
  Anders wordt EDX opgevuld met 0h of Fh, afhankelijk of het product positief of negatief is. Bij IDIV DWORD, komt uiteraard de rest in EDX
  • Geef definities van: Symbolentabel, Zone bit recording (ZBR), Wet van Moore, RC-wachttijd bij SD RAM en Lineare informatiedichtheid (met kleine schets)
  • Geef benamingen van 3 dingen die staan aangeduid op de foto (Werkgeheugen <-> CPU)
  • Geef het bevel dat wordt uitgevoerd, bevelenteller(EIP), bevelregister, ESP en zowel de Nul-vlag(ZF) als het Teken-vlag(SF) van een gegeven programma met oa push en pop bevelen
  • Grote programmeer oefening (getypt op PC in een .txt MAAR je kan deze niet uitvoeren!)
    • Je krijgt een invoerbestand waarin 4 kolommen staan. De eerste kolom bevat de letter A of V (met A wordt het aankopen van een materiaal bedoelt, met V de verkoop ervan), de tweeede kolom een materiaal, de derde kolom de aantal eenheden en in de vierde kolom staat de prijs per eenheid. Op basis van de producten moet je berekenen hoeveel winst of verlies een bedrijf maakt.
    • Op de examenToledo staat oa de lus om te vertalen naar ASCII
    • Een voorbeeld van het invoerbestand dat gegeven is en het uitvoerbestand dat je moet maken:

INVOER:

  A     ijzer                6      15
  V     roestrvrij staal     5      48
  A     inox                 158    5


UITVOER:

  Winst   1286 €


Januari 2018

Geef definities van:

  • native command queuing
  • multithreading
  • wet van moore
  • principe van lokaliteit
  • Geef de inhoud van EAX en EDX tijdens een programma met MOV-, ADD-, IMUL, en IDIV bevelen en een voorwaardelijke sprong.
  Vergeet niet: Na IMUL DWORD komt het product in EDX:EAX Dit wil zeggen dat als het getal niet in EAX past, het verderloopt in EDX. 
  Anders wordt EDX opgevuld met 0h of Fh, afhankelijk of het product positief of negatief is. Bij IDIV DWORD, komt uiteraard de rest in EDX
  • Vraag over de stapel
  • In een programma de vlaggen
  • Raid-0 Raid-1 Raid-5: Bij elk zeggen wat de invloed is op betrouwbaarheid en snelheid van lezen of schrijven. Ook uitleggen.
  • Grote programmeer oefening

Januari 2017

  • Geef de inhoud van EAX en EDX tijdens een programma met MOV-, ADD-, IMUL, en IDIV bevelen en een voorwaardelijke sprong.
  Vergeet niet: Na IMUL DWORD komt het product in EDX:EAX Dit wil zeggen dat als het getal niet in EAX past, het verderloopt in EDX. 
  Anders wordt EDX opgevuld met 0h of Fh, afhankelijk of het product positief of negatief is. Bij IDIV DWORD, komt uiteraard de rest in EDX
  • Geef definities van herlocalisaties, radiale informatiedichtheid (met schets), RC-wachttijd.
  • Analyseer een bevraging van het werkgeheugen.
  • De stapel: In een subroutine die de absolute waarde van een getal geeft enkele push- en pop-bevelen aanvullen.
  Wat je op een stapel zet, met push, komt telkens bovenaan de stapel. Daarom moet je aan het eind van je subroutine de elementen in omgekeerde volgorde van het pushen terug afhalen met pop (telkens het bovenste)
  • Vervolg op vorige: De waarde van de EIP (Instruction Pointer geven) na enkele push- en pop-bevelen
Hier is het van belang de grootte van registers (eax, ax, al)... goed te kennen. Ook niet vergeten dat als je pusht, de EIP verlaagt, als je popt, de EIP verhoogt. 
  • Grote programmeeropdracht
    • Je krijgt een invoerbestand waarin op iedere rij een getal staat. Je moet voor ieder getal bepalen of het getal een deel is van de rij van Fibonacci. Je mag de eerste twee getallen (0 en 1) als constanten gebruiken.

INVOER:

  Kolom 7 |
         34
         89
          7
         13

UITVOER:

   34 IS HET       10e GETAL VAN FIBONACCI
   89 IS HET       14e GETAL VAN FIBONACCI
    7 IS GEEN GETAL VAN FIBONACCI
   13 IS HET        8e GETAL VAN FIBONACCI

Januari 2015

  • Geef de inhoud van EAX en EDX na een MOV-bevel, een ADD-bevel en een IMUL-bevel volledig, dus zowel in binair (als in hexadecimaal) als in decimaal.
    • Opgelet: EDX wordt na het IMUL-bevel opgevuld met nullen of enen, naargelang het teken van de inhoud van EAX: is de inhoud van EAX na de vermenigvuldiging negatief, dan is EDX voor de rest opgevuld met enen. Is het resultaat positief, dan zijn dit nullen.
  • Gegeven is een beschrijving van een SD-RAM en het hexadecimale adres van een byte. Geef DIMM-nummer, banknummer, rijnummer en kolomnummer van deze byte.
    • Zet hiervoor het hexadecimale adres om naar 32-bits binair adres. De eerste 2 bits vormen het DIMM-nummer, de volgende 3 bits het banknummer, de 14 bits daarna het rijnummer en de 10 daarop het kolomnummer. De laatste 3 bits vormen het bytenummer.
  • Een vraag over wachttijden en bloktransfer, waarbij CAS "3-2-1" gegeven is.
  • Een programmeeroefening in verband met rijen: geef één voor één een rij van 30 dubbelwoorden in en daarna een getal "n". Het n-de getal van de rij moet teruggegeven worden. Bijvoorbeeld bij groep = 1, 20, 300, 4000, 50000 en n = 4, moet als resultaat het vierde element van de rij, dus 4000, teruggegeven worden.
   %include "gt.asm"
   covar
   n:          resd 1
   uitvoer:    resd 1
   groep:      resd 30                      ; hier komen de 30 ingevoerde getallen
   een:        dd 1
   vier:       dd 4                         ; elk dubbelwoord is twee woorden, en dus 4 bytes, lang
   
   inleiding
               mov ecx, 30                  ; er worden 30 getallen opgevraagd en na elk getal wordt ECX met 1 verminderd
   
   lus:        inv [groep+ebx]              ; gebruik hier om het even welk register, maar zorg dat ja de waarde ervan niet overschrijft!
               add ebx, [vier]              ; tel telkens 4 bij ebx op, zodat het ingevoerde getal na de 4 bytes van het vorig ingevoerde getal komt te staan
               loop lus                     ; deze loop stopt wanneer ecx op 0 staat, in dit geval dus na 30 keer
   
               inv [n]             
               mov eax, [n]
               sub eax, [een]               ; trek 1 af van n, want n begint op 0 en niet op 1
               imul dword [vier]            ; want 1 getal is 4 bytes
               uit [groep+eax]   ; als n bijvoorbeeld 4 is, dan is groep+eax hier groep+12
  • Bereken het aantal MT/s bij een busbreedte van 32 bits en een debiet 66.7 MB/s.
  • Leg kort uit waarom het handig is wanneer een processor over een pijplijn beschikt.
  • Wat betekent 01020201 in het bevel "MOV EAX, 02010102"? Waarvan is dit afhankelijk?
  • Geef de waarde van ESP voor en na een aantal PUSH- en POP-bevelen.
    • Let hierbij op de lengte van het register of de waarde die/dat gePUSHt of gePOPt wordt.
  • Schrijf voor onderstaande records een uitvoerbestand in de vorm van "75% van onze klanten behoort tot onze doelgroep", waarbij de doelgroep bestaat uit vrouwen die geboren zijn na 1985.
    • Hou dus minstens 2 variabelen bij: het aantal vrouwen geboren na 1985, en het totaal aantal klanten. Het percentage klanten dat tot de doelgroep behoort is dan (vrouwen x 100) / totaal.
    • Om de jaartallen met 1985 te vergelijken, moet je ze eerst omzetten naar binair. Hiervoor kun je tekstbin gebruiken.
    • Om het percentage uit te schrijven, moet dit eerst omgezet worden naar de ASCII-voorstelling. De subroutine die je daarvoor nodig hebt, kun je best van buiten leren.
   Kolom 1 - naam          Kolom 25 - geslacht en geboortedatum         Kolom 50 - totale uitgaven in eurocent
   An                      V1986                                        5000
   Betty                   V1972                                        25000
   Catherine               V1994                                        1500
   Dave                    M1989                                        8000

Januari 2013

Veel vragen waarbij je het optellen van hexadecimale getallen nodig hebt. Zorg dat je dit vlot kunt!
Vragen i.v.m bevellenteller en bevelregister
Grote vraag om te programmeren.
Wat is lokaliteit? Ook moet je een adres van de GBE ontleden.

Januari 2012

  • Gegeven: 3 constanten: 2 negatieven en 1 positief.

    Gevraagd: inhouden van eax en edx geven na bevelen (mov eax, ... ; mov edx, ...; add eax, edx; imul dword ...)

Constanten Definitie
vos dd -70
kat dd 57
wolf dd -5

- Wat is de inhoud (volledig) van eax en edx na de uitvoering van "mov eax, [vos]; mov edx,[kat]"

- Zelfde vraag als daarna "add edx, [vos]" wordt uitgevoerd

- Zelfde vraag als daarna "imul dword [wolf] wordt uitgevoerd

  • Gegeven: Stukje programma(Bevelregisters en de bevelen op dat adres) begin van bevelenteller.

    Gevraagd: Bevelenteller geven voor een bevel, en na een bevel, en de 2 verschillend mogelijkheden na een jump-bevel

Adres Opdracht
A1[9A010000] mov eax, [a]
8B1D[9E010000] mov ebx, [b]
81FB00000000 cmp ebx, 0
7410 JE gedaan
BA00000000 mov edx, 0
... ...
A3[A2010000] gedaan: mov [ggd], eax

- Na het ophalen van mov eax, [A]

- Na het ophalen van cmp ebx, 0

- Na het uitvoeren van je gedaan (geef beide mogenlijkheden)

  • Gegeven: rij met getallen, een getal n wordt ingevoerd.

    Gevraagd: getalt op plaats n van de rij teruggeven, door gebruik te maken van subroutine en de stack.

  • Gegeven: DIMM met 8 ics van 128 Megabyte, en 8 banks, maximum 4 DIMMS.

    Gevraagd: Op welke manier kan FA545300 worden opgedeeld?

  • Leg Zone Bit Recording uit.
  • Gegeven cache(met blokken van 256 bytes)

   dubbelwoord op adres FA057402 vinden.

  • Wat zijn de doelstellingen van RAID.

    Bespreek RAID-0, RAID-1 en RAID-5 en welke doelstellingen volbrengen ze?

  • Gegeven: Een landbouwer heeft verschillende stukken grond.

Schrijf een programma dat als invoer meekrijgt:

 * kol. 0-20 : De naam(plaats) waar het stuk grond ligt.

 * kol. 22 : De functie van het stuk grond met 1 letter aangegeven(voor dieren of voedsel).

 * kol. 24-31 : De oppervlakte

 * kol. 33-40 : De prijs

En als uitvoer:

 * kol. 6-25: De naam

 * kol. 22- Prijs per meter

    

Januari 2011

  • Gegeven: [ijzel] en [sneeuw] en beiden worden opgeteld of vermenigvuldigd in ebx of eax. Er wordt gevraagd telkens de inhoud van eax en ebx te geven.
  • Assembler: Een invoerrecord bevat
    • productnaam
    • hoeveelheid (in liter)
    • aandeel alcohol in ml/l
    • een karakter B (bier) of W (wijn.)
      • Er wordt gevraagd een uitvoerrecord te schrijven in assembler dat de hoeveelheid ALCOHOL in liter berekent van enkel de wijn.
  • Bespreek DIMM
  • Geef het schema van een hedendaagse chipset
  • Een oefening met bevelenteller en bevelenregister (Hoofdstuk 2?)
  • Welke parameters heeft ExitProcess nodig?
  • Hoe weet de c.v.e dat het om een directe operand gaat, of om een adres na vertaling? Wat doet het vertaalprogramma? (anders geformuleerd)
  • Verschil tussen PCI en PCI-E uitleggen.
  • Een oefening waarbij een stuk asm code staat en 2 variabelen met hun inhoud(strings). op deze strings werd movsb en stosb gebruikt en dan moest je de inhoud van een variabele geven na de uitvoering van dat stuk code.
  • Noem de verschillende wachttijden van een geheugen en geef ook het voordeel van bloktransfer(+tijdschema van deze wachttijden)
  • Debiet berekenen van een harde schijf

Januari 2010

  • Bepaal de binaire voorstellingen van a en b
  • Tel de binaire voorstellingen a en b op
  • imul dword [b], geef de voorstellingen van eax en edx
  • idiv dword [c], geef de voorstellingen van eax en edx
  • Waarde bevelenteller zoeken tov bevelregister. Met een positieve jne.
  • Een vraag waarin je een stuk code met indexregisters enzo moet schrijven (pagina 75) + schrijf dit stukje code als subroutine + schrijf de oproepende commando's
  • Iets over de stapel en waar de instruction pointer staat na een bepaalde handeling( hoofdstuk 4.3)
  • Een vraag over de inhoud van het voorgeheugen (pagina 169, "toegepast als voorgeheugen zou dit....") Geef de inhoud als de CVE (bv.) 22DC2A04 vraagt.
  • Rekenen met C,H,S ( hoofdstuk 5.8.7) --> een schijf met C, H, S (2042, 8, 63), hoe veel sectoren heeft die + reken LBA 748 om naar (c,h,s)
  • Schrijf een programma dat een bestand uitleest en voor elke regel bepaald hoe veel keer i voorkomt (hoofdletter I telt ook mee)
    Invoer:
O julissi na jalyni
O julissi na dytini
O bulo diti non slukati
Sestrone dina katsu. 

O julissi na ti buku
...
(op het examen stond hier het volledige "lied", maar je snapt het idee wel)

Uitvoer: (12345678... zit NIET mee in uitvoerbestand)

12345678...
 3 O julissi na yalyni
 4 O julissi na dyntini
 3 O bulo diti non slukati
 1 Sestrone dina katsu.
 0
 3 O julissi na ti buku 
enz...
  • ...

Januari 2009

  • wat is het verschil tussen een vertaler en een vertolker + leg uit
  • wat is de 2-complement voorstelling van...
  • dan moest je nog zo'n adressering kunnen zoals op de voorlaatste test
  • een vraag over een autogarage iets, zoals er een gelijke in de boek staat.
  • nog iets van de 3d kaarten het verschil tussen een vga en een xvga geloof ik.
  • nog een vraag over iets van string naar integer zetten.
  • omrekenen van CHS naar LBA-nummer, en omgekeerd
  • verschil tussen hyperthreading processoren en multicore-processoren
  • de 3 verschillende vormen van RAID
  • en nog iets over de bevelenteller en checkbin

Oktober 2007

In oktober 2007 kreeg men in het vak Computersystemen de volgende test voorgeschoteld:

    0007 66A1[4F06]                    mov eax, [a]
         66F72E[5306]                  imul dword [b]
         662B06[5706]                  sub eax, [c]
         7430                          jz twee
         66A1[5706]           een:     mov eax, [c]
         66F72E[5306]                  imul dword [b]
         663906[5706]                  cmp [c],eax
         74??                          je een
         66A1[4F06]                    mov eax, [a]
    met [a] = 5, [b] = 2, [c] = 10

1. Wat is de inhoud van de bevelenteller en het bevelregister TIJDENS de uitvoering van het eerste mov-bevel (mov eax, [a])?

2. Wat is de volgende inhoud van de bevelenteller en bevelregister?

3. Wat is de inhoud van bevelenteller en bevelregister net na uitvoering van het eerste sprongbevel (jz twee)?

4. Wat is de inhoud van bevelenteller en bevelregister NET NA de uitvoering van het tweede sprongbevel (je een)?

5. Wat is de volgende inhoud van de bevelenteller en bevelregister?

Ook in 2009 kreeg men een vergelijkbare test.

En ook in 2010 kwam een gelijkaardige vraag op het examen.

Samenvattingen

Oefeningen en testen

Factorial %include 'gt.asm' covar limit: resd 1 result: dd 1 inleiding inv [limit] mov ecx, 1 call factorial uit [result] slot factorial: lus: mov eax, ecx imul dword [result] mov [result], eax add ecx, 1 cmp ecx, [limit] jle lus ret