Zelftest voor Bedrevenheid in Assembler
Als onderdeel van ons cursus-curriculum hebben wij een tweetal
 assembler-testen ontwikkeld. Hiermee kunnen wij voor onze
 opdrachtgevers het eind-niveau van onze cursisten beoordelen.
Een van deze testen stellen wij nu beschikbaar op het web als
 zelf-test voor assembler-vaardigheden. De andere toets is beschikbaar
 op aanvraag.
Deze zelftest stelt u in staat een idee te krijgen over uw
 vaardigheden op het gebied van assembler. U kunt:
 - de toets maken en het resultaat op gevoel beoordelen
 
 - de toets maken en het resultaat door ons laten beoordelen
 
 - de toets door ons laten afnemen en beoordelen
 
Als wij de resultaten beoordelen, dan doen wij dat aan de hand van
 een standaard antwoord-set. Deze is getoetst in de praktijk en blijkt
 een redelijk nauwkeurig beeld te geven van het niveau van de
 kandidaten.
Voor vragen over ons cursus-aanbod of over
 deze toets, de normering, of over ander toets-materiaal neemt u aub
 contact op met Abe Kornelis.
Instructie en opgaven voor de zelftest.
Deze toets gaat uit van een z/OS-omgeving. Voor z/VM, z/VSE, z/TPF
 en/of z/Linux kunnen wij bij desgewenst aangepast toets-materiaal
 opstellen.
De toets bestaat uit 60 theorie-vragen en 3 praktijk-opgaven.
 Voor de theorie-vragen heeft u twee uur de tijd. Voor de
 praktijk-vragen heeft u 4 uur de tijd te verdelen als volgt:
Tijd die overblijft na het voltooien van een opdracht binnen de
 gestelde tijd kan naar eigen inzicht besteed worden.
Te behalen punten:
U mag uw boeken en aantekeningen gebruiken. Beantwoord de vragen in
 uw eigen bewoording; antwoorden die letterlijk zijn overgenomen worden
 als onjuist aangemerkt.
Antwoorden gaarne intoetsen onder elke vraag. Uw resultaat svp zowel
 electronisch als op papier inleveren.
 - Wat is het verschil tussen een DSECT en een CSECT?
 
 - Waarvoor gebruik je de LTORG instructie?
 
 - Hoe groot is het bereik van een base register?
 
 - Wat zijn modale instructies? Wat voor soort instructies zijn
  dit?
 
 - Wat is de relatie tussen AMODE en RMODE?
 
 - Waarvoor gebruikt u een LOCTR?
 
 - Hoe veel cijfers kan een packed decimal field bevatten?
  Waarom?
 
 - Waaraan dient een programma te voldoen om als reusable te kunnen
  worden aangemerkt?
 
 - Waaraan dient een programma te voldoen om als reenterable te
  kunnen worden aangemerkt?
 
 - Wat is het verschil tussen een Y-con en een S-con?
 
 - Waarvoor dient het PSW? Noem de 4 belangrijkste velden.
 
 - Wat is een DCB, Wat is een ACB, en wat is het verschil?
 
 - Wat is een CDE? Waar wordt het voor gebruikt?
 
 - Hoe verzorg je de afronding van een packed decimal number?
 
 - Hoe komt een re-entrant programma aan ruimte voor variabelen?
 
 - Hoe zet je een "leesbaar" getal om in een packed
  decimal?
 
 - Op welke manieren kun je een packed decimal omzetten in leesbare
  tekst?
 
 - Hoe geef je bij het formatteren van numerieke output op de
  relevante instructie aan dat voorloopnullen onderdrukt moeten worden?
  Hoe specificeer je welk teken de voorloopnullen moet vervangen?
 
 - In een edit patroon kunnen speciale place holders worden
  opgenomen. Geef van elke zowel de waarde als de betekenis.
 
 - Waarin verschilt EDMK van ED en wanneer blijft dit effect
  achterwege?
 
 - Wat is het verschil tussen een index register en een base
  register?
 
 - Beschrijf exact het effect van MR 4,7
 
 - Beschrijf exact het effect van DR 6,9
 
 - Waarvoor zijn de eerste, tweede, en derde operand van de EQU
  instructie bedoeld?
 
 - Welke 32-bits instructies gebruiken we voor loop-control?
 
 - Waarvoor gebruiken we ORG?
 
 - Hoe verwissel je de inhoud van twee velden A en B in virtueel
  geheugen zonder een hulp-veld te gebruiken? Idem voor twee 64-bits
  registers.
 
 - Hoe verzorg je een SHIFT over een variabel aantal bits?
 
 - Wat doet de EX instructie? Waarvoor wordt EX veel gebruikt?
 
 - Hoe vind je programma de inhoud van de parameter op de EXEC-card
  waarmee het is aangeroepen?
 
 - Wat betekent MACRF=GL op een DCB macro?
 
 - Wat betekenen RECFM=VBS en RECFM=FBS?
 
 - Wat is het verschil tussen EODAD en SYNAD?
 
 - Wat is een V-con en wat is het verschil tussen een V-con enerzijds
  en een A-con met EXTRN anderzijds?
 
 - Wat is een Address Space? Wat is een Task?
 
 - Vanaf je TCB kun je de PRB chain aflopen. Waarvoor zou je dat
  doen?
 
 - Wat doet de SNAP macro? Waarvoor gebruik je SNAP?
 
 - Wat is een RDW? Wat is een BDW? Wat is het verschil?
 
 - Waarvoor gebruik je een DCBE?
 
 - Wat is het verschil tussen static en dynamic linkage? Geef het
  belangrijkste voordeel van elke methode.
 
 - Wat zijn de LPA en de JPA? Wat is het verschil?
 
 - Welke macro gebruik je om het effect van de LOAD macro ongedaan te
  maken?
 
 - Wat is het verschil tussen LINK en CALL?
 
 - Wat is een subpool? Waartoe dienen Cell Pool Services?
 
 - Wat doet AGFR?
 
 - Wat doet CY?
 
 - Wat is het verschil tussen LLGT en LLILL?
 
 - Wat doen SLAG en RLL?
 
 - Wat is het verschil tussen HFP, BFP, en DFP?
 
 - Wat is het verschil tussen ALRK en ALSIH?
 
 - Wat is het verschil tussen LAAG en LOCG?
 
 - Wat is de dead zone? Waarom heet deze zo?
 
 - Waarvoor gebruiken we IEABRC? Hoe werkt IEABRC?
 
 - Welke typen variabelen kennen we in macros?
 
 - Geef aan hoe we concatenatie van SETC variabelen regelen en hoe we
  substrings opgeven. Geef een voorbeeld van elk.
 
 - Geef aan hoe we een element uit een array van SETC variabelen
  aanduiden. Geef een voorbeeld. Wat is het maximale aantal dimensies
  dat HLASM ondersteunt?
 
 - Geef aan hoe we een created set symbol aanduiden. Geef een
  voorbeeld.
 
 - Wat is het verschil tussen een label en een sequence symbol?
 
 - Welke instructie gebruiken we om een loop te realiseren tijdens
  conditional assembly?
 
 - Wat is het verschil tussen DC A(VELD) en DC AL4(VELD)
 
Schrijf een programma dat een JCL-parameter accepteert. Deze dient
 een geldig getal te bevatten tussen 0 en 4095 inclusief. Het programma
 dient deze parameter te verwerken als volgt:
 - Indien een geldige waarde is opgegeven, dient het programma te
  eindigen en de opgegeven waarde als returncode af te geven.
 
 - Indien de string ontbreekt dient een user abend 101 afgegeven te
  worden.
 
 - Indien de string geen geldig geheel getal bevat dient een user
 abend 102 afgegeven te worden.
 
 - Indien het gevonden getal buiten de opgegeven range valt dient een
  user abend 103 afgegeven te worden.
 
 - Bij foutsituaties dient een duidelijk foutboodschap afgegeven te
  worden.
 
Schrijf een zelfstandig subprogramma genaamd TOETS3 dat een
 aftrekpost moet berekenen als volgt:
 - Als het nominale bedrag van de aftrekpost onder een drempel-bedrag
  blijft wordt de aftrekpost op nul gesteld. Het drempel-bedrag is een
  percentage van het bruto inkomen; wel geldt er een minimum voor het
  drempel-bedrag.
 
 - Als het nominale bedrag van de aftrekpost boven een maximum
  uitkomt, dan wordt het op dat maximum gemaximeerd. Het maximum is een
  percentage van het bruto-inkomen; hierbij geldt tevens een absoluut
  maximum. Bij een negatief bruto-inkomen kan geen aftrek plaats
  vinden.
 
 - Bovenstaande berekening levert een 'herzien nominaal bedrag' op.
  Het aftrekbare bedrag wordt afgeleid van het herzien nominaal bedrag
  door een percentage toe te passen uit een tabel. De tabel is geen
  staffel; slechts één percentage is van toepassing. Dit
  percentage wordt bepaald door het interval waarin het herzien
  nominaal bedrag valt. De tabel is oplopend gesorteerd op
  maximum-bedrag.
 
 - Het programma dient het aftrekbare bedrag terug te geven, alle
  overige velden moeten ongewijzigd blijven.
 
Het programma produceert een verslag-regel, die door het aanroepend
 module wordt afgedrukt, en eindigt met een van de volgende
 returncodes:
 - 00 - aftrekbaar bedrag is groter dan nul
 
 - 04 - aftrekbaar bedrag is nihil
 
 - 08 - aftrekbaar bedrag niet berekend omdat:
  a) input niet packed decimal of
  b) geen toepasselijke tabel-entry gevonden 
 - 12 - overige interne fouten
 
Opmaakvoorschriften verslagregel:
 - Opmaak nominaal bedrag: punten en komma toevoegen, voorloopnullen
  onderdrukken, minstens 1 cijfer voor de komma behouden. Bij negatieve
  bedragen een min-teken plaatsen voor het bedrag; min-teken en bedrag
  dienen door een spatie van elkaar gescheiden te zijn.
 
 
 - Opmaak aftrekbaar bedrag: punten en komma toevoegen,
  voorloopnullen onderdrukken, minstens 1 cijfer voor de komma
  behouden. Indien het bedrag in hele euro's luidt, dan de centen
  afdrukken als twee streepjes, b.v. 12,-- voor twaalf Euro. Als het
  aftrekbaar bedrag op nul uitkomt, dan "Nihil" afdrukken.
 
 
 - Opmerkingen veld: begint met 5 spaties, bestemd voor
  fout-meldingen. Het programma hoeft niet meer dan 1 melding af te
  geven.
 
Als input krijgt het programma een pointer in R1 naar de volgende
 parmlist:
PARM1    DC A(PARMAREA)   * Pointer naar parameter-gebied
PARM2    DC A(PRTLINE)    * Pointer naar buffer voor printregel
Indeling parameter-gebied:
NOMINAAL DC PL6           * Nominaal bedrag aftrekpost
RESULT   DC PL6           * Berekende aftrekpost
BRUTO    DC PL6           * Bruto inkomen
MINPERC  DC PL2           * Percentage drempelwaarde
MINBEDR  DC PL6           * Minimum bedrag drempelwaarde
MAXPERC  DC PL2           * Percentage bovengrens
MAXBEDR  DC PL6           * Maximum bedrag bovengrens
TABSIZE  DC H             * Aantal entries in de tabel
TABLEN   DC H             * Lengte van elke entry
TABPTR   DC AL4           * Pointer naar tabel
De entries van de tabel zijn als volgt ingedeeld:
GRENS    DC PL6           * Bovengrens voor dit percentage
PERC     DC PL2           * Toepassingspercentage
         DC CL0           * Filler tot volgende entry
De printregel is als volgt ingedeeld:
PRTNOMNL DC CL20          * Nominaal bedrag
PRTRESLT DC CL20          * Aftrekbaar bedrag
PRTOPM   DC CL40          * Opmerkingen veld
Schrijf een macro DEFREGS die registernamen moet definiëren.
 Deze macro accepteert maximaal vier parameters:
 - Positionele parm: startnummer register-reeks
 
 - Positionele parm: eindnummer register-reeks
 
 - Positionele parm: telwijze dec of hex, default dec
 
 - Keyword parm: prefix, default is R
 
De parameters dienen als volgt verwerkt te worden:
 - Start- en eindnummers conform gebruik in STM instructie
 
 - telwijze dec nummert de registers decimaal 0, 1, ... 14, 15
 
 - telwijze hex nummert de registers hexadecimaal 0, 1, ... E, F
 
 - Geldige prefixen: R, GPR, CR, AR, of FPR
 
 - Overtollige parameters dienen tot een foutmelding te leiden
 
U heeft nu de opgaven gemaakt. U had daar zes uren voor. Bent u
 binnen de tijd gebleven?
Als u wilt, dan kunnen we de resultaten beoordelen. Neem hiervoor
 contact op met Abe Kornelis.
 
 Let op: beoordelen kost tijd en is niet gratis.
 
 
  
   Deze site is aangesloten bij WebRing. 
   Bekijkt u gerust de
   
    lijst van mainframe-gerelateerde sites.
   | 
  
    
   | 
  
   Dino's zijn niet dood. Ze zijn gezond en wel en leven in
   computer-centra overal
   om ons heen. Zij spreken in tongen en doen wonderbare magie met
   computers.
   Pas op voor de dino! En voor het geval u zit te wachten op het
   definitieve
   einde van deze dino's: onthoud dat dino's de wereld 155 miljoen
   jaren hebben
   geregeerd!
   | 
 
 
  
   Dino's en andere anachronismen 
   [ 
      Aanmelden
   | 
       Ring Overzicht
   | Willekeurig
   |
   
     
      << Vorige
   
   |
   
    
     Volgende >>
   
   ] 
    
   | 
 
 Naar de Introductie.
 Naar Opgave 1: Theorie.
 Naar Opgave 2: Parameter-controle.
 Naar Opgave 3: Bereken aftrekpost.
 Naar Opgave 4: Bouw een macro.
 Naar de Afronding.
 Naar de nederlandse homepage.
 Naar de algemene homepage.
 Hieronder vindt u het logo van onze
 sponsor
 en logos van web-standaarden waaraan deze web-pagina voldoet.