Štruktúra pokynu pre montážny jazyk obsahuje. Príkazy jazyka zhromaždenia. RAM, registre, prezentácia dát

Aby bol stroj schopný vykonávať ľudské príkazy na hardvérovej úrovni, je potrebné nastaviť určitú postupnosť akcií v jazyku „nuly a jednotky“. Zostavovateľ sa stane v tejto veci asistentom. Jedná sa o obslužný program, ktorý pracuje s prekladom príkazov do strojového jazyka. Písanie programu je však veľmi namáhavý a zložitý proces. Účelom tohto jazyka nie je vytvárať ľahké a jednoduché akcie. V súčasnosti vám akýkoľvek použitý programovací jazyk (Assembler funguje skvele) umožňuje písať špeciálne efektívne úlohy, ktoré výrazne ovplyvňujú činnosť hardvéru. Hlavným účelom je vytvorenie mikropríkazov a malých kódov. Tento jazyk poskytuje viac možností ako napríklad Pascal alebo C.

Stručný opis asemblerových jazykov

Všetky programovacie jazyky sú rozdelené do úrovní: nízka a vysoká. Ktorýkoľvek zo syntaktických systémov „rodiny“ Assemblerovcov sa líši v tom, že kombinuje niektoré výhody najbežnejších a najmodernejších jazykov naraz. Súvisia s ostatnými tým, že počítačový systém je možné plne využívať.

Charakteristickou črtou kompilátora je jeho ľahké použitie. Vďaka tomu sa líši od tých, ktoré fungujú iba na vysokých úrovniach. Ak vezmete do úvahy akýkoľvek taký programovací jazyk, Assembler je dvakrát rýchlejší a lepší. Napísať do nej odľahčený program netrvá príliš dlho.

Stručne o štruktúre jazyka

Ak hovoríme všeobecne o práci a štruktúre fungovania jazyka, môžeme s istotou povedať, že jeho príkazy úplne zodpovedajú príkazom procesora. To znamená, že Assembler používa mnemotechnické kódy, ktoré sú pre človeka najpohodlnejšie na písanie.

Na rozdiel od iných programovacích jazykov používa Assembler na zápis do pamäte namiesto adries konkrétne štítky. S procesom vykonávania kódu sú preložené do takzvaných smerníc. Jedná sa o relatívne adresy, ktoré neovplyvňujú procesor (nie sú preložené do jazyka stroja), ale sú potrebné na rozpoznanie samotným programovacím prostredím.

Každý riadok procesora má svoj vlastný. V takom prípade bude akýkoľvek proces vrátane preloženého správny

Montážny jazyk má niekoľko syntaxí, ktorým sa budeme v článku venovať.

Plusy jazyka

Najdôležitejšou a najpohodlnejšou vlastnosťou montážneho jazyka bude, že môžete pre procesor napísať ľubovoľný program, ktorý bude veľmi kompaktný. Ak sa ukáže, že kód je obrovský, potom sú niektoré procesy presmerované do pamäte RAM. Zároveň robia všetko dostatočne rýchlo a bez zlyhaní, pokiaľ ich samozrejme neovláda kvalifikovaný programátor.

Ovládače, operačné systémy, BIOS, kompilátory, tlmočníci atď. Sú program montážny jazyk.

Pri použití demontéra, ktorý prekladá zo stroja na stroj, môžete ľahko pochopiť, ako konkrétna systémová úloha funguje, aj keď pre ňu neexistuje vysvetlenie. To je však možné, iba ak sú programy ľahké. Bohužiaľ je dosť ťažké porozumieť netriviálnym kódom.

Nevýhody jazyka

Pre začínajúcich programátorov (a často aj pre profesionálov) je, bohužiaľ, ťažké analyzovať jazyk. Assembler vyžaduje podrobný popis požadovaného príkazu. Z dôvodu potreby použitia strojových pokynov sa zvyšuje pravdepodobnosť chybných akcií a zložitosť vykonania.

Aby toho napísalo čo najviac jednoduchý program, programátor musí byť kvalifikovaný a jeho úroveň vedomostí je dostatočne vysoká. Priemerný špecialista, bohužiaľ, často píše zlé kódy.

Ak sa aktualizuje platforma, pre ktorú je program vytvorený, musia byť všetky príkazy prepísané ručne - vyžaduje to samotný jazyk. Montážny program nepodporuje funkciu automatickej regulácie stavu procesov a výmeny akýchkoľvek prvkov.

Jazykové príkazy

Ako už bolo spomenuté vyššie, každý procesor má svoju vlastnú sadu pokynov. Najjednoduchšie prvky, ktoré rozpoznáva každý typ, sú nasledujúce kódy:


Pomocou smerníc

Programovanie mikrokontrolérov v jazyku (Assembler to umožňuje a perfektne sa vyrovná s fungovaním) na najnižšej úrovni sa vo väčšine prípadov končí dobre. Najlepšie je používať procesory s obmedzenými zdrojmi. Pre 32-bitovú technológiu je tento jazyk perfektný. Príkazy často vidíte v kódoch. Čo to je? A na čo sa používa?

Najprv musíte zdôrazniť, že smernice nie sú preložené do strojového jazyka. Určujú, ako kompilátor pracuje. Na rozdiel od príkazov sa tieto parametre, ktoré majú odlišné funkcie, nelíšia vďaka rôznym procesorom, ale vďaka odlišnému prekladaču. Medzi hlavné smernice patrí:


pôvod mena

Prečo tento jazyk dostal názov - „Assembler“? Hovoríme o prekladači a prekladači, ktorí šifrujú dáta. V angličtine Assembler neznamená nič iné ako assembler. Program nebol zostavený ručne, bola použitá automatická štruktúra. Navyše v súčasnosti rozdiel medzi výrazmi už medzi používateľmi a špecialistami zmizol. Montážny jazyk sa často označuje ako programovacie jazyky, aj keď je to iba pomôcka.

Kvôli všeobecne akceptovanému kolektívnemu názvu sa niektorí ľudia dopúšťajú mylného rozhodnutia, že existuje jeden jazyk na nižšej úrovni (alebo pre neho štandardné normy). Aby programátor pochopil, o akej štruktúre hovoríme, je potrebné si ujasniť, pre ktorú platformu sa tento alebo ten montážny jazyk používa.

Makro nástroje

Montážne jazyky, ktoré sú relatívne čerstvé, majú makro vybavenie. Uľahčujú program pri písaní a spúšťaní. Vďaka svojej prítomnosti prekladateľ vykoná napísaný kód mnohokrát rýchlejšie. Pri vytváraní podmieneného výberu môžete napísať obrovský blok príkazov, ale jednoduchšie je používať makro nástroje. Umožní vám rýchle prepínanie medzi akciami v prípade splnenia podmienky alebo nesplnenia.

Pri použití smerníc jazyka makra programátor prijíma makra zostáv. Niekedy môže byť široko používaný a niekedy je jeho funkčnosť obmedzená na jeden príkaz. Ich prítomnosť v kóde uľahčuje prácu s ním, robí ho prehľadnejším a intuitívnejším. Mali by ste však byť stále opatrní - v niektorých prípadoch naopak makrá situáciu zhoršujú.

Kurzová práca

V disciplíne „Programovanie systému“

Téma číslo 4: „Riešenie problémov s postupmi“

Možnosť 2

VÝCHODNÁ SIBÍRSKA ŠTÁTNA UNIVERZITA

TECHNOLÓGIA A KONTROLA

____________________________________________________________________

TECHNOLOGICKÁ KOLEKCIA

ÚLOHA

pre seminárnu prácu

Disciplína:
Téma: Riešenie problémov s postupmi
Účinkujúci: Glavinskaya Arina Alexandrovna
Hlava: DambaevaSesegma Viktorovna
Zhrnutie práce: štúdium rutín v assembleri,
riešenie problémov pomocou podprogramov
1. Teoretická časť: Základné informácie o jazyku Assembly (množ
príkazy atď.), Organizácia podprogramov, Metódy zadávania parametrov
v podprogramoch
2. Praktická časť: Vytvorte dva podprogramy, z ktorých jeden prevedie ľubovoľné dané písmeno na veľké (vrátane ruských) a druhý prevedie písmeno na malé.
skonvertuje ktorékoľvek dané písmeno na veľké a druhé na malé.
prevádza písmeno na malé písmená.
Termíny projektu podľa harmonogramu:
1. Teoretická časť - 30% do 7 týždňov.
2. Praktická časť - 70% do 11 týždňov.
3. Ochrana - 100% do 14. týždňa.
Požiadavky na registráciu:
1. Vyrovnanie a vysvetľujúca poznámka k projektu kurzu by mala byť uvedená v
elektronické a tlačené kópie.
2. Objem správy by mal byť minimálne 20 stránok napísaných strojom okrem príloh.
3. RPZ je vypracovaný v súlade s GOST 7.32-91 a podpísaný hlavou.

Vedúci práce __________________

Dodávateľ __________________

Dátum vydania " 26 " september 2017 g.


Úvod. 2

1.1 Základné informácie o jazyku zhromaždenia. 3

1.1.1 Sada príkazov. 4

1.2 Organizácia podprogramov v montážnom jazyku. 4

1.3 Metódy odovzdávania parametrov v podprogramoch. 6

1.3.1 Prenos parametrov cez registre .. 6

1.3.2 Prechod parametrov cez zásobník. 7

2 PRAKTICKÁ ČASŤ .. 9

2.1 Vyhlásenie o probléme. deväť

2.2 Popis riešenia problému. deväť

2.3 Testovanie programu .. 7

Záver. osem

Referencie .. 9


Úvod

Je všeobecne známe, že programovanie v Assembleri je náročné. Ako viete, v súčasnosti existuje veľa rôznych jazykov. vysoký stupeňktoré vám umožňujú vynaložiť oveľa menšie úsilie pri písaní programov. Prirodzene vyvstáva otázka, kedy bude možno potrebné, aby programátor pri písaní programov používal Assembler. V súčasnosti existujú dve oblasti, v ktorých je použitie montážneho jazyka oprávnené a často nevyhnutné.

Po prvé, ide o takzvané strojovo závislé systémové programy, ktoré zvyčajne ovládajú rôzne zariadenia počítač (také programy sa nazývajú ovládače). V týchto systémové programy Používajú sa špeciálne pokyny pre stroj, ktoré sa nemusia bežne používať (alebo, ako sa hovorí aplikovaný) programy. Tieto príkazy sú nemožné alebo ťažko definovateľné v jazyku vyššej úrovne.

Druhá oblasť použitia Assemblera súvisí s optimalizáciou vykonávania programu. Prekladové programy (prekladače) z jazykov vysokej úrovne veľmi často vytvárajú veľmi neefektívny program v strojovom jazyku. Zvyčajne to platí pre programy výpočtovej povahy, v ktorých sa väčšinu času vykonáva veľmi malá (asi 3 - 5%) časť programu (hlavná slučka). Na vyriešenie tohto problému je možné použiť takzvané viacjazyčné programovacie systémy, ktoré umožňujú písať časti programu v rôznych jazykoch. Hlavná časť programu je zvyčajne napísaná v programovacom jazyku na vysokej úrovni (Fortran, Pascal, C atď.) A časovo náročné časti programu sú napísané v Assembleri. V takom prípade sa dá výrazne zvýšiť rýchlosť celého programu. Toto je často jediný spôsob, ako dosiahnuť, aby program priniesol výsledok v primeranom čase.

Účelom tejto práce je získať praktické zručnosti v programovaní v montážnom jazyku.

Pracovné úlohy:

1. Naučte sa základné informácie o jazyku Assembler (štruktúra a komponenty programu Assembler, formát príkazu, organizácia podprogramov atď.);

2. Na štúdium typov bitových operácií, formátu a logiky logických pokynov Assemblera;

3. Vyriešte individuálny problém použitia podprogramov v Assembleri;

4 .. Sformulujte záver o vykonanej práci.

1 TEORETICKÁ ČASŤ

Pochopenie jazyka zhromaždenia

Assembler je programovací jazyk na nízkej úrovni, ktorý je ľudsky čitateľným formátom pre pokyny na písanie stroja.

Pokyny v montážnom jazyku zodpovedajú jednotlivo inštrukciám procesora a v skutočnosti predstavujú pohodlnú symbolickú formu zápisu (mnemotechnický kód) príkazov a ich argumentov. Montážny jazyk taktiež poskytuje základné softvérové \u200b\u200babstrakcie: prepojenie častí programu a údajov prostredníctvom štítkov so symbolickými názvami a smernicami.

Direktívy Assembleru umožňujú zahrnúť do programu dátové bloky (explicitne opísané alebo načítané zo súboru); opakujte určitý fragment zadaný počet opakovaní; podmienene zostaviť fragment; nastaviť adresu vykonávania fragmentu, zmeniť hodnoty štítku počas kompilácie; používať makra s parametrami atď.

Výhody a nevýhody

· Minimálne množstvo nadbytočného kódu (pri použití menšieho množstva pokynov a prístupov do pamäte). Vo výsledku - vyššia rýchlosť a menšia veľkosť programu;

· Veľké množstvo kódu, veľké množstvo ďalších malých úloh;

· Slabá čitateľnosť kódu, ťažkosti s udržiavaním (ladenie, pridávanie funkcií);

· Zložitosť implementácie programovacích paradigiem a akýchkoľvek ďalších zložitejších konvencií, zložitosť spoločného vývoja;

· Menej dostupných knižníc, ich nízka kompatibilita;

· Priamy prístup k hardvéru: vstupno-výstupné porty, špeciálne registre procesora;

· Maximálne „prispôsobenie“ požadovanej platforme (použitie špeciálnych pokynov, technické vlastnosti „hardvéru“);

· Neznášanlivosť na iné platformy (okrem binárne kompatibilných).

Okrem pokynov môže program obsahovať aj smernice: príkazy, ktoré sa priamo neprekladajú do strojových pokynov, ale riadia činnosť prekladača. Ich množina a syntax sa značne líšia a závisia nie od hardvérovej platformy, ale od použitého kompilátora (čo vedie k dialektom jazykov v rámci rovnakej rodiny architektúr). Ako súbor smerníc je možné vyčleniť:

· Definícia údajov (konštanty a premenné);

· Riadenie organizácie programu v pamäti a parametre výstupného súboru;

· Nastavenie prevádzkového režimu prekladača;

· Všetky druhy abstrakcií (t. J. Prvky jazykov na vysokej úrovni) - od návrhu postupov a funkcií (na zjednodušenie implementácie paradigmy procedurálneho programovania) až po podmienené štruktúry a cykly (pre paradigmu štruktúrovaného programovania)

· Makrá.

Sada príkazov

Typické príkazy v jazyku zhromaždenia sú:

Príkazy na prenos dát (mov atď.)

Aritmetické príkazy (add, sub, imul atď.)

Logické a bitové operácie (alebo, a, xor, shr atď.)

· Príkazy na riadenie vykonávania programu (jmp, loop, ret, atď.)

Prerušenie volacích príkazov (niekedy označovaných ako riadiace príkazy): int

I / O príkazy pre porty (vstup, výstup)

Pre mikrokontroléry a mikropočítače sú charakteristické aj príkazy, ktoré vykonávajú kontrolu a prechod podľa podmienok, napríklad:

Jne - pohyb, ak nie je rovný;

· Jge - skok, ak je väčší alebo rovný.

Všeobecné informácie o montážnom jazyku

Symbolický montážny jazyk umožňuje do značnej miery eliminovať nedostatky programovania strojov.

Jeho hlavnou výhodou je, že v assembleri sú všetky prvky programu reprezentované v symbolickej podobe. Za prevod názvov symbolických príkazov na ich binárne kódy je zodpovedný špeciálny program - assembler, ktorý programátora zbavuje časovo náročnej práce a eliminuje nevyhnutné chyby.

Symbolické názvy zadané v programovaní v assembleri zvyčajne odrážajú sémantiku programu a ich hlavnou funkciou je skratka pokynov. Napríklad: PARAM - parameter, TABLE - tabuľka, MASK - maska, ADD - sčítanie, SUB - odčítanie atď. n. Takéto názvy si programátor ľahko zapamätá.

Na programovanie v montážnom jazyku musíte mať komplexné nástroje ako na programovanie v strojovom jazyku: potrebujete počítačové systémy založené na mikropočítači alebo PC so sadou periférnych zariadení (alfanumerická klávesnica, zobrazenie znakov, disketová jednotka a tlačové zariadenie), ako aj rezident alebo medzisystémové programovanie pre požadované typy mikroprocesorov. Montážny jazyk vám umožňuje efektívne písať a ladiť oveľa zložitejšie programy ako strojový jazyk (do 1 - 4 KB).

Montážne jazyky sú strojovo orientované, to znamená, že závisia od strojového jazyka a štruktúry zodpovedajúceho mikroprocesora, pretože v nich je každej inštrukcii mikroprocesora priradené určité symbolické meno.

Montážne jazyky poskytujú významné zvýšenie produktivity programátorov v porovnaní so strojovými jazykmi a zároveň si zachovávajú schopnosť využívať všetky softvérovo dostupné hardvérové \u200b\u200bprostriedky mikroprocesora. Toto umožňuje skúseným programátorom písať programy, ktoré sa vykonajú za kratší čas a zaberú menej pamäte ako programy napísané v jazyku vyššej úrovne.

V tomto ohľade sú takmer všetky programy na riadenie vstupných / výstupných zariadení (ovládačov) napísané v montážnom jazyku, a to aj napriek pomerne veľkej nomenklatúre jazykov na vysokej úrovni.

Pomocou montážneho jazyka môže programátor nastaviť nasledujúce parametre:

mnemotechnická pomôcka (symbolický názov) každej inštrukcie v strojovom jazyku mikroprocesora;

štandardný formát pre riadky asemblerového programu;

formát na označenie rôzne cesty možnosti adresovania a príkazov;

formát určenia symbolických konštánt a konštánt celočíselného typu v rôznych číselných systémoch;

pseudopríkazy, ktoré riadia proces zostavenia (prekladu) programu.

V montážnom jazyku je program písaný riadok po riadku, to znamená, že pre každú inštrukciu je pridelený jeden riadok.

Pre mikropočítače postavené na báze najbežnejších typov mikroprocesorov môže existovať niekoľko variantov montážneho jazyka, praktická distribúcia však zvyčajne existuje iba jedna - ide o takzvaný štandardný montážny jazyk.

Programovanie na úrovni strojových pokynov je minimálna úroveň, na ktorej je možné programovanie. Systém strojových pokynov musí byť dostatočný na vykonanie požadovaných akcií a vydávanie pokynov pre hardvér počítača.

Každá strojová inštrukcia sa skladá z dvoch častí:

· Operačná sála - určenie „čo robiť“;

· Operand - definovanie spracovávaných objektov, „čo s čím“.

Mikroprocesorová strojová inštrukcia napísaná v montážnom jazyku je jeden riadok v tejto syntaktickej podobe:

príkazový / direktívny operátor (operátory) štítku; komentáre

V takom prípade je príkaz alebo smernica povinným poľom v riadku.

Štítok, príkaz / smernica a operandy (ak existujú) sú oddelené najmenej jednou medzerou alebo znakom tabulátora.

Ak je potrebné v príkaze alebo smernici pokračovať na ďalšom riadku, použije sa znak spätnej lomky: \\.

V predvolenom nastavení montážny jazyk pri písaní príkazov alebo smerníc nerozlišuje medzi veľkými a malými písmenami.

Priame adresovanie: Efektívna adresa je určená priamo poľom posunu inštrukcie stroja, ktoré môže byť 8, 16 alebo 32 bitov.

mov eax, suma; eax \u003d súčet

Assembler nahradí súčet zodpovedajúcou adresou uloženou v dátovom segmente (štandardne sa to rieši registrom ds) a hodnota uložená na súhrnnej adrese sa umiestni do registra eax.

Nepriame adresovaniemá nasledujúce typy:

· Nepriame základné (registračné) adresovanie;

· Nepriame základné (registračné) adresovanie s offsetom;

· Nepriame adresovanie indexu;

· Nepriame adresovanie základného indexu.

Nepriame základné (registračné) adresovanie.S týmto adresovaním môže byť efektívna adresa operandu v ktoromkoľvek z univerzálnych registrov, s výnimkou sp / esp a bp / ebp (jedná sa o konkrétne registre pre prácu so segmentom zásobníka). Syntakticky je tento režim adresovania v príkaze vyjadrený vložením názvu registra do hranatých zátvoriek.

mov eax ,; eax \u003d * esi; * hodnota esi pri esi

Štruktúra inštrukcie v montážnom jazyku Programovanie na úrovni strojových inštrukcií je minimálna úroveň, na ktorej je možné počítačové programovanie. Sada pokynov pre stroj musí byť dostatočná na vykonanie požadovaných akcií vydaním pokynov pre hardvér stroja. Každá strojová inštrukcia sa skladá z dvoch častí: operačnej, ktorá definuje „čo má robiť“, a operandu, ktorý definuje spracované objekty, teda čo má robiť. Inštrukcia mikroprocesorového stroja napísaná v jazyku Assembly je jedným riadkom v tejto podobe: návestie / inštrukcie operátora (ov) smernice; komentáre Štítok, príkaz / smernica a operand sú oddelené najmenej jednou medzerou alebo znakom tabulátora. Príkazy operandov sú oddelené čiarkami.

Štruktúra inštrukcie montážneho jazyka Inštrukcia montážneho jazyka hovorí prekladateľovi, aké kroky by mal mikroprocesor podniknúť. Direktívy asemblera sú parametre nastavené v texte programu, ktoré ovplyvňujú proces montáže alebo vlastnosti výstupného súboru. Operand definuje počiatočnú hodnotu údajov (v dátovom segmente) alebo prvkov, na ktoré má príkaz reagovať (v segmente kódu). Inštrukcia môže mať jeden alebo dva operandy alebo žiadne operandy. Počet operandov je implicitne určený príkazovým kódom. Ak je potrebné v príkaze alebo smernici pokračovať na ďalšom riadku, použije sa znak spätnej lomky: „“. V predvolenom nastavení Assembler pri písaní príkazov a smerníc nerozlišuje medzi malými a malými písmenami. Príklady direktív a príkazov Count db 1; Názov, smernica, jeden operand mov eax, 0; Velenie, dvaja operandi

Identifikátory sú sekvencie platných znakov, ktoré sa používajú na označenie mien premenných a mien štítkov. Identifikátor môže pozostávať z jedného alebo viacerých z nasledujúcich znakov: všetky písmená latinskej abecedy; čísla od 0 do 9; špeciálne znaky: _, @, $ ,? ... Ako prvý znak štítku je možné použiť bodku. Ako identifikátory nemožno použiť rezervované názvy assemblerov (smernice, operátory, názvy príkazov). Prvý znak identifikátora musí byť písmeno alebo špeciálny znak. Maximálna dĺžka identifikátora je 255 znakov, ale prekladateľ akceptuje prvých 32, zvyšok ignoruje. Všetky štítky, ktoré sú napísané v riadku, ktorý neobsahuje direktívu assemblera, musia končiť dvojbodkou „:“. Štítok, príkaz (smernica) a operand nemusia začínať na žiadnej konkrétnej pozícii v reťazci. Pre lepšiu čitateľnosť programu sa odporúča zapísať si ich do stĺpca.

Menovky Všetky menovky, ktoré sú napísané v riadku, ktorý neobsahuje direktívu assemblera, musia končiť dvojbodkou „:“. Štítok, príkaz (smernica) a operand nemusia začínať na žiadnej konkrétnej pozícii v reťazci. Pre lepšiu čitateľnosť programu sa odporúča zapísať si ich do stĺpca.

Komentáre Používanie komentárov v programe zvyšuje prehľadnosť, najmä keď nie je jasný zámer súboru inštrukcií. Komentáre začínajú na ľubovoľnom riadku zdrojového modulu bodkočiarkou (;). Všetky znaky vpravo od „; »Na koniec riadku je komentár. Komentár môže obsahovať akékoľvek tlačiteľné znaky vrátane medzery. Komentár môže obsahovať celý riadok alebo môže nasledovať príkaz v rovnakom riadku.

Štruktúra programu montážneho jazyka Program napísaný v montážnom jazyku môže pozostávať z niekoľkých častí, nazývaných moduly, v každej z ktorých je možné definovať jeden alebo viac údajových, zásobníkových a kódových segmentov. Akýkoľvek kompletný program v jazyku assembleru musí obsahovať jeden hlavný alebo hlavný modul, od ktorého sa začína jeho vykonávanie. Modul môže obsahovať programové segmenty, dátové segmenty a segmenty zásobníka deklarované pomocou príslušných smerníc.

Pamäťové modely Pred deklarovaním segmentov musíte špecifikovať pamäťový model pomocou direktívy. Modifikátor MODEL memory_model, call_convention, OS_type, stack_parameter Základné pamäťové modely montážneho jazyka: Pamäťový model Adresovanie kódu Adresovanie dát Operačný systém Kód a vkladanie dát TINY NEAR MS-DOS Povolené MALÉ V BLÍZKOSTI MS-DOS, Windows Nie MEDIUM FAR NEAR MS-DOS, Windows Nie KOMPAKTNÉ V BLÍZKOSTI MS-DOS, Windows No LARGE FAR MS-DOS, Windows No HUGE FAR MS-DOS, Windows No NEAR Windows 2000, Windows XP, Windows Allowed FLAT NEAR NT,

Pamäťové modely Malý model pracuje iba v 16-bitových aplikáciách MS-DOS. V tomto modeli sú všetky údaje a kód umiestnené v jednom fyzickom segmente. V takom prípade veľkosť programového súboru nepresahuje 64 KB. Malý model podporuje jeden segment kódu a jeden segment údajov. Dáta a kód sú pri použití tohto modelu adresované tak skoro. Stredný model podporuje viac segmentov kódu a jeden dátový segment, pričom všetky referencie v segmentoch kódu sú predvolene považované za ďaleko a referencie v dátovom segmente sú blízko. Kompaktný model podporuje viac dátových segmentov, ktoré používajú vzdialené adresovanie údajov, a jeden segment kódu, ktorý využíva blízke adresovanie. Veľký model podporuje viac segmentov kódu a viac segmentov údajov. V predvolenom nastavení sú všetky odkazy na kódy a údaje považované za vzdialené. Obrovský model je takmer ekvivalentný veľkému pamäťovému modelu.

Pamäťové modely Plochý model predpokladá nesegmentovanú konfiguráciu programu a používa sa iba v 32-bitových operačných systémoch. Tento model je podobný malému modelu v tom zmysle, že údaje a kód sú obsiahnuté v jednom 32-bitovom segmente. Pred smernicou vypracovať program pre plochý model. jeden vzor by mal byť umiestnený :. 386 ,. 486 ,. 586 alebo. 686. Voľba smernice pre výber procesora určuje množinu inštrukcií dostupných pri písaní programov. Písmeno p za smernicou o výbere procesora znamená chránený prevádzkový režim. Adresovanie údajov a kódov je blízko, pričom všetky adresy a smerníky sú 32-bitové.

Pamäťové modely. Modifikátor MODEL memory_model, call_convention, OS_type, stack_parameter Parameter modifikátor sa používa na definovanie typov segmentov a môže nadobúdať nasledujúce hodnoty: use 16 (segmenty vybraného modelu sú použité ako 16-bitové) use 32 (segmenty vybraného modelu sú použité ako 32-bitové). Parameter call_convention sa používa na určenie spôsobu odovzdávania parametrov pri volaní procedúry z iných jazykov vrátane jazykov vyššej úrovne (C ++, Pascal). Parameter môže nadobúdať nasledujúce hodnoty: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL.

Pamäťové modely. Modifikátor MODEL memory_model, call_ convention, OS_type, stack_parameter OS_type je predvolený OS_DOS a v súčasnosti je jedinou podporovanou hodnotou pre tento parameter. Stack_parameter je nastavený na: NEARSTACK (register SS je DS, oblasti údajov a zásobníkov sa nachádzajú v rovnakom fyzickom segmente) FARSTACK (SS sa nerovná DS, oblasti údajov a zásobníkov sa nachádzajú v rôznych fyzických segmentoch). Predvolená hodnota je NEARSTACK.

Príklad programu „nič nerobenie“. 686 P. MODEL BYT, STDCALL. ÚDAJE. CODE START: RET END START RET - príkaz mikroprocesora. Zaisťuje správne ukončenie programu. Zvyšok programu súvisí s prácou prekladateľa. ... 686 P - Povolené príkazy chráneného režimu Pentium 6 (Pentium II). Táto smernica vyberie podporovanú sadu inštrukčných inštrukcií zadaním modelu procesora. ... MODEL FLAT, stdcall je plochý pamäťový model. Tento pamäťový model sa používa v operačnom systéme Windows. stdcall je použitá konvencia volania procedúr.

Príklad programu „nič nerobenie“. 686 P. MODEL BYT, STDCALL. ÚDAJE. ŠTART KÓDU: ZNOVU KONIEC ŠTART. DATA je programový segment obsahujúci údaje. Tento program nepoužíva zásobník, takže segmentujte. STACK chýba. ... CODE je segment programu obsahujúci kód. START je štítok. KONIEC ŠTART - koniec programu a správa kompilátoru na spustenie vykonávania programu zo štítku START. Každý program musí obsahovať značku END na označenie konca zdrojový kód programov. Všetky riadky, ktoré nasledujú za smernicou END, sú ignorované. Štítok uvedený za smernicou END informuje prekladateľa o názve hlavného modulu, z ktorého sa program spúšťa. Ak program obsahuje jeden modul, štítok za smernicou END možno vynechať.

Prekladače Assembler Language Translator - prekladač je program alebo hardvér, ktorý prevádza program v jednom z programovacích jazykov na program v cieľovom jazyku nazývaný objektový kód. Okrem podpory mnemotechniky strojových pokynov má každý prekladateľ svoju vlastnú sadu smerníc a makro nástrojov, ktoré sú často s čímkoľvek nekompatibilné. Hlavné typy prekladačov v jazyku assembler: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM (Flat Assembler) - bezplatný viacpriechodový assembler od Tomasza Grishtara (poľský jazyk), NASM (Netwide Assembler) - bezplatný assembler pre architektúru Intel x 86, vytvoril Simon Tatham v spolupráci s Julianom Hall a v súčasnosti ho vyvíja malý vývojový tím na serveri Source. Forge. sieť.

Src \u003d "https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt \u003d "(! LANG: Vysielanie programu do Microsoft Visual Studio 2005 1) Vytvorte projekt výberom File-\u003e New-\u003e Project a"> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}

Src \u003d "https://present5.com/presentation/-29367016_63610977/image-16.jpg" alt \u003d "(! LANG: Vysielanie programu do Microsoft Visual Studio 2005 2) V strome projektu (Zobraziť-\u003e Prieskumník riešení) pridajte"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}

Preklad programu do Microsoft Visual Studio 2005 3) Vyberte typ súboru Code C ++, ale zadajte názov s príponou. asm:

Preklad programu do Microsoft Visual Studio 2005 5) Nastavte možnosti kompilátora. Pravým tlačidlom myši kliknite na ponuku Vlastné pravidlá zostavenia ... v súbore projektu.

Preklad programu do programu Microsoft Visual Studio 2005 a v zobrazenom okne vyberte Microsoft Macro Assembler.

Preklad programu v Microsoft Visual Studio 2005 Skontrolujte kliknutím pravým tlačidlom myši v ahoj. asm stromu projektu ponuky Vlastnosti a nastavte Všeobecné-\u003e Nástroj: Microsoft Macro Assembler.

Src \u003d "https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt \u003d "(! LANG: Vysielanie programu do Microsoft Visual Studio 2005 6) Zkompilujte súbor výberom príkazov Zostaviť -\u003e Zostaviť ahoj. Prj."> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}

Programovanie v OS Windows Programovanie v OS Windows je založené na využívaní funkcií API (Application Program Interface). Ich počet dosahuje 2000. Program pre Windows pozostáva vo veľkej miere z týchto hovorov. Všetky interakcie s externé zariadenia a prostriedky operačného systému sa vyskytujú spravidla prostredníctvom týchto funkcií. Operačný systém Windows používa model plochej pamäte. Adresa ľubovoľného pamäťového miesta bude určená obsahom jedného 32-bitového registra. Existujú 3 typy programových štruktúr pre Windows: dialógové okno (hlavné okno - dialógové okno), konzolová alebo bez okenná štruktúra, klasická štruktúra (okno, drôtový model).

Volajte funkcie systému Windows API V súbore pomoci je akákoľvek funkcia API reprezentovaná ako typ function_name (FA 1, FA 2, FA 3) Type - typ návratovej hodnoty; ФАх - zoznam formálnych argumentov v poradí, v akom sa zobrazujú, napríklad int Správa. Box (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Táto funkcia zobrazuje okno so správou a výstupné tlačidlo (alebo tlačidlá). Význam parametrov: h. Wnd - rukoväť k oknu, v ktorom sa objaví okno so správou, lp. Text - text, ktorý sa objaví v okne, lp. Titulok - text v titulku okna, u. Typ - typ okna, najmä môžete definovať počet výstupných tlačidiel

Volanie funkcií rozhrania Windows API v správe. Box (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Takmer všetky parametre funkcií API sú v skutočnosti 32-bitové celé čísla: HWND je 32-bitové celé číslo, LPCTSTR je 32-bitový ukazovateľ na reťazec, UINT je 32-bitové celé číslo. Prípona „A“ sa často pripája k názvu funkcie na prechod na novšie verzie funkcií.

Volanie funkcií rozhrania Windows API v správe. Box (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Ak používate MASM, musíte na koniec názvu pridať @N N - počet bajtov, ktoré zadané argumenty zaberajú v zásobníku. Pre funkcie Win 32 API možno toto číslo definovať ako počet argumentov n krát 4 (bajty v každom argumente): N \u003d 4 * n. Na vyvolanie funkcie použite príkaz CALL assembler. V takom prípade sú jej všetky argumenty funkcie odovzdané cez zásobník (príkaz PUSH). Smer odovzdávania argumentov: ZĽAVA DO VPRAVO - SPODNÉ Hore. Prvý argument, ktorý sa vloží do zásobníka, je u. Typ. Volanie zadanej funkcie bude vyzerať takto: CALL Message. Krabica. [chránené e-mailom]

Volanie funkcií rozhrania Windows API v správe. Box (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Výsledkom vykonania akejkoľvek funkcie API je zvyčajne celé číslo, ktoré sa vráti v registri EAX. Direktíva OFFSET je „posun segmentu“, alebo, čo sa týka vysokej úrovne, „ukazovateľ“ na začiatok riadku. Direktíva EQU, rovnako ako #define v jazyku C, definuje konštantu. Direktíva EXTERN hovorí prekladateľovi, že funkcia alebo identifikátor sú pre daný modul externé.

Príklad programu „Ahoj všetci!“ ... 686 P. MODEL BYT, STDCALL. STACK 4096. DATA MB_OK EQU 0 STR 1 DB "Môj prvý program", 0 STR 2 DB "Ahoj všetci!", 0 HW DD? EXTERN Správa. Krabica. [chránené e-mailom]: BLÍZKO. ŠTART KÓDU: PUSH MB_OK PUSH OFFSET STR 1 PUSH OFFSET STR 2 PUSH HW CALL Správa. Krabica. [chránené e-mailom] ZNOVU KONIEC ŠTART

Smernica INVOKE Prekladač jazyka MASM umožňuje tiež zjednodušenie volania funkcií pomocou nástroja pre makro - smernica INVOKE: funkcia INVOKE, parameter1, parameter2, ... K volaniu funkcií nie je potrebné pridávať znak @; parametre sú napísané presne v takom poradí, v akom sú uvedené v popise funkcie. parametre sa tlačia do zásobníka pomocou prekladača. na použitie smernice INVOKE musíte mať popis prototypu funkcie používajúci smernicu PROTO v tvare: Správa. Krabica. PROTO: DWORD ,: DWORD Ak program používa mnoho funkcií Win 32 API, je vhodné použiť direktívu include C: masm 32includeuser 32. inc

Téma 1.4 Mnemotechnické pomôcky Assembler. Štruktúra a formáty príkazov. Druhy adresovania. Sada príkazov mikroprocesora

Plán:

1 Jazyk zhromaždenia. Základné pojmy

2 Symboly montážneho jazyka

3 Typy príkazov assemblera

4 montážne smernice

5 Sada pokynov procesora

1 imontážny jazyk. Základné pojmy

Jazyk zhromaždenia je symbolické znázornenie strojového jazyka. Všetky procesy v stroji, na najnižšej, hardvérovej úrovni, sa riadia iba príkazmi v jazyku stroja (pokyny). Je teda zrejmé, že napriek všeobecnému názvu je jazyk zhromaždenia pre každý typ počítača odlišný.

Program montážneho jazyka je zbierka blokov pamäte s názvom pamäťové segmenty.Program môže pozostávať z jedného alebo niekoľkých takýchto blokových segmentov. Každý segment obsahuje sadu jazykových viet, z ktorých každá zaberá samostatný riadok programového kódu.

Montážne vety sú štyroch typov:

1) príkazy alebo pokyny, ktoré sú symbolickými analógmi strojových pokynov. V procese prekladu sa inštrukcie asemblera prevedú na príslušné príkazy sady inštrukcií mikroprocesora;

2) makrá -určitým spôsobom tvorené vety programového textu, ktoré sa počas vysielania nahrádzajú inými vetami;

3) smernice,, ktoré sú pokynmi prekladateľovi prekladača na vykonanie niektorých akcií. Smernice nemajú v strojovom zastúpení obdobu;

4) riadky komentárov obsahujúce akékoľvek symboly vrátane písmen ruskej abecedy. Prekladateľ komentáre ignoruje.

­ Štruktúra programu v zhromaždení. Syntax zostavy.

Vety, ktoré tvoria program, môžu byť syntaktické konštrukty zodpovedajúce príkazu, makru, smernici alebo komentáru. Aby ich prekladateľ assembleru rozpoznal, musia byť zostavené podľa určitých syntaktických pravidiel. Najlepšie to urobíte, ak použijete formálny popis syntaxe jazyka, napríklad gramatické pravidlá. Najbežnejšie spôsoby, ako opísať programovací jazyk, ako je tento - syntaxové diagramy a rozšírené formy Backus-Naur. Pohodlnejšie pre praktické použitie syntaxové diagramy.Napríklad syntax zostavovacích viet možno opísať pomocou syntaxových diagramov zobrazených na nasledujúcich obrázkoch 10, 11, 12.

Obrázok 10 - Formát asemblerovej vety


­ Obrázok 11 - Formát smerníc

­ Obrázok 12 - Formát príkazov a makier

Na týchto obrázkoch:

­ názov štítku - identifikátor, ktorého hodnotou je adresa prvého bajtu vety zdrojového textu programu, ktorú označuje;

­ názov - identifikátor, ktorý odlišuje túto smernicu od iných smerníc s rovnakým názvom. V dôsledku spracovania špecifickej smernice asemblerom je možné tomuto názvu priradiť určité vlastnosti;

­ operačný kód (COP) a smernica - sú to mnemotechnické označenia príslušnej strojovej inštrukcie, smernice pre makro alebo prekladača;

­ operandy - časti smernice príkazu, makra alebo assembleru, ktoré označujú objekty, s ktorými sa má manipulovať. Operandy asemblera sú opísané výrazmi s číselnými a textovými konštantami, štítkami a identifikátormi premenných pomocou znakov operácie a niektorých vyhradených slov.

Pomoc so syntaxovými diagramami vyhľadajte a potom choďte od vstupu diagramu (vľavo) k jeho výstupu (vpravo). Ak takáto cesta existuje, potom je veta alebo konštrukcia syntakticky správna. Ak takáto cesta neexistuje, kompilátor túto konštrukciu neprijme.

­ 2 symboly montážneho jazyka

Povolené znaky pri písaní textu programu sú:

1) všetky latinské písmená: A-Z, a-z... V takom prípade sa veľké a malé písmená považujú za rovnocenné;

2) čísla z 0 predtým 9 ;

3) znamenia ? , @ , $ , _ , & ;

4) separátory , . () < > { } + / * % ! " " ? = # ^ .

Zostavovacie vety sú tvorené z žetóny, čo sú syntakticky neoddeliteľné sekvencie znakov platného jazyka, ktoré majú pre prekladateľa zmysel.

Lexemes sú:

1) identifikátory - postupnosti platných znakov používaných na označenie programových objektov, ako sú operačné kódy, názvy premenných a názvy štítkov. Pravidlo pre zápis identifikátorov je nasledovné: identifikátor môže pozostávať z jedného alebo viacerých znakov;

2) reťazce znakov - sekvencie znakov uvedené v jednoduchých alebo dvojitých úvodzovkách;

3) celé čísla jedného z nasledujúcich číselných systémov : binárne, desatinné, hexadecimálne. Identifikácia čísel pri ich písaní v programoch montážneho jazyka sa vykonáva podľa určitých pravidiel:

4) desatinné čísla nevyžadujú na svoju identifikáciu žiadne ďalšie symboly, napríklad 25 alebo 139. Na identifikáciu v zdrojovom kóde programu binárne čísla po napísaní núl a tých, ktoré sú súčasťou ich zloženia, je potrebné uviesť latinské “ b”, Napríklad 10010101 b.

5) hexadecimálne čísla majú pri písaní viac konvencií:

Najskôr sa skladajú z čísel 0...9 , malé písmená a veľké písmená Latinská abeceda a, b, c, d, e, f alebo A, B, C., D, E, F.

Po druhé, prekladateľ môže mať ťažkosti s rozpoznávaním šestnástkových čísel, pretože sa môže skladať buď iba z číslic 0 ... 9 (napríklad 190845), alebo môže začínať písmenom latinskej abecedy (napríklad ef15). Aby mohol prekladateľ „vysvetliť“, že daný token nie je desatinné číslo alebo identifikátor, musí programátor zvoliť šestnástkové číslo špeciálnym spôsobom. Za týmto účelom napíšte latinské písmeno na koniec postupnosti hexadecimálnych číslic, ktoré tvoria hexadecimálne číslo, h“. Toto je nevyhnutná podmienka. Ak hexadecimálne číslo začína písmenom, pred ním sa napíše úvodná nula: 0 ef15 h.

Takmer každá veta obsahuje popis objektu, na ktorom alebo pomocou ktorého sa vykonáva nejaká činnosť. Tieto objekty sa nazývajú operandy... Môžu byť definované takto: operandy sú objekty (niektoré hodnoty, registre alebo pamäťové bunky), na ktoré sa vzťahujú pokyny alebo smernice, alebo sú to objekty, ktoré definujú alebo špecifikujú činnosť pokynov alebo smerníc.

Je možné vykonať nasledujúcu klasifikáciu operandov:

­ konštantné alebo okamžité operandy;

­ adresné operandy;

­ pohyblivé operandy;

počítadlo adries;

­ registrový operand;

­ bázické a indexové operandy;

­ štrukturálne operandy;

záznamy.

Operandy sú základné komponenty, ktoré tvoria súčasť strojovej inštrukcie, ktorá označuje objekty, na ktorých sa operácia vykonáva. Vo všeobecnejšom prípade možno operandy zahrnúť ako základné časti do zložitejších útvarov nazývaných výrazy.

Výrazy sú kombinácie operandov a operátorov, ktoré sa považujú za celok. Výsledkom vyhodnotenia výrazu môže byť adresa nejakej pamäťovej bunky alebo nejaká konštantná (absolútna) hodnota.

­ 3 Typy príkazov assemblera

Vymenujme možné typy operátori montérov a syntaktické pravidlá pre formovanie asemblerových výrazov:

­ aritmetické operátory;

­ operátori zmeny;

­ operátory porovnania;

­ logické operátory;

­ operátor indexu;

­ operátor prepísania typu;

­ operátor prepísania segmentu;

­ operátor pomenovania typu štruktúry;

­ operátor na získanie segmentového komponentu adresy výrazu;

­ operátor na získanie posunu výrazu.

1 Smernice pre montážnikov

­ Direktívy zostavovateľa sú:

1) Smernice o segmentácii. V priebehu predchádzajúcej diskusie sme zistili všetky základné pravidlá písania príkazov a operandov v montážnom programe. Otázka, ako správne formulovať postupnosť príkazov tak, aby ich prekladateľ dokázal spracovať a mikroprocesor ich vykonávať, zostáva otvorená.

Pri zvažovaní architektúry mikroprocesora sme sa dozvedeli, že má šesť segmentových registrov, cez ktoré môže pracovať súčasne:

­ s jedným segmentom kódu;

­ s jedným segmentom stohu;

­ s jedným segmentom údajov;

­ s tromi ďalšími segmentmi údajov.

Fyzicky je segment pamäťová oblasť obsadená inštrukciami a (alebo) dátami, ktorých adresy sa počítajú vzhľadom na hodnotu v zodpovedajúcom registri segmentov. Syntaktický popis segmentu v assembleri je konštrukcia zobrazená na obrázku 13:


­ Obrázok 13 - Syntaktický popis segmentu v assembleri

Je dôležité si uvedomiť, že funkčnosť segmentu je o niečo širšia ako jednoduché rozdelenie programu na bloky kódu, dát a zásobníka. Segmentácia je súčasťou všeobecnejšieho mechanizmu súvisiaceho s koncepcia modulárneho programovania. Zahŕňa zjednotenie dizajnu objektových modulov vytvorených kompilátorom, vrátane tých z rôznych programovacích jazykov. Takto môžete kombinovať programy napísané v rôznych jazykoch. Účelom operandov v smernici SEGMENT je implementácia rôznych variantov takéhoto združenia.

2) Smernice pre správu zoznamov. Príkazy na kontrolu výpisu sú rozdelené do nasledujúcich skupín:

­ všeobecné smernice o kontrole zoznamov;

­ výstupné smernice pre zoznam zahrnutých súborov;

­ smernice na výstup podmienených montážnych blokov;

­ smernice na vypisovanie makier;

­ smernice na vydávanie informácií o krížových odkazoch na zoznam;

­ smernice na zmenu formátu záznamu.

2 Súbor pokynov pre procesor

Sada inštrukcií procesora je zobrazená na obrázku 14.

Zvážme hlavné skupiny príkazov.

­ Obrázok 14 - Klasifikácia pokynov montéra

Tímy sú:

1 Príkazy na prenos dát. Tieto príkazy sú veľmi dôležité v inštrukčnej sade ľubovoľného procesora. Plnia tieto základné funkcie:

­ ukladanie obsahu vnútorných registrov procesora do pamäte;

­ kopírovanie obsahu z jednej oblasti pamäte do druhej;

­ zápis na I / O zariadenia a čítanie z I / O zariadení.

Na niektorých procesoroch sa všetky tieto funkcie vykonávajú jediným príkazomMOV (pre prevody bajtov -MOVB ) ale s rôznymi metódami adresovanie operandov.

Na iných procesoroch okrem príkazuMOV na vykonanie uvedených funkcií existuje niekoľko ďalších príkazov. Medzi príkazy na prenos údajov patria aj príkazy na výmenu informácií (ich označenie je založené na sloveVýmena ). Výmena informácií medzi internými registrami, medzi dvoma polovicami jedného registra (SWAP ) alebo medzi registrom a miestom v pamäti.

2 aritmetické príkazy. Aritmetické inštrukcie považujú kódy operandov za číselné binárne kódy alebo BCD kódy. Tieto príkazy možno rozdeliť do piatich hlavných skupín:

­ príkazy operácií s pevným bodom (sčítanie, odčítanie, násobenie, delenie);

­ príkazy s pohyblivou rádovou čiarkou (sčítanie, odčítanie, násobenie, delenie);

­ príkazy na čistenie;

­ príkazy na zvýšenie a zníženie;

­ príkaz na porovnanie.

3 Príkazy operácií s pevným bodom pracujú s kódmi v registroch procesora alebo v pamäti ako s obvyklými binárnymi kódmi. Pokyny s pohyblivou desatinnou čiarkou (bod) používajú formát reprezentácie čísel s poradím a mantisou (zvyčajne tieto čísla zaberajú dve po sebe nasledujúce miesta v pamäti). V moderných výkonných procesoroch sa sada inštrukcií s pohyblivou rádovou čiarkou neobmedzuje iba na štyri aritmetické operácie, ale obsahuje aj mnoho ďalších zložitejších pokynov, napríklad výpočet trigonometrických funkcií, logaritmické funkcie, ako aj komplexné funkcie potrebné na spracovanie zvuku a obrazu.

4 Pokyny na vymazanie sú určené na zápis nulového kódu do registra alebo do pamäťovej bunky. Tieto príkazy možno prepísať príkazmi nulového prenosu, ale špeciálne príkazy na vymazanie sú zvyčajne rýchlejšie ako príkazy na prenos.

5 Príkazy na zvýšenie (zvýšenie o jednu) a zníženie

(zníženie o jednu) sú tiež veľmi výhodné. V zásade ich možno nahradiť sčítaním s jedným alebo odčítaním jedného príkazu, ale prírastok a úbytok sú rýchlejšie ako sčítanie a odčítanie. Tieto pokyny vyžadujú jeden vstupný operand, ktorý je tiež výstupným operandom.

6 Porovnávacia inštrukcia porovnáva dva vstupné operandy. V skutočnosti počíta rozdiel medzi týmito dvoma operandmi, ale netvorí výstupný operand, ale iba zmení bity v registri stavu procesora výsledkom tohto odčítania. Ďalšia inštrukcia nasledujúca po inštrukcii na porovnanie (zvyčajne vetvová inštrukcia) bude analyzovať bity v registri stavu procesora a vykonávať akcie v závislosti od ich hodnôt. Niektoré procesory poskytujú pokyny na reťazové spojenie dvoch sekvencií operandov v pamäti.

7 Logické príkazy. Logické pokyny vykonávajú logické (bitové) operácie na operandoch, to znamená, že kódy operandov nepovažujú za jedno číslo, ale za množinu samostatných bitov. Týmto sa líšia od aritmetické príkazy... Logické príkazy vykonávajú tieto základné operácie:

­ logické AND, logické OR, sčítanie modulo 2 (Exkluzívne OR);

­ logické, aritmetické a cyklické posuny;

­ kontrola bitov a operandov;

­ nastavenie a vymazanie bitov (príznakov) registra stavu procesora (PSW).

Logické pokyny vám umožňujú vypočítať základné logické funkcie z dvoch vstupných operandov kúsok po kúsku. Okrem toho sa operácia AND používa na násilné vymazanie určených bitov (ako jeden z operandov sa použije kód masky, v ktorom sú bity, ktoré sa majú vymazať, nastavené na nulu). Operácia OR sa používa na násilné nastavenie zadaných bitov (ako jeden z operandov sa používa kód masky, v ktorom sa číslice vyžadujúce nastavenie na jednu rovnajú jednej). Operácia „Exkluzívne ALEBO“ sa používa na invertovanie určených bitov (ako jeden z operandov sa použije kód masky, v ktorom sú bity, ktoré sa majú invertovať, nastavený na jeden). Pokyny vyžadujú dva vstupné operandy a tvoria jeden výstupný operand.

8 Príkazy Shift umožňujú bitový posun kódu operandu doprava (smerom k nižším bitom) alebo doľava (smerom k vyšším bitom). Typ posunu (logický, aritmetický alebo cyklický) určuje, aká bude nová hodnota najvýznamnejšieho bitu (pri posune doprava) alebo najmenej významného bitu (pri posune doľava) a tiež určuje, či sa niekde uloží predchádzajúca hodnota najvýznamnejšieho bitu (pri posune doľava). alebo najmenej významný bit (ak je posunutý doprava). Cyklické posuny umožňujú posúvanie bitov operandu kruhovým spôsobom (v smere hodinových ručičiek, keď sú posunuté doprava, alebo proti smeru hodinových ručičiek, keď sú posunuté doľava). V takom prípade môže byť nosná vlajka v radiacom krúžku, ale nemusí. Bit príznaku prenosu (ak je použitý) ukladá hodnotu najvýznamnejšieho bitu, keď je cyklovaný vľavo, a najmenej významného bitu, keď je cyklovaný vpravo. V súlade s tým bude hodnota bitového nosného príznaku prepísaná v najmenej významnom bite, keď je cyklicky posunutá doľava, a v najvýznamnejšom bite, keď je cyklovaný doprava.

9 Príkazy prechodov. Pokyny Jump sú navrhnuté tak, aby organizovali všetky druhy slučiek, vetiev, volaní podprogramov atď., To znamená, že narúšajú postupnosť programu. Tieto príkazy zapíšu novú hodnotu do registra počítadla príkazov a spôsobia tak, že procesor nepreskočí na nasledujúci príkaz v poradí, ale na akýkoľvek iný príkaz v pamäti programu. Niektoré prechodové príkazy poskytujú ďalší návrat späť do bodu, z ktorého bol prechod vykonaný, iné to neposkytujú. Ak je poskytnutý návrat, potom sú aktuálne parametre procesora uložené v zásobníku. Ak nie je poskytnutá návratnosť, súčasné parametre procesora sa neuložia.

Prechodové príkazy bez spätného sledovania sú rozdelené do dvoch skupín:

­ bezpodmienečné príkazy na skok;

­ príkazy podmieneného skoku.

Tieto príkazy používajú slováVetva (vetva) a skok (skok).

Pokyny na nepodmienený skok spôsobia skok na novú adresu bez ohľadu na čokoľvek. Môžu spôsobiť skok o zadanú veľkosť posunu (dopredu alebo dozadu) alebo na zadanú adresu pamäte. Hodnota posunu alebo nová hodnota adresy je zadaná ako vstupný operand.

Príkazy podmieneného skoku nemusia vždy spôsobiť skok, ale iba vtedy, keď sú splnené zadané podmienky. Týmito podmienkami sú zvyčajne hodnoty príznakov v registri stavu procesora (PSW ). To znamená, že podmienka prechodu je výsledkom predchádzajúcej operácie, ktorá mení hodnoty príznakov. Takýchto podmienok skoku môže byť celkovo od 4 do 16. Niekoľko príkladov príkazov podmieneného skoku:

­ prechod, ak sa rovná nule;

­ prechod, ak sa nerovná nule;

­ skok, ak dôjde k pretečeniu;

­ skok, ak nie je pretečenie;

­ prechod, ak je väčší ako nula;

­ skok, ak je menší alebo rovný nule.

Ak je splnená podmienka prechodu, nová hodnota sa načíta do príkazového registra. Ak podmienka skoku nie je splnená, čítač inštrukcií sa jednoducho zvýši a procesor vyberie a vykoná nasledujúcu inštrukciu v poradí.

Porovnávací príkaz (CMP), ktorý predchádza príkazu podmieneného skoku (alebo dokonca niekoľkých príkazov podmieneného skoku), sa používa špeciálne na kontrolu podmienok skoku. Príznaky je možné ale nastaviť ľubovoľným iným príkazom, napríklad príkazom na prenos údajov, akýmkoľvek aritmetickým alebo logickým príkazom. Upozorňujeme, že samotné skokové príkazy nezmenia príznaky, čo vám umožňuje zadávať niekoľko skokových príkazov jeden za druhým.

Príkazy prerušenia zaujímajú medzi príkazmi spätného skoku zvláštne miesto. Tieto pokyny vyžadujú ako vstupný operand číslo prerušenia (vektorovú adresu).

Záver:

Zberný jazyk je symbolické znázornenie strojového jazyka. Montážny jazyk pre každý typ počítača je iný. Program montážneho jazyka je kolekcia blokov pamäte, ktoré sa nazývajú pamäťové segmenty. Každý segment obsahuje sadu jazykových viet, z ktorých každá zaberá samostatný riadok programového kódu. Zostavy vety sú štyroch typov: príkazy alebo pokyny, makra, smernice, riadky komentárov.

Pri písaní textu programu sú všetky latinské písmená platné znaky: A-Z, a-z... V takom prípade sa veľké a malé písmená považujú za rovnocenné; postavy z 0 predtým 9 ; znamenia ? , @ , $ , _ , & ; oddeľovače , . () < > { } + / * % ! " " ? = # ^ .

Uplatňujú sa nasledujúce typy príkazov assembleru a syntaktické pravidlá pre formovanie výrazov assemblera. aritmetické operátory, operátory posuvu, operátory porovnania, logické operátory, operátor indexu, operátor prepísania typu, operátor prepísania segmentu, operátor pomenovania typu štruktúry, operátor na získanie komponentu segmentu adresy výrazu, operátor na získanie posunu výrazu.

Systém velenia je rozdelený do 8 hlavných skupín.

­ Testovacie otázky:

1 Čo je montážny jazyk?

2 Aké symboly je možné použiť na písanie príkazov v montážnom jazyku?

3 Čo sú štítky a ich účel?

4 Vysvetlite štruktúru príkazov assemblera.

5 Uveďte 4 typy viet assemblera.