Kontakty

Programovanie: Assembler Language. Základy jazyka assembler. Formát dát a štruktúra tímovej štruktúry Jazyk Assembler

Na mieste určenia, môžete vybrať príkazy (v zátvorkách sú príkladmi mnemonických kódov operácií operácií Assembler IBM PC typu PC typu):

l Vykonávanie aritmetických operácií (ADD a ADC - pridanie a doplnky s prevodom, sub a SBB - Odčítanie a odčítanie požičiavaním, MUL a IMUL - multiplikácie bez nápisu as značkou, DIV a IDIV - Divízia bez znamienka a znamenie, CMP - porovnania atď.);

l logické operácie (alebo, a nie, xor, test atď.);

l DOPRAVA (MOV - NA SIVEJNOSŤ, XCHG - výmenu, vstúpte do mikroprocesora, výstupu z mikroprocesora atď.);

l Ovládanie prenosu (programové pobočky: JMP - Bezpodmienečný prechod, Call - Call Consult, Return Return z postupu, J * - podmienečný prechod, ovládanie slučky - cyklus atď.);

l Spracovateľská línia (MOVS - DOPRAVA, CMPS - porovnanie, LODS - Sťahovanie, SCAS - skenovanie. Tieto príkazy sa zvyčajne používajú s prefixom (modifikátor opakovania) rep;

l Program prerušuje (INT - PROGRAM PROGRAM INTRUPTS, INTERMENTAL INTERUPTIONAL INTERUPT, keď prepad, IRET - návrat z prerušenia);

l Riadenie mikroprocesora (ST * a CL * - Inštalácia a resetové vlajky, HLT - Stop, čakanie - očakávania, NOP - voľnobeh atď.).

S kompletným zoznamom príkazov assembler môžete zoznámiť v dielach.

Príkazy prenosu dát

lOV DST, SRC - Dátová zásielka (Presun - Odoslať z SRC do DST).

Odosiela: Jeden bajt (ak SRC a DST majú bajtový formát) alebo jedno slovo (ak SRC a DST majú slovo formátu) medzi registrom alebo medzi registrom a pamäťou, a tiež zaznamenávajú priamu hodnotu do registra alebo v pamäti.

Operandy DST a SRC musia mať rovnaký formát - bajty alebo slovo.

SRC môže byť Typ: R (Register) - Register, M (Memory) - Pamäť, I (impedancia) - Priama hodnota. DST môže byť typ r, m. Nie je možné používať operandy v jednom velite: RSEGM spolu s I; Dva operand typu M a dva operandy typu RSEGM). Operand I môže byť jednoduchý výraz:

sekera (152 + 101b) / 15

Výpočet expresie sa vykonáva len pri vysielaní. Vlajky sa nemenia.

l Zatlačte SRC - Slovo pokrývací stoh (Push - stlačený Nahrávanie na zásobníku ISRC). Obsah SRC umiestni v hornej časti zásobníka - akýkoľvek 16-bitový register (vrátane segmentu) alebo dve pamäťové bunky obsahujúce 16-bitové slovo. Vlajky sa nemenia;

l pop DST - extrahovanie slov z zásobníka (pop - tlak von; počítať od zásobníka v DST). Odstráni slovo z hornej časti zásobníka a umiestni ho do DST - Any 16-bitový register (vrátane segmentu) alebo v dvoch bunkách pamäte. Vlajky sa nemenia.

Téma 1.4 Assembler Mnemonic. Štruktúra a formáty príkazov. Druhy adresovania. Mikroprocesorový tímový systém

Plán:

1 jazyk assembler. Základné pojmy

2 Symboly symbolov assembler

3 Typy prevádzkovateľov assemblerov

4 Smernice Assembler

5 Systém príkazcu

1 J.zyk assembler. Základné pojmy

Jazyk - Toto je symbolická prezentácia jazyka stroja. Všetky procesy v stroji na najnižšej úrovni hardvéru sú poháňané iba príkazmi (pokyny) jazyka stroja. Je jasné, že aj napriek všeobecnému menu jazyka assembler pre každý typ počítača.

Program Assembler je kombináciou pamäťových blokov, nazývaných pamäťové segmenty.Program môže pozostávať z jedného alebo viacerých takýchto blokových segmentov. Každý segment obsahuje súbor jazykových návrhov, z ktorých každý zaberá samostatný riadok programového kódu.

Ponuky Assembler sú štyri typy:

1) príkazy alebo inštrukcie, Prezentácia symbolických analógov príkazov stroja. V procese vysielania sa inštrukcie assembler transformuje na zodpovedajúce príkazy príkazového systému mikroprocesora;

2) mACROCOMANDS -určitým spôsobom z textových návrhov programu, nahradené počas vysielania inými návrhmi;

3) smerniceindikácia montážneho prekladateľa na vykonávanie určitých činností. Smernice nemajú žiadne analógy v reprezentácii stroja;

4) riadky komentára obsahujúce akékoľvek znaky, vrátane písmen ruskej abecedy. Komentáre prekladateľ ignorujú.

­ Štruktúra programu na assembler. Syntax Assembler.

Návrhy, ktoré tvoria program, môžu byť syntaktickým dizajnom, zodpovedajúcim tímom, makrokomandom, smernicou alebo komentárom. Aby ich prekladateľ Assembler rozpoznal, musia byť tvorené určitými syntaktickými pravidlami. Na to je najlepšie použiť formálny popis syntaxe jazyka, ako sú pravidlá gramatiky. Najbežnejšie spôsoby takéhoto opisu programovacieho jazyka - Syntaktické grafy a rozšírené formy Bakusa Naura. Pre praktické použitie vhodnejšie syntaktické grafy.Napríklad syntaxe montáže Assembler je možné opísať pomocou syntaktických diagramov znázornených na nasledujúcich obrázkoch 10, 11, 12.

Obrázok 10 - Formát ponuky assembler


­ Obrázok 11-formátové smernice

­ Obrázok 12 - Tímový formát a makrá

Na týchto výkresoch:

­ menovky - identifikátor, ktorej hodnota je adresa prvého bajtu tohto návrhu zdroja textu programu, ktorý označuje;

­ názov - Identifikátor rozlišuje túto smernicu z iných smerníc rovnakých mien. V dôsledku spracovania Assembler môže byť určitým charakteristikám pridelená osobitná smernica;

­ prevádzkový kód (CPA) a smernica - Ide o mnemonické označenia príslušného strojového tímu, makrá alebo prekladateľských smerníc;

­ operands - Časti tímov, makro veliteľov alebo assembler smernice označujúce objekty nad ktorými sa vykonávajú akcie. Assembler operands sú popísané výrazmi s numerickými a textovými konštantami, značkami a identifikátormi premenných pomocou operácií a niektorých vyhradených slov.

Pomoc syntaktických diagramov nájsť a potom prejsť cez login grafu (vľavo) na jeho výstup (vpravo). Ak existuje táto cesta, návrh alebo dizajn je syntakticky správny. Ak nie je takáto cesta, znamená to, že kompilátor nebude akceptovať tento dizajn.

­ 2 Jazykové symboly

Prípustné symboly pri písaní textov textov sú:

1) všetky latinské listy: A-Z., A-Z.. V tomto prípade sa kapitálové a malé písmená považujú za rovnocenné;

2) čísla 0 predtým 9 ;

3) Známky ? , @ , $ , _ , & ;

4) Výkymky , . () < > { } + / * % ! " " ? = # ^ .

Ponuky Assembler sú vytvorené lexémreprezentujú syntakticky neoddeliteľné sekvencie prípustných symbolov jazyka, ktoré dávajú zmysel pre prekladateľa.

Lexemes sú:

1) identifikátory - Sekvencie prípustných znakov použitých na označenie takýchto objektov objektov, ako sú operačné kódy, názvy premenných a názov štítkov. Pravidlo nahrávania identifikátora je nasledovné: Identifikátor sa môže skladať z jedného alebo viacerých znakov;

2) reťaze symbolov - Sekvencie symbolov uzavretých v jednotlivých alebo dvojitých úvodzoch;

3) Celá Bulwa jedného z nasledujúcich systémov príplatkov : binárne, desatinné, hexadecimálne. Identifikácia čísel pri ich zaznamenávaní v programoch Assembler sa vykonáva podľa určitých pravidiel:

4) Desiatkové čísla nevyžadujú žiadne ďalšie znaky na identifikáciu ďalších znakov, napríklad 25 alebo 139. Ak chcete identifikovať v zdrojovom texte programu binárne čísla Po nahrávaní nuly a jednotiek zahrnutých do ich zloženia, dajte latinčinu " b.", Napríklad 10010101 b..

5) hexadecimálne čísla majú viac dohovorov v ich zázname:

Najprv sa skladajú z čísel 0...9 , malé a veľké písmená latinskej abecedy a., B., c., D., E., F. alebo A., B., C., D., E., F..

Po druhé, prekladateľ môže mať problémy s rozpoznaním hexadecimálneho počtu kvôli tomu, že môžu pozostávať z niektorých čísel 0 ... 9 (napríklad 190845), takže začnite s písmenom latinskej abecedy (napríklad, eF15). Aby "vysvetlila" prekladateľ, že tento lexém nie je desatinným číslom alebo identifikátorom, programátor musí špeciálne vyčleniť hexadecimálne číslo. Ak to chcete urobiť, na konci sledu hexadecimálneho počtu, ktoré tvoria hexadecimálne číslo, napíšte latinský list " h.". Toto je predpoklad. Ak sa hexadecimálne číslo začína písmenom, predná nula sa zaznamenáva pred ním: 0 eF15 h.

Takmer každý návrh obsahuje popis objektu, ktorým alebo s ktorým sa vykonávajú niektoré kroky. Tieto objekty sa nazývajú operanda. Môžu byť identifikované takto: operands. Toto sú objekty (niektoré hodnoty, registre alebo pamäťové bunky), ku ktorému prevádzkujú pokyny alebo smernice, alebo tieto objekty, ktoré definujú alebo špecifikujú prevádzku pokynov alebo smerníc.

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

­ konštantné alebo priame operandy;

­ operands;

­ prevedené operandy;

Merač adresára;

­ zaregistrujte sa operand;

­ základné a indexové operandy;

­ Štrukturálne operandy;

Vstupy.

Operands sú elementárne komponenty, z ktorých je vytvorená časť príkazu stroja, označuje objekty, cez ktoré sa operácia vykonáva. Všeobecnejšom prípade môžu operandy zahrnúť ako súčasť zložitejšieho vzdelávania výrazy.

Výrazy existujú kombinácie operandov a prevádzkovateľov považovaných za celok. Výsledkom výpočtu expresie môže byť adresa určitej pamäťovej bunky alebo nejakej konštantnej (absolútnej) hodnoty.

­ 3 Typy prevádzkovateľov assemblerov

Uvádzame možné typy assembler operátori a syntaktické pravidlá pre tvorbu expresie assemblerov:

­ aritmetickí operátori;

­ prevádzkovatelia radenia;

­ prevádzkovatelia porovnávania;

­ logických operátorov;

­ operátor indexu;

­ typ Predefinívny operátor;

­ prevádzkovateľ nadefinovanie segmentu;

­ typ premenovania operátora;

­ operátora získania zložky segmentu adresy výrazu;

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

1 Smernice Assembler

­ Smernice Assembler sú:

1) Smernice segmentácie. Počas predchádzajúcej diskusie sme našli všetky základné pravidlá pre zaznamenávanie tímov a operandov v programe Assembler. Otázka zostala otázkou, ako správne vytvoriť postupnosť príkazov, takže ich prekladateľ môže spracovať a mikroprocesor je vykonať.

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

­ s jedným kódovým segmentom;

­ s jedným segmentom zásobníka;

­ s jedným segmentom údajov;

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

Fyzicky segment je oblasť pamäte, obsadená príkazmi a (alebo) dátami, ktorých adresy sa vypočítavajú v porovnaní s hodnotou v príslušnom registri segmentu. Syntaktický popis segmentu na assembler je dizajn znázornený na obrázku 13:


­ Obrázok 13 - Syntax Popis segmentu na assembler

Je dôležité si uvedomiť, že funkčný účel segmentu je trochu širší ako jednoduché porušenie programu na blokoch kódu, údajov a zásobníka. Segmentácia je súčasťou všeobecnejšieho mechanizmu spojeného s koncepcia modulárneho programovania. Zahŕňa zjednotenie dizajnu objektov modulov vytvorených kompilátorom, a to aj z rôznych programovacích jazykov. To vám umožní kombinovať programy napísané v rôznych jazykoch. Je určený na implementáciu rôznych možností pre takéto združenie a operandy v smernici o segmentoch.

2) Smernice o manažmente. Smernice o riadení zoznamu sú rozdelené do nasledujúcich skupín:

­ všeobecné smernice o riadení zoznamu;

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

­ podmienené smernice blokovania montáže;

­ smernice o výkone v zozname makrokomandu;

­ zoznam informácií o zápisoch Cross-Referencie;

­ zmena smerníc o zmene formátu.

2 Systém príkazového systému

Systém príkazového príkazu je prezentovaný na obrázku 14.

Zvážte hlavné skupiny tímov.

­ Obrázok 14 - Klasifikácia Assembler Commands

Tímy sú:

1 Príkazy prenosu dát. Tieto príkazy zaberajú veľmi dôležité miesto v systéme príkazov akéhokoľvek procesora. Vykonávajú nasledujúce hlavné funkcie:

­ Úspora v pamäti obsahu interných registrov procesorov;

­ kopírovanie obsahu z jednej oblasti pamäte do druhého;

­ písanie I / O zariadenia a prečítajte si z i / o zariadenia.

V niektorých procesoroch sú všetky tieto funkcie vykonáva jeden jediný tím.MOV. (Pre zásielky Byte -MOVB. ) ale s rôznymi metódami riešenia operandov.

V iných procesoroch, okrem tímuMOV. Na vykonanie uvedených funkcií je niekoľko ďalších príkazov. Tiež príkazy prenosu dát zahŕňajú príkazy na zdieľanie informácií (ich označenie je založené na slovoVýmena. ). Môžu existovať výmena informácií medzi internými registrmi, medzi dvoma polovicou jedného registra (Swap ) Alebo medzi registrom a pamäťovou bunkou.

2 aritmetické tímy. Aritmetické tímy považujú operandové kódy ako numerické binárne alebo binárne desatinné kódy. Tieto príkazy môžu byť rozdelené do piatich hlavných skupín:

­ pevné bodkočiarky (pridanie, odčítanie, násobenie, rozdelenie);

­ plávajúce bodkočiarky (add, odčítanie, násobenie, rozdelenie);

­ Čistiace príkazy;

­ prírastkov a znižovania;

­ porovnať príkaz.

3 pevné bodkočiarky ovládajú príkazy pracovať s kódmi v registroch procesorov alebo v pamäti ako konvenčné binárne kódy. Plávajúce spoločenstvo (bod) Operačné príkazy Používajú formát zobrazenia čísel s objednávkou a Mantissa (zvyčajne tieto čísla zaberajú dve po sebe idúce pamäťové bunky). V moderných silných procesoroch nie je sada plávajúcich bodkočiariek obmedzený na štyri aritme, a obsahuje mnoho ďalších zložitejších príkazov, napríklad výpočet trigonometrických funkcií, logaritmických funkcií, ako aj komplexných funkcií potrebných pri spracovaní zvuku a obrázkov.

4 Čistiace príkazy sú navrhnuté tak, aby zapisovali nulový kód do registra alebo pamäťovej bunky. Tieto príkazy môžu byť nahradené príkazmi na prepravu nulových kódov, ale špeciálne príkazy čistenia sú zvyčajne rýchlejšie ako príkazy na odoslanie.

5 prírastkov (zvýšenie jednotky) a znižovanie

(Redukcia na jednotku) sú tiež veľmi pohodlné. Môžu byť v zásade nahradiť príkazy summatizácie s jednotkou alebo odčítaním jednotky, ale prírastok a znižovanie sú rýchlejšie ako súčet a odčítanie. Tieto príkazy vyžadujú jeden vstupný operand, čo je výstupný operand.

6 Porovnávacie príkaz je navrhnutý tak, aby porovnal dvoch vstupných operandov. V podstate vypočíta rozdiel týchto dvoch operandov, ale výstupný operand sa nevytvára, ale mení bity v registri štátu procesora podľa výsledku tejto odčítania. Nasledujúci príkaz na porovnávacie príkaz (zvyčajne je to prechodový príkaz) bude analyzovať bity v registrácii stavu procesora a vykonávať akcie v závislosti od ich hodnôt. Niektoré procesory poskytujú príkazy porovnávania reťazca dvoch sekvencií operandov v pamäti.

7 Logické príkazy. Logické príkazy sa vykonávajú na operanstvách logických (bitových) operácií, to znamená, že považujú operand kódy nie ako jedno číslo, ale ako súbor jednotlivých bitov. Líšia sa od aritmetických tímov. Logické príkazy Vykonávajú nasledujúce základné operácie:

­ logické a logické alebo pridanie modulu 2 (s výnimkou alebo);

­ logické, aritmetické a cyklické posuny;

­ skontrolujte bity a operandy;

­ inštalácia a čistenie bitov (vlajky) registra štátu procesora (Psw).

Príkazy Logic Operations vám umožňujú prepravu vypočítať základné logické funkcie z dvoch vstupných operandov. Okrem toho, operácia a používa sa na nútenú čistenie špecifikovaných bitov (ako jeden z operandov, použije sa kód masky, v ktorom sú vypúšťacie výboje nastavené na nulu). Prevádzka alebo aplikovaná na nútenú inštaláciu špecifikovaných bitov (ako jeden z operandov, kód masky sa používa, v ktorom sa vypúšťajú, ktoré vyžadujú inštaláciu na jednotku, sa rovná jednému). Prevádzka "Výborné alebo" sa používa na inverziu zadaných bitov (ako jeden z operandov, použije sa kód masky, v ktorom sú bity, ktoré sú predmetom inverzie nastavené na jednotku). Príkazy vyžadujú dve vstupné operandy a tvoria jeden výstupný operand.

8 príkazov Shifts vám umožňujú zmiešať operandový kód doprava (smerom k mladším výbojom) alebo vľavo (v smere seniorov). Typ posunu (logický, aritmetický alebo cyklický) určuje, ktorá bude novou hodnotou staršieho bitov (keď posun doprava) alebo mladší bit (počas posunu vľavo), a tiež určuje, či najstaršia hodnota Starší bit (keď sa posun vľavo) uloží niekde alebo mladší bit (pri posunu vpravo). Cyklické posuny vám umožňujú presunúť bity operandu kódu v kruhu (v smere hodinových ručičiek, keď je posun vpravo alebo proti smeru hodinových ručičiek, keď sa posun vľavo). Zároveň môže vstupný krúžok zadať alebo nezadať príznak prenosu. V príznakovom bitov (ak sa použije), hodnota staršieho bitu sa zaznamenáva počas cyklického posunu doľava a mladší bit počas cyklického posunu vpravo. V súlade s tým, hodnota prenosového vlajka bit bude zodpovedať najnižšiemu vybitiu počas cyklického posunu vľavo a v seniorovom výbore počas cyklického posunu doprava.

9 Príkazy prechodov. Družstvá sú navrhnuté tak, aby organizovali všetky druhy cyklov, pobočiek, hovorov na podprogramov atď., To znamená, že porušujú sériový pokrok. Tieto príkazy sú zaznamenané v príkazovom registri novom význame a tým zavolajte prechod procesora, ktorý nie je na nasledujúci príkaz, ale na akýkoľvek iný príkaz v pamäti programov. Niektoré príkazy prechodov poskytujú ďalší návrat späť do bodu, z ktorého bola vykonaná prechod, iné to neposkytujú. Ak je vrátená náhrada, potom sú aktuálne parametre procesora uložené v zásobníku. Ak nie je vrátená náhrada, potom sa aktuálne parametre procesora neuložia.

Porovnať príkazy bez náhrady sú rozdelené do dvoch skupín:

­ bezpodmienečné prechody;

­ spoločné prechody.

V označení týchto príkazov sa používajú slováPobočka (rozvetvenie) a skok (skok).

Príkazy bezpodmienečných prechodov spôsobujú prechod na novú adresu, bez ohľadu na čokoľvek. Môžu zavolať prechod na zadanú hodnotu posunu (dopredu alebo dozadu) alebo na zadanú adresu pamäte. Hodnota posunu alebo nová hodnota adresy je označená ako vstupný operand.

Podmienené prevodné príkazy spôsobujú, že prechod nie je vždy, ale len pri vykonávaní zadaných podmienok. Ako takéto podmienky sú hodnoty vlajky v štátnom registri procesora zvyčajne konajú.Psw. ). To znamená, že podmienka prechodu je výsledkom predchádzajúcej operácie, ktorá zmení hodnoty vlajok. Celkové podmienky prechodu môžu byť od 4 do 16. Niekoľko príkladov podmienených prechodných tímov:

­ prechod, ak nulová;

­ prechod, ak nie nula;

­ prechod, ak existuje prepad;

­ prechod, ak nie je prepad;

­ prechod, ak je viac nula;

­ prechod, ak je menšia alebo rovná nule.

Ak sa vykoná stav prechodu, je prevzatý do registra príkazov novej hodnoty. Ak sa podmienka prechodu nevykoná, merač príkazu sa jednoducho zvyšuje a procesor vyberie a vykoná nasledujúci príkaz v poriadku.

Najmä pri kontrole podmienok prechodného stavu sa v porovnaní Command (SMR) aplikuje pred podmieneným velením transformácie (alebo dokonca niekoľko konvenčných prechodných tímov). Ale príznaky môžu byť nainštalované a akýkoľvek iný príkaz, ako je príkaz prenosu dát, akýkoľvek aritmetický alebo logický príkaz. Treba poznamenať, že samotné príkazy Flag Transition sa nezmenia, že to umožňuje dať niekoľko príkazov prechodu po druhom.

Osobitné miesto medzi prechodnými tímami sú obsadené príkazmi prerušenia. Tieto príkazy ako vstupný operand vyžadujú prerušenie (vektorová adresa).

Výkon:

Jazyk Assembler je symbolická prezentácia zariadenia stroja. Jazyk assemblera pre každý typ počítača. Program Assembler je sada pamäťových blokov nazývaných pamäťovými segmentmi. Každý segment obsahuje súbor jazykových návrhov, z ktorých každý zaberá samostatný riadok programového kódu. Návrhy Assembler sú štyri typy: tímy alebo pokyny, makrá, smernice, komentár.

Všetky latinské písmená sú prípustné pri písaní textu programov: A-Z., A-Z.. V tomto prípade sa kapitálové a malé písmená považujú za rovnocenné; Čísla OT 0 predtým 9 ; \\ T príznaky ? , @ , $ , _ , & ; \\ T rozdiely , . () < > { } + / * % ! " " ? = # ^ .

Používajú sa nasledujúce typy prevádzkovateľov assemblerov a syntaktických pravidiel pre tvorbu expresie assemblerov. Aritmetickí operátori, príkazy na zmenu, porovnávacie operátori, logickí operátori, prevádzkovateľ indexu, operátor redefinície typu, operátora redefinície segmentu, operátor pre redefiníciu segmentu, operátor štruktúry pomenovanie, operátor získavania segmentovej zložky expresnej adresy, operátor expresného posunu.

Príkazový systém je rozdelený do 8 hlavných skupín.

­ Kontrolné otázky:

1 Čo je to assembler?

2 Aké znaky môžu byť použité na nahrávanie príkazov na assembler?

3 Aké sú etikety a ich stretnutie?

4 Vypočítajte štruktúru príkazov Assembler.

5 Zoznam 4 Druhy návrhov na montáž.

Národná univerzita Uzbekistanu pomenovaná po Mirzo Ulugbek

Fakulta výpočtovej techniky

Na tému: Sémantická analýza súboru EXE.

Vykonané:

Taškent 2003.

Predslov.

Assembler Language and Tímová štruktúra.

Štruktúra exe -file (sémantická analýza).

Štruktúra súboru COM.

Princíp činností a šírenia vírusu.

Disassembler.

Programy.

Predslov

Profesia programátora je úžasná a jedinečná. V súčasnosti nemôžu byť veda a život odoslaný bez najnovšej technológie. Všetko, čo je spojené s ľudskou aktivitou, nerobí bez výpočtovej techniky. A to prispieva k jeho vysokému rozvoju a dokonalosti. Nechajte rozvoj osobných počítačov začne nie tak dávno, ale počas tohto času boli kolosálne kroky na softvérových produktoch a na dlhú dobu budú tieto produkty široko používané. Oblasť spojená s vedomosťami počítačov prešla výbuchom, ako aj zodpovedajúcu technológiu. Ak si neberiete obchodnú stranu, potom môžeme povedať, že v tejto oblasti profesionálnej činnosti neexistujú žiadne odborné aktivity. Mnohí z nich vyvíjajú programy, ktoré nie sú v záujme prospechu alebo príjmov, ale podľa vlastnej vôle, vášňou. Samozrejme, že by to nemalo mať vplyv na kvalitu programu, a v tejto veci, tak hovoriť "podnikania" existuje súťaž a dopyt po kvalite realizácie, v stabilnej práci a spĺňa všetky požiadavky modernosti. Tu stojí aj za zmienku vzhľad mikroprocesorov v 60. rokoch, ktoré prišli nahradiť veľký počet svietidiel. Existujú určité odrody mikroprocesorov, ktoré sú veľmi odlišné od seba. Tieto mikroprocesory sa od seba líšia z tímov vypúšťania a vstavaných systémov. Najbežnejšie ako: Intel, IBM, Celeron, AMD atď. Všetky tieto spracovatelia súvisia s rozvinutou architektúrou procesorov Intel. Šírka mikropočítačov bolo dôvodom na revíziu postoja k jazyku assembler pre dva hlavné dôvody. Po prvé, programy napísané v jazyku assembler vyžadujú výrazne menšiu mieru pamäte a času vykonávania. Po druhé, znalosti jazyka assembler a výsledného strojového kódu dáva pochopenie architektúry stroja, čo je nepravdepodobné, že by sa poskytli pri práci v jazyku na vysokej úrovni. Hoci väčšina špecialistov softvéru sa vyvíja v jazykoch na vysokej úrovni, ako je Pascal, C alebo Delphi, ktorý je jednoduchšie pri písaní programov, najsilnejší a efektívny softvér je plne alebo čiastočne napísaný v jazyku assembler. Jazyky na vysokej úrovni boli navrhnuté tak, aby sa zabránilo špeciálnym technickým charakterom špecifických počítačov. A assembler jazyk je naopak navrhnutý pre špecifické špecifiká procesorov. V dôsledku toho, aby ste napísali program v jazyku assembler pre konkrétny počítač, mali by ste poznať svoju architektúru. V súčasnosti je typ hlavného softvéru exe súbor. Vzhľadom na pozitívne aspekty toho môže byť autorom programu istí vo svojej bezúhonnosti. Ale často to nie je tak. Tam je tiež demontáž. S pomocou demontáže môžete naučiť prerušenia a programové kódy. Osoba, ktorá sa demontovala v Assembleri, nebude ťažké premazať celý program svojmu vkusu. Možno preto najviac nevyriešený problém - vírus. Prečo ľudia píšu vírus? Niektorí sa opýtajú túto otázku prekvapením, niektorí s nahnevane, ale aj ľudia naďalej existujú, ktorí majú záujem o túto úlohu, nie z hľadiska spôsobovania nejakej ujmy, ale ako úroky na systémové programovanie. Blízko zápisu z rôznych dôvodov. Jedným z systémových výziev, iní zlepšujú svoje vedomosti v Assembler. Budem sa snažiť o to všetko v mojom kurze. Povedala tiež nielen o štruktúre EXE súboru, ale aj o jazyku assembler.

^ Assembler Language.

Je zaujímavé sledovať, počnúc časom vzhľadu prvých počítačov a končiac s dnešným dňom, na transformáciu myšlienok o jazyku assembler od programátorov.

Akonáhle bol assembler jazyk, bez vedomia, o ktorej nebolo možné, aby počítač urobil niečo užitočné. Postupne sa situácia zmenila. Zdá sa, že pohodlnejší prostriedok komunikácie s počítačom. Ale, na rozdiel od iných jazykov, Assembler nezomrel, takže to nemohol urobiť v zásade. Prečo? Pri hľadaní odpovede sa pokúsime pochopiť, aký jazyk assembler je všeobecne.

Ak je skratka, jazyk assembler je symbolickým prezentáciou zariadenia stroja. Všetky procesy v stroji na najnižšej úrovni hardvéru sú poháňané iba príkazmi (pokyny) jazyka stroja. Je jasné, že aj napriek všeobecnému menu jazyka assembler pre každý typ počítača. Týka sa to vzhľadu programov napísaných v assembler a myšlienkach, ktorého je tento jazyk.

Ak chcete skutočne vyriešiť problémy spojené so zariadením (alebo dokonca, okrem toho, v závislosti od zariadenia, ako napríklad zlepšenie rýchlosti programu), nie je možné bez vedomia o Assembler.

Programátor alebo ktorýkoľvek iný užívateľ môže použiť akékoľvek nástroje na vysokej úrovni, až do programov pre stavebné virtuálne svety a možno nie sú ani podozrenie, že počítač skutočne nevykonáva jazykové príkazy, na ktorých je jeho program napísaný, a ich transformovaná prezentácia Vo forme nudných a smutných komunikačných sekvencií úplne iného jazyka - stroj. A teraz si predstavíme, že takýto užívateľ má neštandardný problém alebo jednoducho niečo nedržal. Napríklad, jeho program by mal pracovať s niektorými neobvyklými zariadeniami alebo vykonávať iné akcie, ktoré si vyžadujú znalosti o princípoch počítačového vybavenia. Bez ohľadu na to, ako šikovný je programátor, bez ohľadu na to, ako dobrý jazyk, v ktorom napísal svoj nádherný program, bez toho, aby som poznal assembler, nemohol urobiť. A nie je náhodou, že takmer všetci kompilátory jazykov na vysokej úrovni obsahujú komunikáciu o ich moduloch s modulmi na assembler alebo podporujú prístup k úrovni programovania Assembler.

Samozrejme, že čas počítača univerzálny už prešiel. Ako hovoria, že je nemožné tvrdiť obrovské. Ale je tu niečo spoločné, druh základy, na ktorom je postavená akákoľvek vážna počítačová výchova. Tieto znalosti o princípoch počítača, jeho architektúry a jazyka assembler ako odrazu a uskutočnenia týchto poznatkov.

Typický moderný počítač (na základe I486 alebo Pentium) pozostáva z nasledujúcich komponentov (obr. 1).

Obr. 1. Počítačové a periférne zariadenia

Obr. 2. Štrukturálna schéma osobného počítača

Z obrázku (obr. 1) je možné vidieť, že počítač sa skladá z niekoľkých fyzických zariadení, z ktorých každý je pripojený k jednému bloku nazývanému systému. Ak sa logicky hádajte, je zrejmé, že zohráva úlohu určitého koordinačného zariadenia. Pozrime sa do systémovej jednotky (nemusíte sa pokúsiť preniknúť do monitora - nie je nič zaujímavé, okrem toho je nebezpečné): Otvorte prípad a vidieť niektoré dosky, bloky, spojovacie vodiče. Ak chcete pochopiť ich funkčný účel, pozrime sa na štrukturálnu schému typického počítača (obr. 2). Netvrdí bezpodmienečnú presnosť a má za cieľ ukázať účel, vzťah a typické zloženie prvkov moderného osobného počítača.

Poďme diskutovať o schéme na obr. 2 v niekoľkých nekonvenčný štýl.
Je to typické, stretnutie s niečím novým, pozrite sa na niektoré združenia, ktoré mu môžu pomôcť poznať neznámy. Aké združenia je počítač? Mám napríklad počítač často spojený s osobou sám. Prečo?

Muž vytvárajúci počítač niekde v hlbinách seba myslel, že by vytvoril niečo ako sám. Počítač má vnímanie informácií z vonkajšieho sveta - je klávesnica, myš, pamäťové zariadenia na magnetických diskoch. Na obr. 2 Tieto orgány sú umiestnené vpravo od systémových pneumatík. Počítač má "tráviacich" orgánov, ktoré sú prijaté informácie centrálny procesor a RAM. A konečne, počítač má rečové orgány, ktoré vypiali výsledky spracovania. Toto sú tiež niektoré zariadenia vpravo.

Moderné počítače, samozrejme, ďaleko na osobu. Môžu byť porovnané s tvormi interakciou s vonkajším svetom na úrovni veľkej, ale obmedzenej sady bezpodmienečných reflexov.
Táto sada reflexov vytvára systém príkazov stroja. Na akejkoľvek vysokej úrovni nekomunikujete s počítačom, nakoniec všetko prichádza na nudnú a monotónnu sekvenciu príkazov stroja.
Každý strojový tím je druh dráždivého, aby ste mohli vzrušujúci jeden alebo iný bezpodmienečný reflex. Reakcia na tento stimul je vždy jednoznačná a "šitá" v bloku mikrokomandu vo forme firmvéru. Tento firmvér implementuje akcie na implementáciu príkazu stroja, ale už na úrovni signálu predložená určitým logickým obvodom počítača, čím sa riadia rôzne počítačové podsystémy. Toto je tzv. Princíp riadenia firmvéru.

Pokračovanie v analógii s osobou, poznamenávame sa, že na to, aby počítač mohol jesť správne, mnohé operačné systémy sú vynájdené, kompilátory stoviek programovacích jazykov atď. Ale všetky z nich sú v skutočnosti len jedlo, na ktorom potravinách (Programy) je dodané jednoznačným pravidlami žalúdka (počítač). Iba žalúdok počítača miluje diétne, monotónne jedlo - dať mu informácie štruktúrované, vo forme prísne organizovaných sekvencií nuly a jednotiek, ktorých kombinácie a tvoria jazyk stroja.

Externe, ako je polyglot, počítač chápe len jeden jazyk - jazyk príkazov stroja. Samozrejme, komunikovať a pracovať s počítačom, nie je potrebné poznať tento jazyk, ale takmer každý profesionálny programátor skôr alebo neskôr čelí potrebe študovať. Našťastie, programátor sa nemusí pokúsiť pochopiť hodnotu rôznych kombinácií binárnych čísel, pretože v 50-tych rokoch sa programátori začali používať symbolický analógový jazyk stroja pre programovanie, ktorý bol nazývaný assembler jazyk. Tento jazyk presne odráža všetky funkcie jazyka motora. To je dôvod, prečo, na rozdiel od jazykov na vysokej úrovni, jazyk assembler pre každý typ počítača je váš.

Zo všetkých vyššie uvedených, môžeme dospieť k záveru, že od jazyka assembler pre počítač "Native", potom najefektívnejší program môže byť napísaný len na to (za predpokladu, že píše kvalifikovaný programátor). Je to jedno malé "ale": je veľmi pracné, čo si vyžaduje veľkú pozornosť a praktické skúsenosti v procese. Preto je v hlavnom programe napísaný v hlavnom programe, ktorý by mal zabezpečiť efektívnu prácu s hardvérom. Niekedy je assembler napísaný časom vykonania alebo výdavkov. Následne sú vypracované vo forme podprogramov a sú kombinované s kódom v jazyku na vysokej úrovni.

Ak chcete študovať jazyk assembler akéhokoľvek počítača, je zmysel začať až po zistení, ktorá časť počítača je viditeľná a prístupná pre programovanie v tomto jazyku. Toto je takzvaný počítačový softvérový model, ktorej časť je mikroprocesorový softvérový model, ktorý obsahuje 32 registrov na jeden spôsob, ktorý je k dispozícii na použitie programátorom.

Tieto registre môžu byť rozdelené do dvoch veľkých skupín:

^ 16 registre používateľov;

16 Systémové registre.

V programoch v jazyku Assembler sa registri používajú veľmi intenzívne. Väčšina registrov má určitý funkčný účel.

Ako nasleduje názov, užívateľské registre sa nazývajú, pretože programátor ich môže používať pri písaní svojich programov. Tieto registre zahŕňajú (obr. 3):

Osem 32-bitových registrov, ktoré môžu byť použité programátormi na ukladanie dát a adries (nazývajú sa aj na všeobecné registry (RON)):

Šesť segmentových registrov: CS, DS, SS, ES, FS, GS;

registre status a manažmentu:

Vlajka EFLAGS / vlajky register;

Register ukazovateľa EIP / IP Ukazovateľ.

Obr. 3. Používateľské registre mikroprocesorov I486 a Pentium

Prečo sú mnohé z týchto registrov zobrazené s naklonenou separačnou funkciou? Nie, tieto nie sú rôzne registre sú časti jedného veľkého 32-bitového registra. Môžu byť použité v programe ako jednotlivé objekty. To sa robí na zabezpečenie výkonu programov napísaných pre mladšie 16-bitové modely mikroprocesorov Intel, počnúc I8086. I486 a Pentium mikroprocesory majú väčšinou 32-bitové registre. Ich počet, s výnimkou segmentových registrov, rovnako ako v I8086, ale rozmer je väčší, čo sa odráža v ich označení - majú
prefix e (rozšírená).

^ Všeobecné registre
Všetky registre tejto skupiny vám umožňujú kontaktovať našu "mladšie" časti (pozri obr. 3). Vzhľadom na túto výkresu si uvedomte, že je možné použiť na seba-adresovanie len mladších 16 a 8-bitových častí týchto registrov. Staršie 16 bitov týchto registrov ako nezávislé objekty nie sú k dispozícii. Toto sa vykonáva, ako sme uviedli vyššie, pre kompatibilitu s mladšími 16-bitovými modelmi mikroprocesorov Intel.

Uvádzame registre patriace do skupiny zaregistrovateľa univerzity. Keďže tieto registre sú fyzicky umiestnené v mikroprocesore vnútri aritmetického a logického zariadenia (allu), nazývajú sa aj registry ALLU:

eAX / AX / AH / AL (Akumulátorový register) - Batéria.
Používa sa na ukladanie medziproduktov. V niektorých tímoch sa vyžaduje použitie tohto registra;

eBX / BX / BH / BL (základný register) - Základný register.
Používa sa na uloženie základnej adresy niektorého objektu v pamäti;

eCX / CX / CH / CL (COUNTRY REGISTER) je registerový meter.
Používané vo príkazoch, ktoré produkujú niektoré opakovateľné akcie. Jeho použitie je často implicitne a skryté v algoritme príslušného tímu.
Napríklad organizácia cyklov slučky, okrem vysielania riadenia príkazu, ktorá sa nachádza na určitej adrese, analyzuje a znižuje hodnotu registra ECX / CX;

eDX / DX / DH / DL (dátový register) - Dátový register.
Rovnako ako register EAX / AX / AH / AL, ukladá medziľahlé údaje. V niektorých tímoch je jeho použitie povinné; Pre niektoré príkazy je to implicitne.

Nasledujúce dva registre sa používajú na podporu takzvaných reťazových operácií, to znamená, že operácie produkujúce sekvenčné spracovanie reťazcov prvkov, z ktorých každý môže mať dĺžku 32, 16 alebo 8 bitov:

eSI / SI (Register zdrojového indexu) - zdrojový index.
Tento register v reťazciách obsahuje aktuálnu adresu prvku v zdrojovom reťazci;

eDI / DI (Register cieľového indexu) - Index prijímača (príjemca).
Tento register v operáciách reťazca obsahuje aktuálnu adresu v reťazci prijímača.

V architektúre mikroprocesora je takáto dátová štruktúra podporovaná na úrovni softvéru a hardvéru ako stoh. Ak chcete pracovať s stohom v systéme príkazového systému mikroprocesora, existujú špeciálne príkazy av mikroprocesorovom softvérovom modeli sú špeciálne registre:

eSP / SP (Stack Ukazovateľ register) - Ukazovateľ zásobníka.
Obsahuje stohový vrchol v segmente prúdu.

eBP / BP (REGISTRÁCIA BASE UPOZORNENIE) - REGISTRÁCIA POTRUBNÉHO POTRUČNOSTI.
Navrhnuté na organizovanie ľubovoľného prístupu k údajom vo vnútri zásobníka.

Stack sa nazýva programová oblasť pre dočasné uskladnenie ľubovoľných údajov. Samozrejme, že údaje môžu byť tiež uložené v dátovom segmente, ale v tomto prípade je potrebné spustiť samostatnú pomenovanú pamäťovú bunku počas tohto času, čo zvyšuje veľkosť programu a počet použitých mien. Pohodlie zásobníka je, že jeho oblasť sa používa opakovane a šetrí ich odtiaľ pomocou efektívnych príkazov stlačenia a pop bez zadania všetkých mien.
Stack je tradične používaný napríklad na uloženie obsahu registrov používaných programom, pred volaním podprogramu, ktorý zase použije registre procesora "na svoje osobné účely". Počiatočný obsah registrov sa premieta z zásobníka po návrate z podprogramu. Ďalším spoločným recepciou je prenos podprogramu parametrov požadovaných cez stoh. Podprogram, pozná sa, v akom poradí sa umiestni na stoh parametrov, môžete ich vybrať odtiaľ a používať pri vykonávaní. Charakteristickým znakom zásobníka je zvláštny poradie vzorky údajov obsiahnutých v ňom: len horný prvok je v stohu k dispozícii kedykoľvek, t.j. Prvok naložený do stohu. Vykladanie z stohu horného prvku je k dispozícii nasledujúci prvok. Prvky stohu sa nachádzajú v pamäťovej oblasti pridelenej pod stohu, počnúc spodnou časťou zásobníka (t.j. z jeho maximálnej adresy) na dôsledne klesajúcich adries. Adresa horného, \u200b\u200bdostupného prvku je uložená v registri indikátora SP). Podobne ako akúkoľvek inú oblasť pamäte programu, musí zásobník zadať nejaký segment alebo vytvoriť samostatný segment. V každom prípade je adresa segmentu tohto segmentu umiestnená v registrácii segmentu SS zásobníka. Pai registrov SS: SP opisujú adresu cenovo dostupnej stohové bunky: adresa segmentu zásobníka je uložená v SS a v SP - posunutie týchto uložených v stohu (obr. 4, A ). Upozorňujeme, že v počiatočnom stave ukazovateľ SP STACKU označuje bunku pod spodnou časťou zásobníka a nie je zahrnutý do nej.

Obrázok 4. Organizácia Stack: A - Počiatočný stav, B - Po načítaní jedného prvku (v tomto príklade - obsah registra AH), po načítaní druhého prvku (obsah registra DS), G - Po vyložení Jeden prvok, D - po vyložení dvoch prvkov a návrat do pôvodného stavu.

Vkladanie zásobníka sa vykonáva špeciálnym príkazom na prácu s Push Stack (Push). Tento príkaz najprv znižuje obsah ukazovateľa zásobníka na 2 a potom umiestni operandu na adresu v SP. Ak napríklad chceme dočasne uložiť obsah registra AH na zásobní, musíte vykonať príkaz

Zásobník ide do stavu znázorneného na obr. 1.10, b. Je možné vidieť, že ukazovateľ zásobníka sa posunie na dve bajty hore (smerom k menším adresám) a táto adresa zaznamenáva príkaz operandu. Nasledujúci príkaz na prevzatie na stoh, napríklad,

bude stoh v stave zobrazenej na obr. 1.10, c. Stoh teraz uchováva dva prvky a iba horná bude cenovo dostupná, ktorá označuje ukazovateľ SP STUCK. Ak po nejakom čase sme potrebovali obnoviť pôvodný obsah uložený v hromadei registrov, musíme vykonať príkazy vyloženia z pop zásobníka (stlačenie):

pop ds
pop sekera.

Akú veľkosť by mala byť stoh? Záleží na tom, ako intenzívne sa používa v programe. Ak sa napríklad plánuje skladovať rad 10 000 bajtov v zásobníku, potom by mal byť stoh nižší ako táto veľkosť. Zároveň treba mať na pamäti, že v niektorých prípadoch sa stoh automaticky používa systém, najmä pri vykonávaní príkazu INT 21H prerušenia. Podľa tohto príkazcu procesor najprv umiestni spätnú adresu na zásobníku a potom DOS pošle rovnaký obsah registra a ďalšie informácie súvisiace s prerušeným programom. Preto, aj keď program vôbec nepoužíva stoh, mal by byť stále prítomný v programe a nemá menej ako niekoľko desiatok slov. V našom prvú príklade sme vzali pod stohu 128 slov, čo je určite dosť.

^ Programová štruktúra na assembler

Program Assembler je sada pamäťových blokov nazývaných pamäťovými segmentmi. Program môže pozostávať z jedného alebo viacerých takýchto blokových segmentov. Každý segment obsahuje súbor jazykových návrhov, z ktorých každý zaberá samostatný riadok programového kódu.

Ponuky Assembler sú štyri typy:

príkazy alebo pokyny, ktoré sú symbolické analógy príkazov stroja. V procese vysielania sa inštrukcie assembler transformuje na zodpovedajúce príkazy príkazového systému mikroprocesora;

macRocomans - definitívny návrh textových návrhov programu, ktoré sa nahradia počas vysielania inými návrhmi;

smernice, ktoré sú indikáciou prekladateľa assembler na vykonávanie určitých činností. Smernice nemajú žiadne analógy v reprezentácii stroja;

riadky komentárov obsahujúcich všetky znaky, vrátane písmen ruskej abecedy. Komentáre prekladateľ ignorujú.

^ Assembler Syntax

Návrhy, ktoré tvoria program, môžu byť syntaktickým dizajnom, zodpovedajúcim tímom, makrokomandom, smernicou alebo komentárom. Aby ich prekladateľ Assembler rozpoznal, musia byť tvorené určitými syntaktickými pravidlami. Na to je najlepšie použiť formálny popis syntaxe jazyka, ako sú pravidlá gramatiky. Najbežnejšie spôsoby takéhoto opisu programovacieho jazyka sú syntaktické grafy a rozšírené formy Bakusa Naura. Pre praktické použitie sú syntaktické diagramy pohodlnejšie. Napríklad syntaxe montáže Assembler je možné opísať pomocou syntaktických diagramov zobrazených na nasledujúcich obrázkoch.

Obr. 5. Formát ponuky montáže

Obr. 6. Formátová smernica

Obr. 7. Príkazový formát a makrá

Na týchto výkresoch:

názov štítku je identifikátor, ktorej hodnota je adresa prvého bajtu návrhu zdroja textu programu, ktorý označuje;

názov je identifikátor, ktorý rozlišuje túto smernicu od iných smerníc rovnakého mena. V dôsledku spracovania Assembler môže byť určitým charakteristikám pridelená osobitná smernica;

prevádzkový kód (CPC) a smernica je mnemonické označenia príslušného strojového tímu, makier alebo prekladateľských smerníc;

operands - Časti tímu, makro veliteľov alebo assembler smernice označujúce objekty, cez ktoré sa vykonávajú akcie. Assembler operands sú popísané výrazmi s numerickými a textovými konštantami, značkami a identifikátormi premenných pomocou operácií a niektorých vyhradených slov.

^ Ako používať syntaktické tabuľky? Je to veľmi jednoduché: pre to stačí nájsť a potom prejsť cestu z prihlásenia grafu (vľavo) na jeho výstup (vpravo). Ak táto cesta existuje, ponuka alebo dizajn je syntakticky správny. Ak nie je takáto cesta, znamená to, že kompilátor nebude akceptovať tento dizajn. Pri práci so syntaktickými grafmi, venujeme pozornosť smeru obtoku, označenej šípkami, pretože medzi cestami môžu byť tie, pre ktoré môžete ísť doprava doľava. V podstate sa syntaktické grafy odrážajú logiku prekladateľa, keď sa navrhuje vstupné návrhy programu.

Prípustné symboly pri písaní textov textov sú:

Všetky latinské písmená: A-Z, A-Z. V tomto prípade sa kapitálové a malé písmená považujú za rovnocenné;

Čísla od 0 do 9;

Značky?, @, $, _, &;

- \\ t ()< > { } + / * % ! " " ? \ = # ^.

Návrhy montáže sú vytvorené z lexeme, ktoré sú syntakticky neoddeliteľné sekvencie prípustných symbolov jazyka, ktoré dávajú zmysel pre prekladateľa.

Lexes sú:

identifikátory - Sekvencie prípustných znakov používaných na označenie takýchto objektov objektov, ako sú operačné kódy, názvy premenných a názov štítkov. Pravidlo nahrávania identifikátora je nasledovné: Identifikátor sa môže skladať z jedného alebo viacerých znakov. Ako znaky môžete použiť písmená latinskej abecedy, čísla a niektorých špeciálnych značiek - _ ,?, $, @. Identifikátor nemôže spustiť symbol číslice. Dĺžka identifikátora môže byť až 255 znakov, hoci prekladateľ vníma iba prvý 32 a zvyšok ignoruje. Dĺžka možných identifikátorov môžete nastaviť pomocou možnosti príkazového riadka MV. Okrem toho existuje možnosť špecifikovať prekladateľa, aby sa rozlišoval medzi veľkými a malými písmenami alebo ignoroval ich rozdiel (ktorý sa uskutočňuje štandardne).

^ Assembler príkazy.

Assembler príkazy zverejňujú schopnosť previesť svoje požiadavky na počítač, mechanizmus riadenia v programe (cykly a prechody) pre logické porovnania a softvérová organizácia. Programovateľné úlohy sú však zriedkavé. Väčšina programov obsahuje niekoľko cyklov, v ktorých sa niekoľko príkazov opakuje, kým určitá požiadavka na dosiahnutie, a rôzne kontroly, ktoré určujú, ktoré z viacerých opatrení by sa mali vykonať. Niektoré príkazy môžu prenášať kontrolu zmenou normálnej postupnosti krokov priamo upravte hodnotu posunu v príkazovom ukazovateli. Ako už bolo spomenuté vyššie, existujú rôzne tímy pre rôznych procesorov, zvážime niekoľko niektorých príkazov pre spracovateľov 80186, 80286 a 80386.

Ak chcete opísať stav vlajok po vykonaní nejakého tímu, použijeme vzorku z tabuľky odrážajúcej štruktúru vlajky EFLAGS:

V spodnom riadku tejto tabuľky sú hodnoty vlajok podávané po vykonaní príkazu. Zároveň sa používa táto notácia:

1 - Po vykonaní príkazu je príznak nastavený (rovný 1);

0 - Po vykonaní príkazu sa príznak resetuje (rovný 0);

r - Hodnota vlajky závisí od výsledku práce tímu;

Po vykonaní príkazu nie je vlajka definovaná;

priestor - Po vykonaní príkazu sa vlajka nezmení;

Na reprezentáciu operandov v syntaktických diagramoch sa používa táto notácia:

r8, R16, R32 - operand v jednej z registrov veľkosti bajtov, slova alebo dvojitého slova;

m8, M16, M32, M48 - operand v pamäti bajtov, slovo, dvojité slovo alebo 48 bitov;

i8, I16, I32 - Priamy operand Byte Size, slovo alebo dvojité slovo;

a8, A16, A32 - Relatívna adresa (offset) v segmente kódu.

Tímy (abecedné objednávky):

* Tieto príkazy sú podrobne opísané.

Pridať.
(Pridanie)

Pridávanie

^ Diagram tímov:

pridať prijímač, zdroj

Účel: Pridanie dvoch operandov Zdroj a prijímač bajt, slovo alebo dvojité slovo.

Pracovný algoritmus:

zložte zdroj a prijímač operandy;

zaznamenajte výsledok pridania do prijímača;

nainštalujte príznaky.

Stav vlajky Po vykonaní príkazu:

Aplikácia:
Príkaz Pridať sa používa na pridanie dvoch celočíselných operandov. Výsledok pridávania je umiestnený na adresu prvého operandu. Ak je výsledok prídavku cez hranicu prijímača operandu (prepad), potom túto situáciu zvážte analýzou vlajky CF a následné možné použitie príkazu ADC. Napríklad hodnoty leží v registrácii AX a pamäťovej oblasti CH. Pri pridávaní by ste mali zvážiť možnosť pretečenia.

Zaregistrujte sa plus register alebo pamäť:

| 000000dw | modregr / rm |

Registrácia AX (AL) plus priama hodnota:

| 0000010W | --Data-- | Údaje, ak w \u003d 1 |

Zaregistrujte sa alebo pamäť plus Priama hodnota:

| 100000sw | mod000r / m | --data-- | dáta, ak bw \u003d 01 |

Zavolať
(Volanie)

Postup alebo úloha

^ Diagram tímov:

Účel:

prevod kontroly úzkeho alebo dlhodobého postupu s pamäte v zásobníku v spätnom bode;

prepínanie úloh.

Pracovný algoritmus:
určený typom operandu:

Label Messenger - obsah ukazovateľa príkazového ukazovateľa EIP / IP je zadaný do stohu a nová hodnota adresy je vložená do rovnakého registra, adresa zodpovedajúcu štítku;

Label Label - Obsah ukazovateľa EIP / IP a CS príkazu sa zadáva do zásobníka. Potom sa rovnaké registre sú načítané novými hodnotami adries zodpovedajúcich dlhodobému štítku;

R16, 32 alebo M16, 32 - Určite register alebo pamäťovú bunku obsahujúcu posuny v aktuálnom segmente príkazu, kde je riadenie prenáša. Pri regulácii regulácie sa zadáva obsah ukazovateľa príkazu EIP / IP;

Memory Ukazovateľ - definuje pamäťovú bunku obsahujúcu 4 alebo 6-bajtový ukazovateľ nazývaný postup. Štruktúra takejto ukazovatele 2 + 2 alebo 2 + 4 bajtov. Výklad takéhoto ukazovateľa závisí od spôsobu prevádzky mikroprocesora:

^ Flag Statla Po vykonaní príkazu (okrem spínacej úlohy):

vykonávanie tímu nemá vplyv na vlajky

Pri prepnutí úlohy sa zmenia hodnoty vlajky v súlade s informáciami o registrácii EFLAGS v segmente stavu TSS úlohy, ku ktorému sa prepínanie.
Aplikácia:
Príkaz volania vám umožňuje zorganizovať flexibilné a viacrozmerné ovládanie podprogramu pri ukladaní adresy návratnosti.

Asi D (Štyri formáty):

Priame adresovanie v segmente:

| 11101000 | Disp-Low | DOP-HIGH

Nepriame adresovanie v segmente:

| 11111111 | MOD010R / M |

Nepriame riešenie medzi segmentmi:

| 11111111 | MOD011R / M |

Priame adresovanie medzi segmentmi:

| 10011010 | Offset-Low | Offset-High | SEG-LOW | SEG-HIGH |

Cmp
(Porovnať operandy)

Porovnanie operandov

^ Diagram tímov:

cMP operand1, operand2

Účel: Porovnanie dvoch operandov.

Pracovný algoritmus:

vykonať odčítanie (operand1 operand2);

v závislosti od výsledku, inštalovať vlajky, operand1 a operand2, aby sa nezmenili (to znamená, že výsledok nie je zapamätený).

Aplikácia:
Tento príkaz sa používa na porovnanie dvoch operandov odčítaním, zatiaľ čo operandy sa nemenia. Podľa výsledkov príkazu sú nainštalované vlajky. Príkaz CMP sa vzťahuje na príkazy podmieneného prechodu a príkazu inštalácie Byte pomocou hodnoty SETCC.

O k o d (tri formáty):

Zaregistrujte sa alebo registráciu pamäte:

| 001110DW | modregr / m |

Priama hodnota s registračnou sekerou (al):

| 0011110W | --Data-- | Údaje, ak w \u003d 1 |

Priama hodnota s registrom alebo pamäťou:

| 100000SW | MOD111R / M | --Data-- | Údaje, ak SW \u003d 0 |

Rozmnožovať
(Pokles operand o 1)

Zníženie operandu na jednotku

^ Diagram tímov:

operand

Účel: Zníženie hodnoty operandu v pamäti alebo zaregistrovať do 1.

Pracovný algoritmus:
príkaz odpočíta 1 z operandu. Stav vlajky Po vykonaní príkazu:

Aplikácia:
Príkaz DEC sa používa na zníženie hodnoty bajtov, slov, dvojitých slov v pamäti alebo registrácii za jednotku. Zároveň si uvedomte, že príkaz nemá vplyv na vlajku CF.

Registrácia: | 01001REG |

^ Registrácia alebo pamäť: | 1111111W | MOD001R / M |

Výživný
(Rozdeliť nepodpísaný)

Rozhodnutie

Diagram tímov:

divo

Účel: Vykonajte prevádzku delenia dvoch binárnych hodnôt.

^ Pracovný algoritmus:
Pre príkaz je potrebné zadať dve operandy - rozdeliť a delider. Dividenda je implicitne definovaná a jeho veľkosť závisí od veľkosti deličovateľa, ktorá je uvedená v príkaze:

ak sa delič v bajtoch, potom musí byť dividenda umiestnená v registrácii AX. Po operácii je súkromná umiestnená v Al a zvyšok v AH;

ak je delider veľkosť slova, potom sa dividenda musí byť umiestnená v pároch registrov DX: AX, a najmladšia časť dividendy je v AX. Po operácii je súkromná umiestnená v AX, a zvyšok v DX;

ak sa dvojnásobný delič, rozlišovateľný musí byť umiestnený v pair EDX REGISTER: EAX, a najmladšia časť divízie je v EAX. Po operácii je súkromná umiestnená v EAX, a zvyšok je v EDX.

^ Flag Statla Po vykonaní príkazu:

Aplikácia:
Tím vykonáva celé číslo operandov s vydávaním výsledku vydelenia vo forme súkromného a rezíduí z divízie. Pri vykonávaní operácie rozdelenia sa môže vyskytnúť výnimočná situácia: 0 - chyba rozdelenia. Táto situácia sa vyskytuje v jednom z dvoch prípadov: Delič je 0 alebo súkromný príliš veľký na jeho umiestnenie v registri EAX / AX / AL.

Oh k asi d:

| 1111011W | MOD110R / M |

Int.
PRERUŠIŤ)

Volanie Služby prerušenia služieb

^ Diagram tímov:

int number_name

Účel: Volanie podprogramu sluľby prerušenia s číslom prerušenia zadaného príkazom.

^ Pracovný algoritmus:

napíšte príznaky EFLAGS / FLAGS ADRESA. Pri obnovení návratnej adresy sa najprv zaznamená obsah registra CS segmentu, potom obsah ukazovateľa príkazového ukazovateľa EIP / IP;

resetovať IF a TF v nulovom príznakoch;

preneste kontrolu na program spracovania prerušenia so zadaným číslom. Riadiaci mechanizmus závisí od spôsobu prevádzky mikroprocesora.

^ Flag Statla Po vykonaní príkazu:

Aplikácia:
Ako je možné vidieť zo syntaxe, existujú dve formy tohto príkazu:

int 3 - má vlastný individuálny kód prevádzky 0cch a berie jeden bajt. Táto okolnosť je veľmi vhodná na použitie v rôznych softvérových debruggeroch na inštaláciu prerušených bodov nahradením prvého bajtu akéhokoľvek príkazu. Mikroprocesor, ktorý sa vyskytol v príkazovom poradí príkazového sekvencie s 0cch operačného kódu, spôsobuje program prerušenia spracovania s vektorovým číslom 3, ktorý slúži na komunikáciu s programom Debugger.

Druhá forma príkazu zaberá dve bajty, má kód operácie 0CDH a umožňuje spustiť výzvu rutiny spracovania prerušenia s číslom vektora v rozsahu 0-255. Vlastnosti riadenia manažmentu, ako je uvedené, závisia od spôsobu prevádzky mikroprocesora.

O (dvoch formátoch):

Registrácia: | 01000REG |

^ Registrácia alebo pamäť: | 1111111W | MOD000R / M |

Jcc.
JCXZ / JECXZ.
(Skok, ak je stav)

(Skok, ak cx \u003d nula / skok, ak ecx \u003d nula)

Prechod, ak je stav spokojný

Prechod, ak je CX / ECX nula

^ Diagram tímov:

jCC tag
Štítok JCXZ
jecxz tag

Účel: Prechod v aktuálnom segmente príkazu v závislosti od určitého stavu.

^ Veliaci algoritmus (okrem JCXZ / Jecxz):
Kontrola stavu vlajok v závislosti od kódu operácie (odráža overiteľnú podmienku):

ak je testovací stav skutočne pravdivý, potom prejdite na bunku určenú operandom;

ak je platný stav false, potom preneste nasledujúci príkaz.

JCXZ / JECXZ TEAMNÝ PRACOVNÝ ALGORITHM:
Skontrolujte podmienky rovnosti nula Obsah registra ECX / CX:

ak je overiteľný stav

Práca

Pod disciplínou "Systémové programovanie"

Téma №4: "Riešenie úloh pre postupy"

Možnosť 2.

East Siberian State University

Technológia a riadenie

____________________________________________________________________

Technologická vysoká škola

ÚLOHA

pre kurz

Disciplína:
Téma: Riešenie úloh pre postupy
Umelec: Glavinskaya Arina Aleksandrovna
Leader: Dambaevaseegma Viktorovna
Zhrnutie práce: štúdium podprogramov v jazyku assembler,
Riešenie úloh pomocou podprogramov
1. Teoretická časť: Základné informácie o jazyku Assembler (Set
Tímy atď.), Organizovanie podprogramov, spôsobov prenosu drog
v podprogramoch
2. Praktická časť: Vypracovať dva podprogramy, z ktorých jeden prevádza príslušný list titulu (vrátane ruských písmen) a ostatné prevádza list k riadku.
Konvertuje akýkoľvek daný list titulu a druhý prevádza list k riadku.
Konvertuje písmeno k riadku.
Podmienky vykonávania projektu na harmonograme:
1. Teoretická časť je 30% o 7 týždňa.
2. Praktická časť - 70% o 11 týždňa.
3. Ochrana - 100% o 14 týždňa.
Požiadavky na registráciu:
1. Výpočet a vysvetľujúca poznámka projektu Exchange by mala byť prezentovaná
Elektronické a pevné kópie.
2. Správa o správe musí byť najmenej 20 písacích stránok bez účtovných aplikácií.
3. RPZ sa vydáva podľa GOST 7.32-91 a podpisuje manažér.

Manažér __________________

Umelec __________________

Dátum vydania " 26 " september 2017 G.


Úvod 2.

1.1 Základné informácie o jazyku Assembler. 3.

1.1.1 Súprava príkazov. štyri

1.2 Organizácia podprogramov v jazyku Assembler. štyri

1.3 Metódy prenosu parametrov v podprogramov. 6.

1.3.1 Prenos parametrov prostredníctvom registrov .. 6

1.3.2 Prenos parametrov cez stoh. 7.

2 Praktická časť .. 9

2.1 Nastavenie problému. deväť

2.2 Popis problému problému. deväť

2.3 Testovanie programu .. 7

Záver. osem

Referencie .. 9


Úvod

Je dobre známe, že je ťažké programovať na assembler. Ako viete, existuje mnoho rôznych jazykov. vysoký stupeňTo vám umožní stráviť oveľa menej úsilia pri písaní programov. Samozrejme, že otázka nastane, keď programátor môže potrebovať použiť assembler pri písaní programov. V súčasnej dobe môžete určiť dve oblasti, v ktorých je použitie jazyka assembler opodstatnené a často potrebné.

Po prvé, toto sú takzvané strojovo závislé systémové programy, zvyčajne spravujú rôzne počítačové zariadenia (takéto programy sa nazývajú ovládače). Tieto systémové programy používajú špeciálne príkazy stroja, ktoré sa nemusia aplikovať obyčajným (alebo ako hovoria aplikovaný) Programy. Tieto príkazy sú nemožné alebo veľmi ťažké nastaviť na jazyku na vysokej úrovni.

Druhá oblasť aplikácie Assembler je spojená s optimalizáciou vykonávania programu. Veľmi často, programoví prekladatelia (kompilátory) s jazykmi na vysokej úrovni poskytujú veľmi neefektívny program v stroji. To sa zvyčajne týka výpočtového programu, v ktorom sa väčšina času vykonáva veľmi malý (asi 3-5%) programu (hlavný cyklus). Ak chcete vyriešiť tento problém, môžu byť použité takzvané viacjazyčné programovacie systémy, ktoré vám umožní nahrávať časti programu v rôznych jazykoch. Typicky sa hlavná časť programu zaznamenáva v programovacom jazyku na vysokej úrovni (Fartan, Pascal, C atď.) A kritický čas realizácie programu je na assembler. Rýchlosť celého programu sa môže výrazne zvýšiť. Často je to jediný spôsob, ako urobiť program výsledok za prijateľný čas.

Účelom tohto kurzu je získať praktické zručnosti na pracovné programovanie v jazyku assembler.

Úlohy práce:

1. Ak chcete študovať základné informácie o jazyku assembler (štruktúra a komponenty programu Assembler, formát tímu, organizácia podprogramov atď.);

2. Preskúmajte typy bitových operácií, formát a logiku prevádzky logických montážnych príkazov;

3. Vyriešte individuálnu úlohu použitia podprogramov v assembler;

4 .. formulovať záver o vykonanej práci.

1 teoretická časť

Základné informácie o Assmbler

Assembler je nízkoúrovňový programovací jazyk, ktorý je formát pre záznamové príkazy, výhodné pre ľudské vnímanie.

Príkazy Assembler Languages \u200b\u200bsú jedným z jedných zodpovedať procesorovým tímom a v skutočnosti sú vhodnou symbolickou formou nahrávania (mnemokode) príkazov a ich argumentov. Jazyk Assembler poskytuje aj základné softvérové \u200b\u200babstrakcie: viazanie častí programu a dát po tagoch \u200b\u200bso symbolickými menami a smernicou.

Smernice Assembler vám umožňujú zahrnúť dátové bloky v programe (explicitne alebo čítať zo súboru); opakujte určitý fragment špecifikovaného počtu času; kompilovať fragment podľa stavu; Nastavte vykonanie adresy fragmentu, zmeňte hodnoty štítkov počas procesu kompilácie; Použite Makro definície s parametrami a inými.

Výhody a nevýhody

· Minimálne množstvo redundantného kódu (použitie menšieho počtu príkazov a odkazov na pamäť). V dôsledku toho vysoká rýchlosť a menšia veľkosť programu;

· Veľké objemy kódov, veľký počet ďalších menších úloh;

· Zlý kód čitateľnosti, obtiažnosť podpory (ladenie, pridávanie funkcií);

· Obtiažnosť vykonávania programovacích paradigiem a akýchkoľvek iných zložitých dohovorov, zložitosť spoločného rozvoja;

· Menej množstvom dostupných knižníc, ich malej kompatibility;

· Okamžitý prístup k zariadeniu: I / O porty, špeciálne registre procesorov;

· Maximálna "FIT" pre požadovanú platformu (použitie špeciálnych inštrukcií, technických vlastností "železa");

· Infekcie iným platformám (okrem binárnych kompatibilných).

Okrem pokynov môže program obsahovať smernice: príkazy, ktoré nie sú odoslané priamo na pokyny na obsluhu a manažérov kompilátora. Súprava a syntax sa výrazne líši a nezahŕňajú z hardvérovej platformy, ale z použitého kompilátora (generovanie dialektu jazykov v jednej rodine architektúr). Ako sada, je možné vyčleniť smernice:

· Určenie údajov (konštanty a premenné);

· Riadenie programu programu v pamäti a parametroch výstupného súboru;

· Nastavenie režimu kompilátora;

· Všetky druhy abstrakcie (t.j. prvky jazykov na vysokej úrovni) - od registračných postupov a funkcií (na zjednodušenie vykonávania paradigmy procesného programovania) na podmienečné štruktúry a cykly (pre štruktúrovanie konštrukčného programovania);

· MacROS.

Súprava príkazov

Typické príkazy jazyka assembler sú:

· Príkazy prenosu dát (MOV atď.)

· Aritmetické tímy (pridať, sub, imul atď.)

· Logické a dávkové operácie (alebo a, xor, SHR atď.)

· Riadiace tímy vykonávania programu (JMP, LOOP, RET, atď.)

· Príkazy prerušenia hovoru (niekedy odkazujú na príkazy na kontrolu): INT

· I / O príkazy v prístavoch (v, von)

Pre mikrokontroléry a mikropočítače sú tiež charakterizované kontrolnou kontrolou a prechodom podľa stavu, napríklad:

· JNE - Choď, ak nie je rovnaký;

· JGE - Choď, ak je viac alebo rovné.

Aby stroj mohol vykonávať tímy osoby na hardvérovej úrovni, je potrebné špecifikovať určitú sekvenciu akcií v jazyku "Nolikov a jednotiek". Asistent v tomto podnikaní bude assembler. Toto je nástroj, ktorý pracuje s prenosom príkazov do jazyka stroja. Písanie programu je však veľmi časovo náročný a komplexný proces. Tento jazyk nie je určený na vytvorenie pľúc a jednoduchých akcií. V súčasnosti vám akýkoľvek použitý programovací jazyk (Assembler Works Fine) vám umožňuje písať špeciálne efektívne úlohy, ktoré silne ovplyvňujú prevádzku hardvéru. Hlavným účelom je vytvoriť mikrokomán a malé kódy. Tento jazyk poskytuje viac príležitostí ako napríklad Pascal alebo C.

Stručný opis Jazyky assembler

Všetky programovacie jazyky sú rozdelené z úrovní: nízke a vysoké. Ktorýkoľvek zo syntaktického systému "rodiny" assembler je odlišný v tom, že spája naraz niektoré výhody najbežnejších a moderných jazykov. S ostatnými, ich príbuznými a skutočnosťou, že počítačový systém je možné úplne použiť.

Charakteristickým znakom kompilátora je jednoduchosť na použitie. To sa líši od tých, ktorí pracujú len s vysokou úrovňou. Ak beriete do úvahy akýkoľvek takýto programovací jazyk, funkcie assembler je dvakrát rýchly a lepší. S cieľom napísať svetelný program v ňom, príliš veľa času nebude potrebovať.

Stručne o štruktúre jazyka

Ak hovoríme všeobecne o práci a štruktúre fungovania jazyka, môžete si uistiť, že jeho príkazy plne zodpovedajú tímom procesorov. To znamená, že Assembler používa Mnemokodes, najpohodlnejšia osoba na zaznamenávanie.

Na rozdiel od iných programovacích jazykov, Assembler používa určité značky na nahrávanie pamäťových buniek namiesto adresy. Sú preložené do tzv. Sú to relatívne adresy, ktoré neovplyvňujú prevádzku procesora (nie je preložené do zariadenia stroja) a potrebné rozpoznať samotné programovacie prostredie.

Pre každú riadku procesora je jej vlastná s touto situáciou správne bude akýkoľvek proces, vrátane preložených

Jazyk Assembler má niekoľko syntaxí, ktoré budú diskutované v článku.

Plusy jazyka

Najdôležitejšou a pohodlnou adaptáciou jazyka assembler bude, že je možné napísať akýkoľvek program pre procesor, ktorý bude veľmi kompaktný. Ak sa kód ukáže, že je obrovský, potom niektoré procesy presmerujú RAM. Zároveň robia všetko rýchlo a bez zlyhaní, pokiaľ samozrejme kontrolujú kvalifikovaný programátor.

Vodiči, operačné systémy, BIOS, kompilátory, tlmočníci atď. - Toto je všetko v jazyku Assembler.

Pri použití disassembler, ktorý robí preklad zo stroja v jednom, je možné ľahko pochopiť, ako jedným alebo iným systémom systému funguje, aj keď nie je vysvetlenie. Toto je však možné len vtedy, ak sú programy svetlo. Bohužiaľ, v netriviálnych kódoch je dosť ťažké pochopiť.

Nevýhody

Nanešťastie, nováčikoví programátori (a často profesionáli), je ťažké demontovať jazyk. Assembler vyžaduje podrobný opis potrebného príkazu. Vzhľadom k tomu, že potrebujete používať príkazy stroja, rastie pravdepodobnosť chybných akcií a zložitosť vykonávania.

S cieľom napísať aj ten najjednoduchší program musí byť programátor kvalifikovaný a jeho úroveň vedomostí je dostatočne vysoká. Priemerný špecialista, bohužiaľ, často píše zlé kódy.

Ak je platforma, pre ktorú je vytvorený program, aktualizovaný, potom musia byť všetky príkazy manuálne kopírovať - \u200b\u200bto vyžaduje samotný jazyk. Assembler nepodporuje funkciu automatickej regulácie prevádzky procesov a nahradiť akékoľvek prvky.

Tímy jazyka

Ako už bolo uvedené vyššie, každý procesor má vlastnú sadu príkazov. Najjednoduchšie prvky, ktoré sú uznané akýmikoľvek typmi, sú tieto kódy:


Použitie smerníc

Programovanie mikrokontroléry v jazyku (Assembler to umožňuje a dokonale zvládne s funkciou) najnižšej úrovne vo väčšine prípadov, je úspešne končí. Najlepšie je použiť procesory s obmedzeným zdrojom. Pre 32-bitové techniky je tento jazyk dobre hodí. Často v kódoch môžete vidieť smernice. Čo to je? A čo sa používa?

Ak chcete začať, je potrebné zdôrazniť, že smernice nie sú prenesené do jazyka stroja. Regulujú výkon kompilátorov. Na rozdiel od príkazov, tieto parametre, ktoré majú rôzne funkcie, sa líšia nie sú vďaka rôznym procesorom, ale na úkor iného prekladateľa. Medzi hlavné smernice možno prideliť takto: \\ t


Pôvod mena

Kvôli názvu jazyka - "Assembler"? Hovoríme o prekladateľovi a kompilátorovi, ktorý tiež produkuje šifrovanie údajov. Z anglického assemblera neznamená nič iné ako kolektor. Program nebol zozbieraný manuálne, použila sa automatická štruktúra. Okrem toho, v súčasnosti, užívatelia a špecialisti vymazali rozdiel medzi podmienkami. Často Assembler Call Programovacie jazyky, aj keď je to len nástroj.

Vzhľadom na všeobecne akceptovaný zberný názov majú niektoré chybné riešenie, ktoré existuje jediný jazyk s nízkou úrovňou (alebo štandardné normy pre ňu). Aby programátor pochopil, akú štruktúru je o tom, je potrebné špecifikovať, pre ktorú sa použije platforma jeden alebo iný jazyk asistenta.

MACROFS

Assembler Jazyky, ktoré sú vytvorené relatívne nedávno majú makrosy. Uľahčujú pravopisu aj vykonávanie programu. Vďaka svojej prítomnosti prekladateľ vykoná písomný kód občas rýchlejšie. Pri vytváraní podmienečnej voľby môžete napísať obrovský blok tímov a je ľahšie používať makrá. Rýchli sa prepínajú medzi akciami, ak je stav alebo nesplnenie splnenia.

Pri použití makroangentických smerníc prijímateľom prijímajúci montážne makrá. Niekedy to môže byť široko používané a niekedy sa jeho funkčné funkcie sú znížené na jeden príkaz. Ich prítomnosť v Kódexe uľahčuje prácu s ním, robí to zrozumiteľnejšie a vizuálne. Avšak, malo by byť pozorné byť pozorné - v niektorých prípadoch makrá, naopak, situáciu zhoršuje.



Páči sa vám článok? Zdieľaj to