Kontakty

Štruktúra programu na assembler. Základné informácie o jazyku assembler. Pod disciplínou, "systém programovanie štruktúry tímovej štruktúry v jazyku assembler obsahuje

1. Architektúra PC ................................................ ......................... 5

    1.1. Registre.

    1.1.1 Všeobecné registre.

1.1.2. Registre segmentov

1.1.3 Register vlajok

1.2. Organizácia pamäte.

1.3. Prezentácia údajov.

1.3.1 Typy údajov

1.3.2 Prezentácia znakov a riadkov

2. Program prevádzkovatelia na assembler ..............................................

    1. Languages

2.2. Riešenie režimov a formáty príkazov stroja

3. Pseudo prevádzkovatelia ................................................ ....................

3.1 Smernice o definovaní údajov

3.2 Štruktúra programu Assembler

3.2.1 Softvérové \u200b\u200bsegmenty. Smernica

3.2.3 Zjednodušená smernica o segmentácii

4. Montáž a usporiadanie programu ................................

5. Príkazy prenosu dát ............................................... .........

    5.1 Všeobecné príkazy

    5.2 Pracovné tímy so zásobníkom

5.3 I / O príkazy

5.4 Príkazy na prenos adresy

5.5 VLASTNOSTI SPOLOČNOSTI

6. Aritmetické tímy ................................................ ...........

    6.1 Aritmetické operácie cez celé binárne čísla

6.1.1 Pridanie a odčítanie

6.1.2 Prírastkové tímy a redukciu prijímača na jednotku

6.2 Násobenie a rozdelenie

6.3 Zmena znaku

7. Logické operácie ................................................ ..................

8. Posuny a cyklické posuny ................................................ ....

9. Operácie reťazcov ................................................ ..................

10. Logika a organizácia programov ............................................. ..

10.1 Bezpodmienečné prechody

10.2 Podmienené prechody

10.4 Postupy v jazyku Assembler

10.5 Prerušuje INT.

10.6 Systémový softvér

10.6.1.1 Prečítajte si klávesnicu.

10.6.1.2 Výstup znakov na obrazovke

10.6.1.3 Dokončenie programov.

10.6.2.1 Výber režimu zobrazenia

11. Pamäť disku ................................................ ....................... ..

11.2 Stôl distribúcie súborov

11.3 I / O Operácie na disk

11.3.1 Záznamový súbor na disk

11.3.1.1 Údaje vo formáte ASCIZ

11.3.1.2 Číslo súboru

11.3.1.3 Vytvorenie súboru disku

11.3.2 Súbor čítania

Úvod

Jazyk Assembler je symbolická prezentácia zariadenia stroja. Všetky procesy v osobnom počítači (PC) na najnižšej úrovni hardvéru sú poháňané iba príkazmi (pokyny) zariadenia stroja. 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.

Assembler je vhodnou formou príkazov priamo pre komponent PC a vyžaduje znalosť vlastností a schopností integrálneho čipu obsahujúceho tieto komponenty, konkrétne PC mikroprocesor. Jazyk Assembler je teda priamo spojený s vnútornou organizáciou PC. A nie je náhodou, že takmer všetky kompilátory jazykov na vysokej úrovni podporujú prístup k úrovni programovania Assembler.

Na štúdium assembler je potrebný prvok odbornej prípravy programátora profesionála. Je to spôsobené tým, že programovanie Assembler vyžaduje znalosť architektúry PC, ktorá vám umožní vytvoriť efektívnejšie programy v iných jazykoch a kombinovať ich s programami Assembler.

Manuálne adresy Programovanie problémov v jazyku Assembler pre počítače na základe Intel Microprcessors.

Tento tutoriál je adresovaný všetkým, ktorí sa zaujímajú o architektúru procesora a základy programovania v assembler, predovšetkým vývojármi softvérového produktu.

    PC architektúra.

Počítačová architektúra je abstraktné znázornenie počítača, ktorý odráža jeho štrukturálnu, obvodovú a logickú organizáciu.

Všetky moderné počítače majú niektoré všeobecné a individuálne vlastnosti architektúry. Jednotlivé vlastnosti sú neoddeliteľné len na konkrétnom počítači modelu.

Koncepcia architektúry počítača zahŕňa:

    štrukturálna schéma počítačov;

    prostriedky a spôsoby prístupu k prvkami štrukturálnej schémy EMM;

    súprava a dostupnosť registrov;

    organizovanie a spôsoby riešenia;

    spôsob reprezentácie a formátu počítačových dát;

    sada počítačových príkazov počítača;

    formáty strojov;

    prerušenia spracovania.

Hlavné prvky počítačového hardvéru sú: systémová jednotka, klávesnica, zobrazovacie zariadenia, pohony, tlačiarenské zariadenia (tlačiareň) a rôzne komunikačné prostriedky. Systémová jednotka sa skladá zo základnej dosky, napájania a predlžovacích buniek pre ďalšie dosky. Systémová doska obsahuje mikroprocesor, permanentnú pamäť (ROM), RAM (RAM) a CoproCessor.

      Registrov.

Vnútri mikroprocesora sú informácie obsiahnuté v skupine 32 registrov (16 užívateľom, 16 systémom), na jednosmerný alebo ktoré sú dostupné programátorom. Vzhľadom k tomu, manuál je venovaný programovaním mikroprocesora 8088-i486, potom logické začať túto tému z diskusie o interných registroch mikroprocesora, ktorý je k dispozícii pre používateľa.

Vlastné registre používajú programátor na zapisovanie programov. Tieto registre zahŕňajú:

    osem 32-bitových registrov (univerzálne registre) EAX / AX / AH / AL, EBX / BX / BH / BL, ECX / CX / CH / CL, EDX / DX / DLH / DL, EDX / BP, ESI / SI, EDI / DI, ESP / SP;

    Šesť 16 -, bitových registrov: CS, DS, SS, ES, FS, GS;

    registre status a manažmentu: Zápis EFLAGS / FLAG FLAGS Register a EIP / IP Command Ukazovateľ Register.

Prostredníctvom šikmej čiary sú časti jedného 32-bitového registra. Prefix E (rozšírená) označuje použitie 32-uviaznutého registra. Pre prácu s bajtami sa používajú registre s prefixmi L (LOW) a H (HIGH), napríklad Al, CH - označujú mladšie a seniorové bajty 16-bitových častí registre.

        Zaregistry na všeobecné použitie.

EAX / AX / AH / AL (Akumulátorový register) - batéria. Používa sa pri násobení a rozdelení, v I / O operácií av niektorých operáciách cez trate.

EBX / BX / BH / BL - základný register (Základný register), často používaný pri adresovaní údajov v pamäti.

ECX / CX / CH / CL - pult (Počet registrov) sa používa ako počet cyklov opakovania cyklu.

EDX / DX / DH / DL - dátový register (Dátový register), ktorý sa používa na ukladanie medziproduktov. V niektorých tímoch je potrebné použiť.

Všetky registre tejto skupiny vám umožňujú obrátiť sa na vaše "mladšie" časti. Použitie pre seba-adresovanie Môžete len mladšie 16- a 8-bitové časti týchto registrov. Staršie 16 bitov týchto registrov ako nezávislé objekty nie sú k dispozícii.

Na podporu príkazov spracovania riadkov, ktoré umožňujú postupné spracovanie reťazcov prvkov mať dĺžku 32, 16 alebo 8 bitov:

ESI / SI (Register zdrojového indexu) - index zdroj. Obsahuje adresu aktuálneho zdroja prvku.

EDI / DI (Register indexu disgovania) - index prijímač (Príjemca). Obsahuje aktuálnu adresu v reťazci prijímača.

V architektúre MicrOPrcessor je dátová štruktúra podporovaná na úrovni softvéru a hardvéru. Ak chcete pracovať s zásobníkom, sú špeciálne tímy a špeciálne registre. Treba poznamenať, že zásobník je naplnený smerom menších adries.

ESP / SP (Ukazovateľ zásobníka) - registrovať ukazovateľ stoh. Obsahuje stohový vrchol v segmente prúdu.

EBP / BP (Základný ukazovateľ) - základný register základne zásobníka. Navrhnuté na organizovanie ľubovoľného prístupu k údajom vo vnútri zásobníka.

1.1.2. Registre segmentov

V modeli softvéru Mrkroprocesor je šesť registre segmentov: CS, SS, DS, ES, GS, FS. Ich existencia je spôsobená špecifikámi organizácie a používania mikroprocesorov Intel. Mikroprocesorový hardvér podporuje štrukturálnu organizáciu programu pozostávajúceho z segmenty. Ak chcete zadať segmenty v súčasnosti, sú v súčasnosti určené. Mikroprocesor podporuje nasledujúce typy segmentov:

    Segment kódu.Obsahuje programové príkazy na prístup k tomuto segmentu, register CS (register segmentu kódu) sa podáva - register kódov segmentu. Obsahuje adresu segmentu s príkazmi stroja, ku ktorej má mikroprocesor prístup.

    Dátový segment. Obsahuje spracovanie programu. Pre prístup k tomuto segmentu sa podáva register DS (register segmentu údajov) - register údajov segmentuktorý ukladá adresu dátového segmentu aktuálneho programu.

    Segment zásobníka. Tento segment je pamäťová oblasť s názvom Stack. Mikroprocesor organizuje stoh podľa princípu - prvý "prišiel", prvý "vľavo". Prístup k zásobníkovi slúži ako register SS (Stack segment Register) - nÁKROKobsahujúca adresu segmentu zásobníka.

    Dodatočný segment údajov. Spracované údaje môžu byť stále v troch ďalších segmentoch dát. V predvolenom nastavení sa predpokladá, že údaje sú v segmente údajov. Pri použití dodatočných dátových segmentov musí byť ich adresa explicitne špecifikovaná pomocou špeciálnych predpony segmentu redeixov v príkaze. Adresy dodatočných dátových segmentov by mali byť obsiahnuté v Es, GS, FS registroch (registre predlžovacích údajov).

        Zaregistrovať správu a stav

Mikroprocesor obsahuje niekoľko registrov, ktoré obsahujú informácie o stave ako samotný mikroprocesor a programy, ktorých príkazy sú aktuálne naložené do dopravníka. IT:

EIP / IP Command Ukazovateľ register;

    flags / vlajky vlajky.

Pomocou týchto registrov môžete získať informácie o výsledkoch vykonávania príkazov a ovplyvniť stav samotného mikroprocesora.

EIP / IP (Inštrukčný ukazovateľ) - ukazovateľ príkazy. Register EIP / IP má trochu 32 alebo 16 bitov a obsahuje posun ďalšieho príkazu k obsahu v porovnaní s obsahom registra CS segmentu v aktuálnom segmente príkazu. Tento register je priamo nedostupný, ale zmena je vykonaná príkazmi prechodu.

EFLAGS / FLAGS (Register vlajk) - registrovať vlajky. Betty 32/16 bity. Samostatné bity tohto registra majú určitý funkčný účel a sa nazývajú vlajkami. Vlajka je trochu, ktorá má hodnotu 1 ("flag"), ak je spokojný určitý stav, a hodnota 0 ("flag sa resetuje") inak. Najmladšia časť tohto registra je úplne podobná registrácii vlajok pre I8086.

1.1.3 Register vlajok

Register vlajky je 32-bitový, má názov EFLAGS (Obr. 1). Samostatné bity registra majú určitý funkčný účel a sa nazývajú vlajkami. Každý z nich pridelil konkrétny názov (ZF, CF, atď.). Mladší 16 bitov EFLAGS predstavuje 16-bitové vlajky vlajky, ktorý sa používa pri implementácii programov napísaných pre mikroprocesor I086 a I286.

Obr. 1 Register vlajok

Niektoré vlajky sú schválené vlajkami podmienok; Automaticky sa menia pri vykonávaní príkazov a zaznamenávajú tieto alebo iné vlastnosti ich výsledku (napríklad je nula). Iné vlajky sa nazývajú štátne vlajky; Zmenia sa z programu a ovplyvňujú ďalšie správanie procesora (napríklad blokové prerušenia).

Podmienky vlajok:

Cf (príznak prenosu) - prepravná vlajka. Trvá hodnotu 1, ak sa objaví integračná jednotka, objavila sa prenosová jednotka, nie "havarovanie" do vypúšťacieho sieťoviny, alebo ak pri odpočítaní čísel bez označenia, prvý z nich bol menej ako druhý. V príkazoch Shift v CF sa zadá bit, uvoľní pre vypúšťaciu mriežku. CF tiež zaznamenáva funkcie multiplikačného príkazu.

(Overflow Flag) - overflow vlajky. Je nainštalovaný v 1, ak pri pridávaní alebo odpočítaní celé čísla so znakom sa ukázalo, že je výsledok, modul je lepší ako prípustná hodnota (došlo k prepadnutiu mantissu a "vyliezol" na vypúšťanie znaku).

ZF (Nula Flag) - vlajka. Nastavte v 1, ak sa výsledok príkazu ukázal byť rovný 0.

Sf (príznak) - vlajka znamenie. Nastavte v 1, ak sa negatívny výsledok ukázal na operácie na číslach ikon.

Pf (vlajka parity) - vlajka parita. Rovná 1, ak výsledok nasledujúceho príkazu obsahuje rovnomerné množstvo binárnych jednotiek. Zvyčajne sa berie do úvahy, keď I / O operácie.

Pomocná príznaková vlajka - vlajka dodatočného prevodu. Opravuje funkcie vykonávania operácií nad binárnymi desatinnými číslami.

Stavové vlajky:

DF (smerový príznak) - podiel. Nastaví smer prezeracieho riadky v príkazoch String: na DF \u003d 0 riadky sa zobrazia "dopredu" (od začiatku až do konca), s DF \u003d 1 - v opačnom smere.

IOPL (úroveň vstupu / výstupu úrovne) - i / O ÚVOD ÚVERY.Používa sa v chránenom režime mikroprocesora, na ovládanie prístupu k príkazom I / O, v závislosti od privilégia úlohy.

Nt (vnorená úloha) - vlajka hniezdenia úloh.Používa sa v chránenom spôsobe prevádzky mikroprocesora na opravu skutočnosti, že jedna úloha je vložená do iného.

Vlajka systému:

IF (Vlajka Interrup) - prerušiť vlajku. ATF \u003d 0, procesor prestane reagovať na prerušenie prichádzajúcej na neho, keď je \u003d 1, prerušenie zámku sa odstráni.

TF (vlajka pasce) - tracking Flag. Keď TF \u003d 1, po vykonaní každého príkazcu procesor vykoná prerušenie (s číslom 1), ako môžete použiť pri ladení programu pre jeho stopu.

RF (Resume Flag) - podiel obnovy. Pri prerušení spracovania z debugových registrov.

VM (virtuálny 8086 režim) - vnútorná vlajka 8086. 1-procesor pracuje vo virtuálnom režime 8086. Procesor pracuje v reálnom alebo bezpečnom režime.

AC (Kontrola zarovnania) - vlajka riadenia. Navrhnuté na riešenie riadenia zarovnania pri prístupe k pamäti.

      Organizácia pamäte.

Fyzická pamäť, na ktorú má mikroprocesor prístup rAM (alebo prevádzkové úložné zariadenie - RAM). RAM je reťaz bajtov, ktorý má vlastnú jedinečnú adresu (jej číslo) fyzické. Rozsah hodnôt fyzických adries od 0 do 4 GB. Mechanizmus riadenia pamäte je kompletne hardvér.

Mikroprocesorový hardvér podporuje viacero modelov používania RAM:

    segmentovaný model. V tomto modeli je pamäť pre programy rozdelená do kontinuálnych oblastí pamäte (segmenty) a samotný program môže osloviť iba údaje, ktoré sú v týchto segmentoch;

    model stránky. V tomto prípade sa RAM považuje za sadu blokov s pevnou veľkosťou 4 kB. Hlavné použitie tohto modelu je spojené s organizáciou virtuálnej pamäte, ktorá umožňuje použitie pamäťového priestoru na prácu viac ako množstvo fyzickej pamäte. Pre pentium mikroprocesor môže veľkosť možnej virtuálnej pamäte dosiahnuť 4 TB.

Použitie a implementácia týchto modelov závisí od spôsobu prevádzky mikroprocesora:

    Režim reálnych adries (reálny režim). Režim je podobný procesu I8086. Sme potrební na fungovanie programov vyvinutých pre modely skorých procesorov.

    Chránený režim. V bezpečnom režime, možnosť spracovania informácií viacúčelových informácií, ochrana pamäte pomocou štvorúrovňového mechanizmu privilégií a jeho organizácii stránok.

    Virtuálny režim 8086. V tomto režime schopnosť pracovať viac programov pre i8086. Súčasne je možné fungovanie skutočných programov režimu.

Segmentácia je mechanizmus adresovania, ktorý zabezpečuje existenciu niekoľkých nezávislých cieľových priestorov. Segment je nezávislý, podporovaný v hardvérovej úrovni pamäťového bloku.

Každý program vo všeobecnom prípade môže pozostávať z ľubovoľného počtu segmentov, ale priamy prístup má tri hlavné: kód, dáta a zásobník - a od jedného do troch ďalších dátových segmentov. Operačný systém umiestni programové segmenty v pamäti RAM na určitých fyzických adries, po ktorých umiestni hodnoty týchto adries do príslušných registrov. Vo vnútri segmentu, program sa vzťahuje na adresy vzhľadom na začiatok segmentu lineárne, to znamená, že sa začína od adresy 0 a končí s adresou rovnou veľkosťou segmentu. Relatívna adresa alebo zaujatosť,ktorý mikroprocesor používa na prístup k údajom vo vnútri segmentu, sa nazýva Účinné.

Tvorba fyzickej adresy v reálnom režime

V reálnom režime rozsah zmien fyzickej adresy od 0 do 1 MB. Maximálna veľkosť segmentu 64 KB. Pri kontakte fyzická adresa RAM je určená na adresu začiatku segmentu a posunu v segmente. Adresa segmentu segmentu je prevzatá z príslušného registra segmentu. Zároveň sa register segmentu obsahuje len staršie 16 bitov fyzickej adresy začiatku segmentu. Chýbajúce Junior štyri bity 20-bitovej adresy sa získajú presunutím hodnoty registra segmentu doľava o 4 výtok. Prevádzka posunu sa vykonáva hardvér. Výsledná 20-bitová hodnota je súčasná fyzická adresa zodpovedajúca začiatku segmentu. Tj fyzická adresa Stojí za to ako pár "segment: offset", kde "segment" (segment) je prvý, kto bude prvé bity počiatočnej adresy pamäte, ku ktorej personál, a "offset" - 16-bitová adresa tejto bunky, Počítané od začiatku tohto segmentu pamäte (16 * segment + posun udáva absolútnu adresu bunky). Ak je napríklad v registri CS, hodnota 1234h sa skladuje, potom sa uloží pár adries 1234h: 507h, určuje absolútnu adresu, ktorá sa rovná 16 * 1234H + 507H \u003d 12340H + 507H \u003d 12847H. Takýto pár je zaznamenaný vo forme dvojitého slova a (ako aj pre čísla) v "Invertované" forme: V prvom Slove je posun, a segment je umiestnený a každý z týchto slov je prezentované v "invertovanom" formulári. Napríklad pár 1234h: 5678h bude zaznamenaný takto: 78 | 56 | 34 | 12 |,

Tento mechanizmus pre tvorbu fyzickej adresy umožňuje, aby sa softvér mohol presunúť, to znamená, že nešpecifické adresy na prevzatie v RAM.

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 2.5 Základy programovania procesora

So zvýšením dĺžky programu sa stáva čoraz ťažším zapamätať si kódy rôznych operácií. Určitá pomoc v tomto ohľade má mnemonic notácia.

Symbolický kódovací jazyk príkazov sa nazýva assembler.

Jazykový assembler - Toto je jazyk, v ktorom každé vyhlásenie zodpovedá presne jednému strojovému tímu.

zhromaždenie Nazýva sa Transformácia programu z jazyka Assembler, tj príprava programu v jazyku stroja nahradením symbolických mien pre stroje kódy a symbolické adresy - na absolútne alebo relatívne čísla, ako aj zahrnutie knižničných programov a Generovanie symbolických sekvencií príkazov zadaním špecifických parametrov v mikrokomandách. Tento program je zvyčajne umiestnený na ROM alebo zavedený do pamäte RAM z nejakého externého nosiča.

Jazyk Assembler má niekoľko funkcií, ktoré ju odlišujú od jazykov na vysokej úrovni:

1. Je to vzájomne jednoznačný súlad medzi príkazmi Assemblerove a príkazmi stroja.

2. Programátor v jazyku Assembler má prístup k všetkým objektom a príkazom prítomným na cieľovom stroji.

Myšlienky základov programovania na strojovo orientovaných jazykoch je užitočná pre:



Lepšie pochopenie architektúry PC a kompetentnejšieho používania počítačov;

Rozvíjať racionálnejšie štruktúry algoritmov na riešenie aplikovaných úloh;

Možnosti prezerania a úpravy spustiteľných programov s extrension.exe a.com zostavené z akýchkoľvek jazykov na vysokej úrovni, v prípade straty zdrojových programov (spôsobujúc, čo spôsobuje špecifikované programy ladenie debugger a dekompilovať ich displej v jazyku assembler);

Tvorba programov na riešenie najzodpovednejších úloh (program zostavený na strojovo orientovanom jazyku je zvyčajne efektívnejšie - v krátkom a rýchlejší záujem o 30-60 programov získaných v dôsledku vysielania z jazykov na vysokej úrovni)

Implementovať postupy zahrnuté v základnom programe vo forme jednotlivých fragmentov, ak sa nemôžu realizovať pomocou jazyka na vysokej úrovni, ani pomocou služieb operačných služieb.

Program v jazyku assembler môže pracovať len na počítači jednej rodiny a program napísaný v jazyku na vysokej úrovni môže potenciálne pracovať na rôznych strojoch.

Abeceda Assembler Languages \u200b\u200bje znaky ASCII.

Čísla len celé. Rozlišovať:

Binárne čísla, koniec v liste;

Desatinné čísla končiace písmenom D;

Hexadecimálne čísla, končí písmenom N.

RAM, registre, prezentácia údajov

Pre konkrétne MP série sa používa individuálny program - jazyk assembler.

Jazyk Assembler zaberá strednú polohu medzi počítačovými kódmi a jazykmi na vysokej úrovni. Program v tomto jazyku je jednoduchší. Jazykový program Assembler racionálne využíva možnosti konkrétneho stroja (presnejšie MP) ako program na vysokej úrovni (čo je jednoduchšie pre programátora ako assembler). Základné princípy programovania na strojovo orientovaných jazykoch sa budú pozerať na príklad jazyka assembler pre MP KR580BM80. Pre programovanie v jazyku využíva všeobecnú techniku. Špecifické techniky programových nahrávok sú spojené s vlastnosťami architektúry a systému tímov cieľového MP.

Softvérový model Mikroprocesorový systém založený na MP KR580VM80

Softvérový model MPS v súlade s obrázkom 1

MP porty pamäte

S. Z. Striedavý P. \\ t C.

Obrázok 1

Z hľadiska programátora MP KR580BM80 má nasledujúci softvér a cenovo dostupné registre.

ALE- 8-bitový register batérie. Je to hlavný register MP. Akákoľvek operácia vykonaná v Allu preberá umiestnenie jedného z operandov, ktoré sa majú spracovať v batérii. Výsledok operácie v alu sa zvyčajne skladuje aj v A.

B, c, d, e, h, l - 8-bitové univerzálne registre (RON). Interná pamäť MP. Navrhnuté tak, aby uložili spracované informácie, ako aj výsledky operácie. Pri spracovaní 16-bitových slov z registrov, BC, DE, HL párov sú vytvorené a dvojitý register sa nazýva prvé písmeno - B, D, H. V okruhu registra je prvý register. Špeciálne vlastnosti majú registre H, L používané tak pre ukladanie dát a pre skladovanie 16-bitových adries buniek RAM.

Fl- Register vlajok (Sign Register) 8-bitový register, v ktorom sa zachová päť príznakov výsledku vykonávania aritmetických a logických operácií v MP. Vo formáte v súlade s výkresom

Vypúšťanie s (CY - CARE) - Prenos je nastavený na 1, ak sa pri vykonávaní aritmetických operácií uskutočnil prevod zo staršieho bajtu vypúšťania.

Vybíjanie P (Parita) je parita, je nastavená na 1, ak je počet jednotiek pri vypúšťaní výsledku.

Množstvo AC je dodatočný prenos, navrhnutý tak, aby uložil prenosovú hodnotu z najmladšieho výsledku tetrarad.

Výboj Z (nula) je nastavený na 1, ak je výsledok operácie 0.

Výboj S (znak) je nastavený na 1, ak je výsledok negatívny, a v 0, ak je výsledok pozitívny.

Sp.- Ukazovateľ zásobníka, 16-bitový register, je navrhnutý tak, aby uložil adresu pamäťovej bunky, kde bol zaznamenaný posledný zadaný v bajtovom stohu.

Ks - Softvérový meter (Command Counter), 16-bitový register, navrhnutý tak, aby uložil adresu nasledujúceho príkazu. Obsah meraču príkazu sa automaticky zvýši o 1 ihneď po vzorke nasledujúceho velenia Byte.

V počiatočnej oblasti adresy 0000N - 07ff sa nachádzajú programy kontroly a demonštračné programy. Toto je oblasť ROM.

0800 - ODBORNENIE OBLASTI ALOFTHOVEJ PRIESTORY Na zaznamenávanie študijných programov. (RAM).

0V00 - 0VV0 - Adresy oblasti pre nahrávanie dát. (RAM).

0V0 - počiatočná adresa zásobníka. (RAM).

Stoh je špeciálne organizovaná oblasť RAM, ktorá je určená na dočasné uskladnenie údajov alebo adresy. Číslo nahrané na stohu sa najprv získavajú. Ukazovateľ zásobníka ukladá adresu poslednej bunky stohu, v ktorej sa zaznamenávajú informácie. Keď zavoláte podprogram, adresa spätnej adresy sa automaticky uloží do zásobníka. Spravidla, na začiatku každého podprogramu, obsah všetkých registrov zapojených do jeho vykonávania sa skladuje v zásobníku a na konci podprogramu ich obnovia z stohu.

Formát dát a assembler

Pamäť MP KR580B80 je rad 8-osobných slov, nazývaných Bytes, každý bajt má svoju vlastnú 16-bitovú adresu, ktorá určuje jeho polohu v sekvencii pamäťových buniek. MP môže adresovať 65536 bajtov pamäte, ktoré môžu obsahovať ROM aj RAM.

Formát údajov

Údaje sa ukladajú do pamäte ako 8-bitové slová:

D7 D6 D5 D4 D3 D2 D1 D0

Mladší kúsok je trochu 0, najstarší - bit 7.

Tím sa vyznačuje formátom, to znamená, že počet vypúšťaní pridelených na to, ktoré sú rozdelené do určitých funkčných polí.

Tímový formát

Príkazy MP KR580VM80 majú jeden, dva alebo trojročný formát. Multibálne príkazy musia byť umiestnené v susedných yaps. Formát tímu závisí od funkcií vykonávania operácie.

Prvý príkazový bajt obsahuje operačný kód zaznamenaný v mnemonickom formulári.

Definuje formát príkazu a akcie, ktoré MP musia byť vykonané na údajoch počas jeho vykonávania, a metóda adresovania a môžu tiež obsahovať informácie o zistení údajov.

V druhom a treťom bajtov môžu existovať údaje, na ktorých operácie alebo adresy označujú umiestnenie údajov. Údaje, na ktorých sa činnosti vykonávajú, sa nazývajú operandy.

Formát príkazu na jednom mieste v súlade s obrázkom 2

Obrázok 4.

Vo príkazoch v jazyku Assembler má operačný kód skrátenú formu písania anglických slov - Mnemonic Desgmentation. Mnemonica (z gréckej mnemoniky - umenie zapamätania) uľahčuje pamätať príkazy na ich funkčný účel.

Pred vykonaním, zdrojový program je preložený pomocou programu Broadcast Program s názvom Assembler, do jazyka kombinácií kódov - Jazyk počítača, v tomto formulári sa umiestni do pamäte MP a potom sa použije pri vykonávaní príkazu.


Metódy adresovania

Všetky operačné kódy (vstup a výstup) musia byť umiestnené niekde. Môžu byť vo interných registroch MP (najvhodnejšia a rýchla voľba). Môžu byť umiestnené v systémovej pamäti (najbežnejšia možnosť). Nakoniec môžu byť v I / O zariadenia (najzraniteľnejší prípad). Definícia polohy operandu je vykonaná príkazovým kódom. Existujú rôzne metódy, s ktorými kód príkazu môže určiť, kde sa má prijať vstupný operand a kde umiestnite výstupný operand. Tieto metódy sa nazývajú metódy adresovania.

Pre MP KR580VM80 sú nasledujúce metódy adresovania:

Priamy;

Registrovať;

Nepriamy;

Zafarbený.

Okamžitá riešenie predpokladá, že operand (vstup) je v pamäti priamo na príkazovom kóde. Operand je zvyčajne konštantná, ktorá je potrebné zaslať niekde, na niečo, čo by ste mali pridať, atď. Údaje sú obsiahnuté v druhom alebo v druhom a treťom bajtov príkazu, a mladší dátový bajt je v druhej polovici tímu a najstaršie - v treťom platených tímoch.

Priamy (Je to absolútne) riešenie predpokladá, že operand (vstup alebo výstup) je v pamäti na adrese, ktorej kódex je umiestnený vo vnútri programu okamžite na príkazovom kóde. Používa sa na príkazoch na Tripite.

Registrovať riešenie naznačuje, že operand (vstup alebo výstup) je vo vnútornom registri MP. Používané v jednobajtových príkazoch

Nepriamy (Implicitné) Riešenie naznačuje, že vo vnútornej registrácii MP nie je samotný operand a jeho adresa v pamäti.

Zaniknúť riešenie naznačuje, že príkaz neobsahuje adresu. Riešenie pamäťových buniek na obsah 16-bitovej registri SP (Ukazovateľ zásobníka).

Tímový systém

Systém príkazového systému MP je kompletný zoznam základných akcií, ktoré môžu produkovať MP. MP ovládaný týmito príkazmi vykonáva jednoduché akcie, ako sú elementárne aritmetické a logické operácie, prenos dát, porovnanie dvoch hodnôt atď. Počet príkazov MP KR580BM80 - 78 (berúc do úvahy modifikácie 244).

Rozlišovať tieto skupiny tímov:

Prenos údajov;

Aritmetika;

Hlavolam;

Prechodné príkazy;

I / O príkazy, ovládanie a stoh.


Symboly a skratky používané pri opise príkazov a programovacích programov

Symbol Skratka
Doplnok 16-bitová adresa
Údajov. 8-bitové dáta
Údaje 16. 16-bitové dáta
Port. 8-bitová adresa UVV (I / O zariadenia)
Bajt 2. Druhý bajtový tím
Bajt 3. Tretí bajtový tím
R1, R2 Jeden z registrov: A, B, C, D, E, H, L
Rp. Jeden z párov registra: B - Určuje pár slnka; D - Určuje pár de; H - Určuje pár hl
RH. Prvý párový register
Rl Druhý register pár
Λ Logické množenie
V. Logický prírastok
Pridanie modulu dva
M. Pamäťová bunka, ktorej adresu nastaví obsah dvojice registra hl, t.j. m \u003d (hl)

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 zásobník. 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é.



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