ÚVOD // 1. VÝPOČETNÍ SYSTÉMY JSEP 17 // 1.1. TECHNICKÉ VYBAVENÍ SYSTÉMU 17 // 1.1.1. Operační paměť 17 // 1.1.2. Základní jednotka 19 // 1.1.3. Systém vstupu a výstupu 20 // 1.1.4. Ovládací zařízení systému 20 // 1.1.5. Formáty dat 21 // 1.1.6. Instrukce 22 // 1.1.7. Průběh zpracování, přerušení 24 // 1.2. PROGRAMOVÉ VYBAVENÍ SYSTÉMU 25 // 1.2.1. Řídicí programy operačního systému 25 // 1.2.2. Výkonné programy operačního systému 26 // 1.2.3. Překlad a zpracování programů * 27 // 1.3. KONVENCE POPISU SYNTAKTICKÝCH STRUKTUR 27 // 2. ZÁKLADNÍ POJMY 29 // 2.1. ZÁPIS PROGRAMU 30 // 2.1.1. Kategorie znaků, symbol, dekadické číslo, textový řetězec 31 // 2.1.2. Formát příkazů, formulář 31 // 2.2. ABSOLUTNÍ A RELOKABILNÍ SYMBOLY 34 // 2.2.1. Předem definované symboly 34 // 2.3. ATRIBUT DÉLKY SYMBOLU 34 // 2.4. HODNOTA SYMBOLU, RELOKAČNÍ FAKTOR, ČÍTAČ ADRES 35 // 2.4.1. Modul a jeho struktura 35 // 2.4.2. Relokační faktor sekce 36 // 2.4.3. Hodnota symbolu 37 // 2.4.4. Čítač adres 38 // 2.5. VÝRAZY 38 // 2.5.1. Term 39 // 2.5.1.1. Přímé hodnoty 39 // 2.5.1.2. Reference atributu délky 40 // 2.5.2. Zápis výrazu 40 // 2.5.3. Vyhodnocení výrazu 41 // 2.5.4. Absolutní a relokabilní výrazy, adresace spojováním a adresace // bázováním 42 // 2.5.5. Atribut délky výrazu 44 // 2.6. LITERÁLY 44 // 3. PŘÍKAZY ASEMBLERU 46 // 3.1. ŘÍZENÍ PŘEKLADU 46 // 3.1.1. Příkaz TITLE — záhlaví protokolu // Příkaz EJECT — přechod na novou stránku // Příkaz SPACE — vynechání volných řádků // Příkaz PUNCH — přenos operandu do výstupu // Příkaz REPRO — přenos štítku do výstupu // Příkaz PRINT — řízení výstupu protokolu // Příkaz ISEQ — kontrola pořadí vstupních štítků // Příkaz ICTL — změna formátu štítku //
Příkaz END — ukončení zdrojového programu // Příkaz COPY — vložení textu ze zdrojové knihovny // Příkaz OPSYN — změna mnemonického kódu příkazu // OPERACE S ČÍTAČEM ADRES // Příkaz CNOP — zarovnání čítače adres // Příkaz ORG — nastavení čítače adres // Příkaz LTORG — založení oddílu literálů // DEFINICE SYMBOLU PŘÍKAZEM EQU // PŘÍKAZY DEFINICE DAT // ZÁPIS KONSTANTY V PŘÍKAZE DC // ZÁPIS KONSTANTY V PŘÍKAZE DS // PŘEKLAD PŘÍKAZŮ DEFINICE DAT // Algoritmus překladu příkazu definice dat // Seznam nominálních hodnot // Bitový zápis faktoru délky // ZÁPIS A PŘEKLAD NOMINÁLNÍ HODNOTY KONSTANTY // Znaková konstanta (typ C) // Hexadecimální konstanta (typ X) // Binární konstanta (typ B) // Dekadické konstanty (typy P a Z) // Zápis desetinného čísla, exponent a měřítko // Konstanty v pevné řádové čárce (typy H a F) // Konstanty v pohyblivé řádové čárce (typy E a D) // Adresní konstanty typu A a Y // Adresní konstanta typu V // Adresní konstanta typu S // ZÁPIS KONSTANTY V LITERÁLU // PŘÍKAZ VYMEZENÍ PAMĚTI // PŘÍKAZ CCW // POPIS SLOŽITĚJŠÍCH DATOVÝCH STRUKTUR // OPERANDY INSTRUKCÍ A ADRESACE // OPERANDY INSTRUKCÍ // ADRESACE, PŘÍKAZY USING A DROP // STROJOVÉ INSTRUKCE // ISTRUKCE A JEJICH OPERANDY // ZÁKLADNÍ INSTRUKCE // Operace s registry // Přesun slova L // Přesun půlslova LH // Násobný přesun slova LM // Přesun slabiky IC 6.2.1.5. Přesun podle masky ICM // 6.2.1.6. Přesun adresy LA // 6.2.1.7. Přesun registru LR // 6.2.1.8. Přesun a test registru LTR // 6.2.1.9. Přesun doplňku registru LCR // 6.2.1.10. Kladný přesun registru LPR // 6.2.1.11. Záporný přesun registru LNR // 6.2.1.12. Uložení slova SX // 6.2.1.13. Uložení půlslova STH // 6.2.1.14. Násobné uložení slova STM // 6.2.1.15. Uložení slabiky STC //
6.2.1.16. Uložení podle masky STCM // 6.2.2. Binární sčítání // 6.2.2.1. Přičtení slova A // 6.2.2.2. Přičtení registru AR // 6.2.2.3. Přičtení půlslova АН // 6.2.2.4. Logické přičtení slova AL // 6.2.2.5. Logické přičtení registru ALR // 6.2.3. Binární odčítání // 6.2.3.1. Odečtení slova S // 6.2.3.2. Odečtení registru SR // 6.2.3.3. Odečtení půlslova SH // 6.2.3.4. Logické odečtení slova SL // 6.2.3.5. Logické odečtení registru SLR // 6.2.4. Binární násobení // 6.2.4.1. Násobení slovem M // 6.2.4.2. Násobení registrem MR // 6.2.4.3. Násobem půlslovem MH // 6.2.5. Binární dělení // 6.2.5.1. Dělení slovem D // 6.2.5.2. Dělení registrem DR // 6.2.6. Disjunkce (OR) // 6.2.6.1. Disjunkce slova O // 6.2.6.2. Disjunkce registru OR // 6.2.6.3. Disjunkce pole slabik OC // 6.2.6.4. Disjunkce slabiky Ol // 6.2.7. Konjunkce (AND) // 6.2.7.1. Konjunkce slova N // 6.2.7.2. Konjunkce registru NR // 6.2.7.3. Konjunkce pole slabik NC // 6.2.7.4. Konjunkce slabiky NI // 6.2.8. Nonekvivalence (EXCLUSIVE OR) // 6.2.8.1. Nonekvivalence slova X // 6.2.8.2. Nonekvivalence registru XR // 6.2.8.3. Nonekvivalence pole slabik XC // 6.2.8.4. Nonekvivalence slabiky XI // 6.2.9. Binární posuvy // 6.2.9.1. Aritmetický posuv slova vlevo SLA // 6.2.9.2. Aritmetický posuv slova vpravo SRA // 6.2.9.3. Aritmetický posuv dvouslova vlevo SLDA // 6.2.9.4. Aritmetický posuv dvouslova vpravo SRDA // Logický posuv slova vlevo SLL // Logický posuv slova vpravo SRL // Logický posuv dvouslova vlevo SLDL // Logický posuv dvouslova vpravo SR DL // Přesuny // Přesun MVC // Přesun slabiky MVI // Přesun podle registru MVCL // Přesun číslic MVN // Přesun zón MVZ // Přesun s posuvem MVO // Porovnání a testování // Porovnání slova С // Porovnání registru CR // Porovnání půislova CH // Logické porovnání slova CL //
Logické porovnání registru CLR // Logické porovnání podle masky CLM // Logické porovnání pole slabik CLC // Logické porovnání slabiky CLI // Logické porovnání podle registru CLCL // Test podle masky TM // Převody a transformace dat // Převod do zhuštěné dekadické reprezentace PACK // Převod do rozvinuté dekadické reprezentace UNPK // Konverze do binární reprezentace CVB // Konverze do dekadické reprezentace CVD // Transformace TR // Transformace s testem TRT // ŘÍDICÍ INSTRUKCE // Větvení programu // Podmíněný skok BC // Podmíněný skok podle registru BCR // Rozšířený operační kód instrukcí BC a BCR // Organizace cyklů // Skok s čítáním BCT // Skok podle registru s čítáním BCTR // Skok při překročení čítače BXH // Skok při nepřekročení čítače BXLE // Volání podprogramu // Skok s uložením čítače instrukcí BAL // Skok podle registru s uložením čítače instrukcí BALR // Provedení instrukce EX // Speciální řídicí instrukce // Volání supervízoru SVC // Nastavení programové masky SPM // DEKADICKÉ INSTRUKCE // Aritmetické operace // Dekadické sčítání AP // Dekadické odčítání SP // Dekadické násobení MP // Dekadické dělení DP // Dekadický posuv SRP // Dekadický přesun ZAP // Dekadické porovnání CP // Ediční operace // Edice ED // Edice se značkou EDMK // INSTRUKCE REÁLNÉ ARITMETIKY // Operace s registry // Přesun krátký LE // Přesun dlouhý LD // Přesun registru krátký LER // Přesun registru dlouhý LDR // Přesun a test registru krátký LTER // Přesun a test registru dlouhý LTDR // Přesun doplňku registru krátký LCER // Přesun doplňku registru dlouhý LPER // Kladný přesun registru krátký LPER // Kladný přesun registru dlouhý LPDR // Záporný přesun registru krátký LNER // Záporný přesun registru dlouhý LNDR //
Přesun se zaokrouhlením krátký LRER // Přesun se zaokrouhlením dlouhý LRDR // Uložení krátké STE // Uložení dlouhé STD // Reálné sčítání // Přičtení krátké AE // Přičtení registru krátké AER // Přičtení dlouhé AD // Přičtem registru dlouhé ADR // Přičtení registru rozšířené AXR // Nenormalizované přičtení krátké AU // Nenormalizované přičtení registru krátké AUR // Nenormalizované přičtení dlouhé AW // Nenormalizované přičtení registru dlouhé // Reálné odčítání // Odečtení krátké SE // Odečtení registru krátké SER // Odečtení dlouhé SD // Odečtení registru dlouhé SDR // Odečtení registru rozšířené SXR // Nenormalizované odečtení krátké SU // Nenormalizované odečtení registru krátké SUR // Nenormalizované odečtení dlouhé SW // Nenormalizované odečtení registru dlouhé SWR // Reálné násobení // Násobení krátké ME // Násobení registrem krátké MER // Násobení dlouhé MD // Násobení registrem dlouhé MDR // Rozšířené násobení MXD 6.5.4.6. Rozšířené násobení registrem MXDR 225 // 6.5.4.7. Rozšířené násobení dvojicí registrů MXR 226 // 6.5.5. Reálné dělení 227 // 6.5.5.1. Dělení krátké DE 227 // 6.5.5.2. Dělení registrem krátké DER 228 // 6.5.5.3. Dělení dlouhé DD 229 // 6.5.5.4. Dělení registrem dlouhé DDR 229 // 6.5.5.5. Půlení registru krátké HER 230 // 6.5.5.6. Půlení registru dlouhé HDR 231 // 6.5.6. Reálné porovnání 231 // 6.5.6.1. Porovnání krátké CE 231 // 6.5.6.2. Porovnání registru krátké CER 232 // 6.5.6.3. Porovnání dlouhé CD 233 // 6.5.6.4. Porovnání registru dlouhé CDR 234 // 7. ČLENĚNÍ PROGRAMU, PROGRAMOVÉ SEKCE, // KOMUNIKACE MEZI MODULY 235 // 7.1. ČLENĚNÍ ZDROJOVÉHO PROGRAMU 235 // 7.2. PŘÍKAZY PRO ORGANIZACI SEKCÍ 237 // 7 2.1. Příkaz CSECT 237 //
7.2.2. Příkaz START 237 // 7.2.3. Příkaz DSECT 238 // 7.2.4. Příkaz COM 239 // 7.3. ULOŽENÍ SEKCÍ V MODULU, KOMUNIKACE MEZI SEKCEMI 239 // 7.3.1. Komunikace mezi sekcemi 241 // 7.3.2. Uložení literálů 242 // 7.4. KOMUNIKACE MEZI MODULY 244 // 7.4.1. Příkaz ENTRY 244 // 7.4.2. Příkazy EXTRN a WXTRN 245 // 7.4.3. Příklad komunikace mezi moduly 245 // 8. MAKROJAZYK 251 // 8.1. ZÁKLADNÍ POJMY 252 // 8.1.1. Řádné, proměnné a sekvenční symboly 252 // 8.1.2. Modelové příkazy a příkazy makrojazyka 253 // 8.1.3. Vyvolání makroinstrukce 254 // 8.2. ZÁPIS MAKRODEFINICE 255 // 8.2.1. Umístění makrodefinice 255 // 8.2.2. Vzorový příkaz a zápis makroinstrukce 256 // 8.2.3. Proměnné symboly 258 // 8.2.4. Symbolické parametry 258 // 8.2.5. SET symboly a deklarační příkazy 260 // 8.2.6. Systémové proměnné symboly 261 // 8.2.7. Atributy symbolu 264 // 8.2.7.1. Atribut typu 265 // 8.2.7.2. Atribut délky 266 // 8.2.7.3. Atribut měřítka 267 // 8.2.7.4. Atribut celé části 267 // 8.2.7.5. Atribut počtu znaků 268 // 8.2.7.6. Atribut počtu operandů 268 // 8.2.8. Indexace proměnných symbolů 269 // 10 8.2.8.1. Pole SET symbolů 269 // 8.2.5.2. Podseznamy 270 // 8.2.9. Výrazy makrojazyka 271 // 8.2.9.1. Typy objektů a proměnných symbolů 272 // 8.2.9.2. Aritmetický výraz 273 // 8.2.9.3. Znakový výraz 274 // 8.2.9.4. Relační výraz 277 // 8.2.9.5. Logický výraz 278 // 8.2.10. SET příkazy 279 // 8.2.11. Zápis a vyhodnocení modelových příkazů 280 // 8.3. PODMÍNĚNÝ PŘEKLAD 284 // 8.3.1. Sekvenční symboly 284 // 8.3.2. Příkaz AIF 284 // 8.3.3. Příkaz AGO 286 // 8.3.4. Příkaz ANOP 286 // 8.3.5. Příkaz ACTR 288 // 8.3.6. Příkaz MEXIT 288 // 8.4. GENERACE CHYBOVÉHO HLÁŠENÍ PŘÍKAZEM MNOTE 292 // 8.5. ZÁPIS A VYVOLÁNÍ MAKROINSTRUKCE 293 // 8.5.1. Zápis makroinstrukce 294 //
8.5.2. Korespondence mezi skutečnými a symbolickými parametry 297 // 8.5.3. Zápis podseznamu 299 // 8.5.4. Vyvolání vnitřní makroinstrukce 300 // 8.5.4.1. Forma zápisu a vyhodnocení parametrů vnitřních makroinstrukcí 302 // 8.5.4.2. Stanovení atributu symbolických parametrů 303 // 8.6. POUŽITÍ MAKROJAZYKA VE ZDROJOVÉM PROGRAMU 304 // 8.6.1. Proměnné symboly a deklarační příkazy 308 // 8.6.2. Atributy symbolu 309 // 8.6.3. Výrazy makrojazyka 309 // 8.6.4. Modelové příkazy 309 // 8.6.5. Příkazy podmíněného překladu a SET příkazy 310 // PŘÍLOHY 312 // 1. Přehled příkazů jazyka symbolických adres x 312 // 2. Tabulka strojových instrukcí 312