Zelftest voor Bedrevenheid in Assembler

Introductie.

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:

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:

Opgave 1: Theorie.

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.

  1. Wat is het verschil tussen een DSECT en een CSECT?
  2. Waarvoor gebruik je de LTORG instructie?
  3. Hoe groot is het bereik van een base register?
  4. Wat zijn modale instructies? Wat voor soort instructies zijn dit?
  5. Wat is de relatie tussen AMODE en RMODE?
  6. Waarvoor gebruikt u een LOCTR?
  7. Hoe veel cijfers kan een packed decimal field bevatten? Waarom?
  8. Waaraan dient een programma te voldoen om als reusable te kunnen worden aangemerkt?
  9. Waaraan dient een programma te voldoen om als reenterable te kunnen worden aangemerkt?
  10. Wat is het verschil tussen een Y-con en een S-con?
  11. Waarvoor dient het PSW? Noem de 4 belangrijkste velden.
  12. Wat is een DCB, Wat is een ACB, en wat is het verschil?
  13. Wat is een CDE? Waar wordt het voor gebruikt?
  14. Hoe verzorg je de afronding van een packed decimal number?
  15. Hoe komt een re-entrant programma aan ruimte voor variabelen?
  16. Hoe zet je een "leesbaar" getal om in een packed decimal?
  17. Op welke manieren kun je een packed decimal omzetten in leesbare tekst?
  18. 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?
  19. In een edit patroon kunnen speciale place holders worden opgenomen. Geef van elke zowel de waarde als de betekenis.
  20. Waarin verschilt EDMK van ED en wanneer blijft dit effect achterwege?
  21. Wat is het verschil tussen een index register en een base register?
  22. Beschrijf exact het effect van MR 4,7
  23. Beschrijf exact het effect van DR 6,9
  24. Waarvoor zijn de eerste, tweede, en derde operand van de EQU instructie bedoeld?
  25. Welke 32-bits instructies gebruiken we voor loop-control?
  26. Waarvoor gebruiken we ORG?
  27. 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.
  28. Hoe verzorg je een SHIFT over een variabel aantal bits?
  29. Wat doet de EX instructie? Waarvoor wordt EX veel gebruikt?
  30. Hoe vind je programma de inhoud van de parameter op de EXEC-card waarmee het is aangeroepen?
  31. Wat betekent MACRF=GL op een DCB macro?
  32. Wat betekenen RECFM=VBS en RECFM=FBS?
  33. Wat is het verschil tussen EODAD en SYNAD?
  34. Wat is een V-con en wat is het verschil tussen een V-con enerzijds en een A-con met EXTRN anderzijds?
  35. Wat is een Address Space? Wat is een Task?
  36. Vanaf je TCB kun je de PRB chain aflopen. Waarvoor zou je dat doen?
  37. Wat doet de SNAP macro? Waarvoor gebruik je SNAP?
  38. Wat is een RDW? Wat is een BDW? Wat is het verschil?
  39. Waarvoor gebruik je een DCBE?
  40. Wat is het verschil tussen static en dynamic linkage? Geef het belangrijkste voordeel van elke methode.
  41. Wat zijn de LPA en de JPA? Wat is het verschil?
  42. Welke macro gebruik je om het effect van de LOAD macro ongedaan te maken?
  43. Wat is het verschil tussen LINK en CALL?
  44. Wat is een subpool? Waartoe dienen Cell Pool Services?
  45. Wat doet AGFR?
  46. Wat doet CY?
  47. Wat is het verschil tussen LLGT en LLILL?
  48. Wat doen SLAG en RLL?
  49. Wat is het verschil tussen HFP, BFP, en DFP?
  50. Wat is het verschil tussen ALRK en ALSIH?
  51. Wat is het verschil tussen LAAG en LOCG?
  52. Wat is de dead zone? Waarom heet deze zo?
  53. Waarvoor gebruiken we IEABRC? Hoe werkt IEABRC?
  54. Welke typen variabelen kennen we in macros?
  55. Geef aan hoe we concatenatie van SETC variabelen regelen en hoe we substrings opgeven. Geef een voorbeeld van elk.
  56. 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?
  57. Geef aan hoe we een created set symbol aanduiden. Geef een voorbeeld.
  58. Wat is het verschil tussen een label en een sequence symbol?
  59. Welke instructie gebruiken we om een loop te realiseren tijdens conditional assembly?
  60. Wat is het verschil tussen DC A(VELD) en DC AL4(VELD)

Opgave 2: Parameter-controle.

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:

Opgave 3: Bereken aftrekpost.

Let op:
Voor het aanroepen en testen van uw oplossing is een test-driver beschikbaar. Deze kunt u gebruiken en eventueel aanpassen naar behoefte.

Schrijf een zelfstandig subprogramma genaamd TOETS3 dat een aftrekpost moet berekenen als volgt:

Let op:
alle bedragen zijn opgeslagen als packed decimal met 9 cijfers voor de komma en twee er achter. De percentages zijn eveneens opgeslagen als packed decimal, maar dan met twee cijfers voor de komma en één er achter. Grensbedragen af te ronden op hele euros in het voordeel van de werknemer; eindresultaat afronden op centen, eveneens in het voordeel van de werknemer.

Het programma produceert een verslag-regel, die door het aanroepend module wordt afgedrukt, en eindigt met een van de volgende returncodes:

Opmaakvoorschriften verslagregel:

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

Opgave 4: Bouw een macro.

Let op:
Voor het aanroepen en testen van uw oplossing is een test-driver beschikbaar. Deze kunt u gebruiken en eventueel aanpassen naar behoefte.

Schrijf een macro DEFREGS die registernamen moet definiëren. Deze macro accepteert maximaal vier parameters:

  1. Positionele parm: startnummer register-reeks
  2. Positionele parm: eindnummer register-reeks
  3. Positionele parm: telwijze dec of hex, default dec
  4. Keyword parm: prefix, default is R

De parameters dienen als volgt verwerkt te worden:

Tot Slot.

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.
Rennende
    Tyrannosaurus Rex 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.