Alacsony szintű programozási nyelvek összeszerelése. Mikor volt az összeszerelő (összeszerelő) és a gép nyelve? Azonosítók, egész számok, szimbólumok, megjegyzések, egyenértékűség

Programozási nyelv

Az Assembler alacsony szintű programozási nyelv, amely a gépparancsok rögzítéséhez, az emberi észleléshez kényelmes.

Az összeszerelő nyelvi parancsok az egyik a processzorcsapatoknak felelnek meg, és valójában a parancsok és azok érvei megfelelő szimbolikus formájú (mnemokode). Az összeszerelő nyelv is alapvető szoftverek absztrakciókat biztosítanak: a program részeit és az adatokat a szimbolikus nevekkel és az irányelvvel rendelkező címkék után kötődnek.

Az összeszerelő irányelvek lehetővé teszik, hogy adatblokkokat tartalmazzon a programban (kifejezetten leolvassa vagy a fájlból olvassa el); Ismételje meg a megadott számú egyes fragmentumot; fragmentumot állapít meg állapot szerint; Állítsa be a töredék végrehajtási címét, változtassa meg a címkék értékeit a fordítási folyamat során; Használjon makró definíciókat paraméterekkel és egyéb.

Minden processzormodell elvben rendelkezik saját parancsokkal és az összeszerelő megfelelő nyelve (vagy dialektusa).

Előnyök és hátrányok

  • a minimális mennyiségű redundáns kód (a kisebb számú parancs és a memóriára való hivatkozás). Ennek eredményeként - nagy sebességű és kisebb programméret
  • nagy kódvolumok, nagyszámú további kisebb feladatok
  • szegény kódolhatóság, támogatási nehézségek (hibakeresés, lehetőségek hozzáadásához)
  • a programozási paradigmák és bármely más összetett egyezmények végrehajtásának nehézsége, a közös fejlesztés összetettsége
  • kevesebb könyvtár, kis kompatibilitásuk
  • közvetlen hozzáférés a berendezéshez: I / O portok, speciális processzor regiszterek
  • az önmodens kód írása (azaz metaprogramozás, valamint a szoftver tolmács nélkül)
  • maximális "illeszkedés" a kívánt platformot (Különleges utasítások, "vas" műszaki jellemzői)
  • más platformokra való intolerancia (kivéve a bináris kompatibiliseket).

Szintaxis

Az összeszerelő nyelv szintaxisára általánosan elfogadott szabvány nem létezik. Ugyanakkor vannak facto szabványok - a hagyományos megközelítések, amelyeket a legtöbb összeszerelő fejlesztője betart. A fő információs szabványok az Intel-Syntax és az AT & T-Syntax.

A felvételi utasítások általános formátuma mindkét szabvány esetében megegyezik:

`[TAG:] OPCODE [Operands] [; megjegyzés]`

A megjelenés közvetlenül az MEMONIC utasítások a processzorhoz. Az előtagok (ismétlések, változások, például címzés stb.) Hozzáadhatók hozzá. Mint operandusok, konstansok, nyilvántartási nevek, RAM-ban stb. Az Intel és az AT & T szabványok közötti különbségek elsősorban az operandusok átvitelének sorrendje és a szintaxis különböző címzési módszerekkel.

Az alkalmazott mnemonika általában ugyanazok, mint az egyik építészet vagy az építészek családjának (a processzorok és a vezérlők között, a Motorola, aRM, X86). Ezeket a processzor specifikációiban ismertetik.

Például a Zilog Z80 processzor örökölte az Intel I8080 parancsnoki rendszert, bővítette, és megváltoztatta a Mnemoniákat (és regisztrálja a megnevezéseket) saját módon. Például megváltoztattam az Intel-ot az LD-en. A Motorola Fireball Processors örökölte a Z80 parancsnoki rendszert, vágva. Ugyanakkor a Motorola hivatalosan visszatért az Intel Menemoniához. és B. ebben a pillanatban A Fireball fele az Intel Mnemonics-szel és a zilog mnemonikával.

Irányelv

Az utasítások mellett a program tartalmazhat irányelveket: olyan parancsok, amelyeket közvetlenül nem küldenek közvetlenül a gép utasításai és a fordítóvezetők. A készlet és a szintaxis jelentősen eltér, és nem függ a hardverplatformtól, hanem a felhasznált fordítótól (az architektúrák egy családján belüli nyelvek generálása). Set, az irányelvek kioszthatók:

  • adatok meghatározása (állandók és változók)
  • a szervezet szervezetének kezelése a memóriában és a kimeneti fájlparaméterekben
  • a fordító működési módja
  • mindenféle absztrakció (azaz a magas szintű nyelvek elemei) - az eljárások és funkciók nyilvántartásba vételéből (az eljárás programozási paradigmának végrehajtásának egyszerűsítése) a feltételes struktúrákhoz és ciklusokhoz (a strukturális programozás struktúrájához)
  • makrók

Az "összeszerelő nyelv" kifejezés eredete és kritikája

Az ilyen típusú nyelvek nevét a fordító nevétől (fordító) nevezték el ezekből a nyelveken - Assembler (Eng. Assemblerbler - Collector). Az utóbbi neve annak a ténynek köszönhető, hogy az első számítógépeken nem volt magasabb szintű nyelvek, és az összeszerelővel rendelkező programok létrehozásának egyetlen alternatívája közvetlenül a kódokban programozta.

Az orosz gyülekezési nyelvet gyakran úgynevezett "összeszerelő" (és valami összekapcsolt "összeszerelő"), amely a szó angol fordítása szerint helytelen, de illeszkedik az orosz nyelv szabályaihoz. Az összeszerelő (program) azonban egyszerűen "összeszerelő", és nem az "összeszerelő nyelvvágó", stb.

Az "összeszerelő nyelv" kifejezés használata hibás véleményt is okozhat egy alacsony szintű nyelv létezéséről, vagy legalábbis az ilyen nyelvek számára. Ha az adott programot megnevezték, akkor ajánlatos meghatározni, hogy mely architektúrát tervezzük, és milyen nyelven íródott.

Szintaxis elemek:

Példák:

Helló Világ!

Példa az Intel X86 (IA32) verzióira

mOV AX, CS MOV DS, AX MOV AH, 9 MOV DX, OFFSET HELLO INT 21H XOR AX, AX INT 21H HELLO: DB "Hello World!", 13, 10, "$"

Helló Világ!

Példa az Amiga verzióira

mozog. L #dos mozog. L 4. W, A6 JSR - 0198 $ (A6); Oldopenlibrary lépés. L D0, A6 BEQ. s. Mozgás. L #helloworld, d1 a) Moveq # 13, D2 JSR - $ 03AE (A6); Writechars b) jsr - $ 03B4; Putt. L A6, A1 lépés. L 4. W, A6 JSR - $ 019E (A6); Szoros. Ki az RTS DOS DC-t. b "dos.library", 0 HelloWorld DC. B "Hello World!" , $ A, 0

Helló Világ!

Példa az Atarist verzióira

mozog. L #helloworld, - (A7) Mozgás # 9, - (A7) Trap # 1 Add. L # 6, A7 mozog # 0, - (A7) Trap # 1 HelloWorld: DC. B "Hello World!", $ 0d, $ 0a, 0

Helló Világ!

Példa az Intel X86 (IA32) verzióira

A NASS Linuxot az Intel szintaxis használja. Összeállítás és összekapcsolás:

  • nASS -F Elf -o hello.o hello.asm
  • ld -o hello hello.o

Szakasz. Adatok msg db "Hello, World!", 0xa Len EQU $ - MSG szakasz. Szöveg Global _start _START :; Belépési pont MOV EAX, 4; "Írás" rendszerhívás MOV EBX, 1 MOV ECX, MSG; Mutató az adatmozgáshoz EDX, Len; Adatmennyiség int 0x80; Hívja MOV EAX, 1; "_Exit" rendszer hívja a MOV EBX, 0; Vissza 0 (minden jó) int 0x80; Hívás kernel

Helló Világ!

Példa a PDP-8 verzióira

/ - Hozzászólások.

/ Hello World On Assembler for DEC PDP - 8 * 200 Hello, CLA CLL TLS / TLS beállítja a nyomtatási zászlót. TAD CHARAC / létrehoz egy DCA IR1 index Regisztráljon / fogadja a TAD M6 karaktereket / konfigurálja a mérőt a DCA számláláshoz / fokozza a karaktereket. Következő, Tad I IR1 / Kap egy szimbólumot. JMS típus / típus. Izz szám / csinál valami mást? JMP Következő / Nem, írjon be egy másik karaktert HLT típus, 0 / TSF TSF JMP szubrutin. - 1 TLS CLA JMP i írom Characot ,. / Az IR1 kezdeti értékként használják. 310 / h 305 / E 314 / L 314 / L 317 / O 254 /, 240/327 / W 317 / O 322 / R 314 / L 304 / D 241 /! M6, - 15 szám, 0 IR1 \u003d 10 $

Helló Világ!

Például a PDP-11 verzióihoz

A program a Macro-11 MacroSassembler-en íródott, hogy összeállítsa és futtassa ezt a programot az RT-11 OS parancsban:

Macro Hello.

Hibák észlelve: 0

Link Hello - Link. Run Hello - Run

Cím Hello World; Név. Mcall. TTYOUT ,. Kilépés Hello :: Mov #msg, R1; A karakterlánc kezdeti címe $ 1: MOVB (R1) +, R0; A következő beq kész szimbólumot kapjuk; Ha nulla, jöjjön ki a ciklusból. TTYOUT; Ellenkező esetben nyomtassa ki a BR 1 $ szimbólumot; Ismételje meg a ciklust :. Msg kilépés :. Asciz / Hello, World! /;; String Hello, World! . Vége Hello; A Hello program vége

Helló Világ!

Példa a rendszer / 360, rendszer / 370 verziókra

IBM System / 360/370/390 Alapvető összeszerelő nyelv.

// Execting Start fő Balr 2, 0 *, 2 nyitott nyomtatás MVC BUF, HW Telepítés Nyomtatás Nyomtatás EOJ HW DC CL132 "Hello világ" BUF DS CL132 Nyomtatás DTFPR IOAREA1 \u003d BUF, DEVADDR \u003d SYSLST, BLKSIZE \u003d 132, * Eszköz \u003d 3203, Control \u003d Igen, Printov \u003d Igen End Main / * // EXEC LNKEDT // EXEX / * /

Helló Világ!

Példa az Apple II verzióira

* Hello világ 6502 Apple] [* ******************************** Strout Equ $ db3a LDDY #\u003e hello lda #< HELLO JMP STROUT HELLO ASC "HELLO WORLD !", 00

Helló Világ!

Például a PDP-10 verzióihoz

CHTTYO - Az összes bemenet / kimenet I / O csatornák segítségével történik. A legjobb, ha szimbolikus neveket készít azoknak a csatornáknak, amelyeket használ, és kezdje el őket Ch. Határozza meg ezeket a neveket a MIDAS operátor használatával \u003d\u003d.

A hívás szimbolikus megnevezés egy rendszerhívás hívásához. Formátuma: .call.

Az Open megnyitja a bemeneti / kimeneti csatornát a használathoz. Két paramétert igényel - csatornaszám és eszköznév sixbitben.

A% LSFIL elveszíti a bemeneti / kimeneti hibaüzenetet, ha hirtelen megtörtént.

A IOT egy olyan rendszerhívás, amely ténylegesen részt vesz a bemeneten / kimenetben. Paraméterként meg kell adnia a kimeneti szimbólumkódot tartalmazó csatornát és címet. Például: "H jelentése H.

Cím PrintHello A \u003d 1 CHTTYO \u003d\u003d 1; Csatorna a kimenethez. Rajt :; TTY csatorna megnyitása. . Hívás [setz? Sixbit / nyitott / [. Uao, Chttyo]? [Sixbit / tty /] ((SETZ))]. Elveszíti% lsfil. Iot chttyo, ["h]; nyomtatás Hello World Symbol .. Iot Chttyo, [" E]. Iot chttyo, ["l]. Iot Chttyo, [" L]. Iot chttyo, [o]. Iot chttyo, [^ m], egy új vonal szimbóluma. Iot Chttyo, [W]. Iot chttyo, [o]. Iot Chttyo, ["R]. Iot chttyo, ["l]. Iot Chttyo, [" D]. Érték; Program, Stop :) End Start

Fibonacci számok:

Példa a MIPS32 verzióira

Mars emulátor. Következtetés Mars Console:

A Fibonacci számok: 1 1 2 3 5 8 13 24 34 55 89 144 - A program befejeződött -

A program 15 fibonacci számot jelenít meg. A számok száma megváltoztatható a.data.

Adatterület: .asciiz "" fej: .asciiz "A fibonacci számok: \\ n" FIB:. Szószó 0: 15 Méret:. Fotó 15 .Text Main: La $ t0, Fib La $ T5, Méret LW $ T5, 0 ($ T5) Li $ T2, 1 add.d $ f0, $ F2, $ F4 SW $ T2, 0 ($ t0) SW $ T2, 4 ($ t0) Addi $ T1, $ T5, - 2 hurok: Lw $ T3, 0 ($ t0) LW $ T4, 4 ($ t0) T2, $ T3, $ T4 SW $ T2, 8 ($ t0) Addi $ t0, $ t0, 4 Addi $ T1, $ T1, - 1 BGTZ $ T1, hurok La $ A0, FIB Mozog $ A1, $ T5 JAL Nyomtatás Li $ V0, 10 Syscall Print: Add $ t0, $ t0, $ nulla, $ A0 Add $ t1, $ nulla, $ a1 la $ A0, fejjel Li $ v0, 4 Syscall out: lw $ A0, 0 ($ t0) Li $ V0, 1 Syscall La $ A0, Space Li $ V0, 4 Syscall Addi Li $ V0, 1 LA $ A0, ($ T2) Syscall La $ A0, String1 Li $ V0, 4 Syscall Mult $ T1, $ T2 MFLO $ T1 Li $ V0, 1 La $ A0, ($ T1) Syscall La $ A0, String2 Li $ V0, 4 Syscall Addiu $ T2, $ T2, 1 BEQ $ T2, 16, Endloop J Loop Endloop: Li $ V0, 10 Syscall



Szerelő

Szerelő - Alacsony szintű programozási nyelv. A nyelv a nevét az összeszerelő szóból kapott - egy kollektor. Egy másik 50. volt. a gép nyelv szimbolikus analógja.
Az összeszerelő parancsok az egyik az egyik, amely megfelel a processzorparancsoknak, és valójában a rögzítési parancsok és argumentumok kényelmes szimbolikus formáját jelenti. Emellett az összeszerelő biztosítja a program részei és az összeszerelés során végzett címkék adatait (minden címkéhez, a cím kiszámításra kerül, majd a címke minden bejegyzését a cím helyettesíti).
Mivel a mikroprocesszoros parancsrendszerek különböznek egymástól, minden processzornak van saját parancssori parancsja az összeszerelő nyelven.
Egy összeszerelő segítségével olyan programokat írhat, amelyek lehetetlenek, vagy nagyon nehéz írni más nyelveken. Például: kulcsgenerátorok (Keygen), Rendszer-monitorok, gépjárművezetők vagy akár operációs rendszer.
Magas szintű nyelvek ("C", "pascal", "delphi" stb.) Nem nyújtanak megbízható ellenőrzést az adatfolyamok, a memóriacímek vagy a processzor nyilvántartásai, valamint mindegyikük kifejlesztettek egy adott típusú operációs rendszer, a szerelő válhat azonos szerelő, de dolgozunk egy ismeretlen a tudomány platform, és így programok ezen a platformon.
Az összeszerelőre vonatkozó programokat, szemben a magas szintű nyelveken írt programokkal ellentétben több tízszer kevesebb, és tízszer gyorsabban dolgoznak. Egy példa szolgálhat a MenueTos operációs rendszerként, amelyet lapos összeszerelőre írtak, és egy lemezre illeszkednek (1,44 MB), és a készlet alkalmazási programokat tartalmaz, mint például: egy szerelési kódszerkesztő, háttérvilágítással, 3D-s rendszerrel dolgozik Képernyővédő, néhány játék, képek a képek, fordító lapos összeszerelő, terminál, cd lejátszó és még sok más. Az előny az, hogy gyorsan letölthető az internetről (még egy kis csatlakozási sebességgel).
Jelenleg a legtöbb szoftver szakember magas szintű nyelveken fejlődik, mint például a Pascal vagy C, amely könnyebb, ha a programok írásakor, de a legerősebb és hatékonyabb szoftver Teljes mértékben vagy részben írva az összeszerelő nyelven.

Irodalom
1. Peter Abel - Assembler. Nyelv és programozás az IBM PC - M., 1999.

Szerelő

Szerelő(Angolul. Összeszerelő - egy kollektor) - Az összeszerelő nyelven írt program forrásszöveg fordítója, a gép nyelvén.
Mint maga a nyelv, az összeszerelők általában specifikusak egy adott architektúra, operációs rendszer és a nyelv szintaxis változata. Ugyanakkor vannak többplatform vagy univerzális (pontosabban, korlátozott univerzális, mert az alacsony szintű nyelven nem írhat hardver-független programokat) olyan szerelvények, amelyek különböző platformokon és operációs rendszereken dolgozhatnak. Az utóbbiak közül, akkor is kiemelni egy cross-szerelő csoport összegyűjtésére alkalmas gépi kód és a futtatható modulok (fájlok) más architektúrákat és operációs rendszer.
A Közgyűlés nem lehet az első és nem utolsó lépés a program végrehajtó moduljának megszerzéséhez. Így sok fordító a magas szintű programozási nyelvekből származik az eredmény formájában az összeszerelő nyelven, amelyet az összeszerelő folyamatok a jövőben. Ezenkívül a kapott összeszerelést nem lehet végrehajtani, és a gépkód szétszórt blokkjait tartalmazó objektummodul és a programadatokat (vagy több objektummodulból) a Linkszerkesztő segítségével végrehajtható fájl segítségével lehet elérni.
Különleges memóriatűsejtek közvetlenül a processzorban. A nyilvántartásokkal való együttműködés sokkal gyorsabban történik, mint a RAM sejtekkel, így a regisztereket aktívan használják mind a programok mind az összeszerelő nyelvén, mind a magas szintű nyelvek fordítóiban.
A nyilvántartások nevei a céljukból származnak:

EAX / AX / AH / AL (akkumulátor regiszter) - Akkumulátor;
EBX / BX / BH / BL (Base Register) -Register adatbázis;
ECX / CX / CH / CL (számláló regiszter) - számláló;
EDX / DX / DH / DL (adatregiszter) - adatregisztráció;
ESI / SI (forrás indexregiszter) - forrás index;
EDI / DI (cél index regiszter) - vevő index (címzett);
ESP / SP (Stack Pointer Regisztráció) - Stack Pointer Regisztráció;
EBP / BP (alapmutató regiszter) - Stack Frame Base Pointer Regisztráció.

Soros feldolgozási parancsok
A sorok vagy a szimbólumok vagy számok láncai (azaz egyszerűen beszélgetés, tetszőleges adatok tömbjével) az MP-ben számos különleges parancs van:
mozgás - Szúrás küldése;
cMPS - Két vonal összehasonlítása;
tengerek - keressen egy adott elem karakterláncát;
lODS - Akkumulátor töltése (AL vagy AH REGISTERS) a sorból;
sTO - rögzítőelem egy karakterlánc egy akkumulátorból (regiszterek ah vagy al).

Méltóság

· Az összeszerelő nyelv lehetővé teszi, hogy írja a leggyorsabb és legkisebb kompakt kódot, amely általában lehetséges a processzor számára.
· A működési sebesség - optimalizálásával számítási algoritmus és / vagy ésszerűbb hozzáférést RAM (például, ha az összes forrás adatok tárolása a processzor regiszterek, kizárhatja a felesleges hozzáférést OP), újraelosztása adatok táblázat számítási funkciók ;
· Kódfeltétel (beleértve a hatékony felhasználást is) köztes eredmények). A kódtérfogat csökkenése gyakran növeli a program végrehajtásának sebességét.
· A konkrét platform konkrét képességeinek maximális használatának biztosítása, amely lehetővé teszi, hogy hatékonyabb programokat hozzon létre, beleértve a kevesebb erőforrás-intenzíveket is.
· Az összeszerelő nyelven történő programozás közvetlen hozzáférést biztosít a berendezéshez, különösen az I / O portokhoz, processzorregiszterekhez stb. Számos operációs rendszerben, közvetlen kapcsolatfelvétel az alkalmazásprogramoktól a nyilvántartások regisztrálásáig perifériás berendezés Blokkolt a rendszer megbízhatósága és kivételek "Freezes".
· Assembly nyelven gyakran létrehozásához használt hardver és az operációs rendszer magoknak ideiglenes munka megállapodás fontos. perifériás eszközök tól től központi processzor.
· Az összeszerelő nyelvet a "BIOS firmware" létrehozására használják.
· Az összeszerelő nyelv segítségével gyakran létrehozzák a fordítók és a magas szintű tolmácsok gépfüggő alprogramjait, és a platformok kompatibilitását megvalósítják.
· A szétszerelési program segítségével megértheti a program működési algoritmusait a magas szintű nyelven való felsorolás hiányában, csak a gépi kódok tanulmányozásában, de a komplex nonprival programokban nagyon, nagyon nehézkes.

hátrányok
· Az összeszerelő nyelv gépi tájolásának ("alacsony" szintje) értelmében egy személy nehezebb olvasni és megérteni a programot a magas szintű programozási nyelvekhez képest; A program túl "kicsi" elemekből áll - gépparancsok, illetve a programozás és a hibakeresés bonyolult, a bonyolultság és a hibaelhárítás valószínűsége növekszik.
· A minőségi kód megszerzéséhez megnövekedett programozói képesítésre van szükség: az összeszerelő nyelv átlagos programozója által írt kód általában nem jobb, vagy akár rosszabb, mint az optimalizáló fordító által létrehozott kód, a magas szintű nyelven írt összehasonlítható programokhoz.
· A magas szintű program az új célplatform jellemzői automatikus optimalizálásával újraszámolható, a program az új platformon az új platformon az új platformon elvesztheti előnyét kézi átírási kód nélkül.
· Rendszerként kevesebb könyvtár áll rendelkezésre a modern ipari programozási nyelvekhez képest.
· A számítógépeken nincsenek hordozhatósága egy másik architektúra- és parancsrendszerrel.

Kompatibilitás
Az egyfajta összeszerelőre szánt programot nem lehet összeállítani egy másikra radikális változás nélkül vagy automatikus konverzió nélkül! De még az "Ők" típusú szerelvényei között is van egy tétel, dizátás és sok különbség: a kulcsszavak, A szabályok kialakítása a lista, a mellékelt könyvtárak és fejléc fájlokat, stb Ha csak a kompatibilitás nem kifejezetten ez a közvetítéshez szükséges a program ugyanaz, mint a szerelő, amelyre azt szánták. Ellenkező esetben készen áll a módosításokra (azaz az elfogadásra). A különbségeket gyakran a leginkább váratlan helyeken mutatják be. Egyes szerelvények megértik, hogy a "MOV EAX, X" ugyanaz, mint a "MOV EAX, [X]", néhány - nem. Megbotlik és hibát adnak ki. De semmi más! Sokkal rosszabb, ha a fordító csendben értelmezi ezt a designot, mint a "MOX EAX, Offset X", ami nem ugyanaz a dolog! Tehát a program átadásakor nagyon és nagyon óvatosnak kell lennie.

Az operációs rendszerek kompatibilitása. MS-DOS-orientált programok nélkül nemcsak nem szállítható, hanem intoleranciák is. Számukra jellemző közvetlen kölcsönhatás Az NT-ben csak a nukleáris szinten áll rendelkezésre, nem is beszélve arról, hogy a 16 bites kódot csak a DPMI-ről, majd a Truscy nélkül nem hívják fel.

Így, mielőtt egy összeszerelő programot sugározna, meg kell határozni, hogy melyik fordító és az operációs rendszer célja van! Az összeszerelő fragmensekkel, amelyeket a "natív" kontextusból fognak, még rosszabbak. Tegyük fel, néhány cikket, érdekes anti-loop vétel leírása és egy szerelő kódot kap, de hogyan kell beágyazni azt a programját - nem mondja. Egy ismerős helyzet, ugye? A közvetlen közvetítés nem lehetséges - a fordító vadul fissilis, de semmi sem mondja.

Lágy szerelvény

Az elkészített szöveg a speciális programok forrásadatait tartalmazza. Az összeállítás feladata, hogy a program szövegét a mikroprocesszor által végzett bináris parancsok formájára konvertálja. Ha szintaktikai hibákat észlel, akkor a kapott kódot nem lehet létrehozni. A végrehajtható fájl létrehozásának folyamata két szakaszban történik:

Asm -\u003e .obj -\u003e .exe / .dll / .com

Az első szakaszban (.asm -\u003e .OBJ) az összeszerelő fájlból összeállítással a kiterjesztés kiterjesztésű közbenső objektumkódfájljait kapjuk (további INC fájlok használhatók). A kiterjesztésű fájl az Optimalizált gépkódot tartalmazza, feltéve, hogy a szintaktikai és szemantikai hibák nem teljesültek. Ha hibákat észlel a forrásfájlban a programban az összeszerelő nyelven, akkor a programozó olyan hibák listáját adja meg, amelyekben a hibákat azokat a vonalszámmal határozza meg, amelyben észleltek. A programozó ciklikusan elvégzi a szerkesztési és összeállítási műveleteket, amíg az összes hiba megszűnik a forrásfájlban. Ebben a szakaszban már kész kész programot kaphat, de leggyakrabban hiányzik néhány alkatrész. Ha a fordító bármilyen okból (helytelenül regisztrálta az egy ilyen fájl elérési útját, vagy a fájl hiányzik) Nem talál egy INC fájlt, akkor figyelmeztetés kerül kiadásra, és az OBJ fájl beérkezik.

Összeszerelés, általában két fogadásban történik. Az első passzán, az Mnemonic parancsok, a heti számok és szimbólumok a megfelelő gépkódokban le vannak fordítva, kiszámolják, hogy a parancs elfoglalja a parancsot, a felhasználó által megadott nevek (konstansok, címkék, változók) típusát és numerikus értékét írta az asztalra. Ugyanabban a táblázatban van rögzítve, amelyből a címkék, a címkék címe, a szegmensek kezdete / végének címei, stb. Szubsztituáltak, az eljárások megkezdésének címe a második szakaszban van helyettesítve , a címkék nevét kicserélik.

A Közgyűlés eredményeként az úgynevezett "objektumfájlt" kap. További funkcióként az összeszerelő létrehozhat egy programlistát.

Általában az objektumkódfájlok beszerzéséhez a megfelelő összeszerelő programot (Microsoft ML.EXE és TASM.EXE programokat kell végrehajtania, jelezve: parancs sor Fájlnév programszövegével.

Ez a kihívás minimálisan szükséges. Kivéve a nevet szöveges fájlMeg kell adnia az összeszerelési lehetőségeket. További információt az összeszerelési program lehetőségéről a programok dokumentációjában kell keresniük.

Elrendezési program

Következő fokozat (.obj -\u003e .exe / dll / Com) nevezzük kötés vagy elrendezés szolgál a karakteres nevek által használt programozó valódi címeket.

Hasonlítsa össze a hexadecimális tartalmat OBJ és Exe fájlamit kapott. Az EXE fájlnak ugyanolyan szekvenciája van, mint az OBJ fájlban. De ez még mindig jelen van: az összeszerelt fájl, az összeszerelő verzió, a "saját" szegmens neve, és így tovább.

Ez az "SERVICE" információ, amelyet az esetekre szántak, amikor a végrehajtható fájlt szeretné összegyűjteni több. A fejlődés során nagy alkalmazások A forrásszöveg általában több modulból (a forrásszövegekkel rendelkező fájlok), mert kényelmetlen az összes szöveget egy fájlban tárolni - nehéz navigálni.

Minden modul külön fájlba kerül az objektumkóddal. Mindegyik fájl előírja a kód / adat / köteg szegmenseiket, amelyet azután össze kell kapcsolni. És a végrehajtható fájl csak egyre kell kapnunk - egyetlen kóddal / adat / köteg szegmenssel. Ez a kapcsolat, és nem rendelkezik a címkapcsolatok meghatározásával és egyesíti, ha szükséges, több szoftvermodul van. És ezt velünk végezzük.

Ezenkívül a gépkód hozzáadására van szükség a különböző szabványos funkciókat (például a bűn vagy az LN matematikai funkciókat). Az ilyen funkciókat a könyvtárakban (standard kiterjesztésű fájlok) tartalmazzák, amelyeket a fordítóval szállítanak, vagy önállóan hoztak létre. Ezért az előkészítési folyamat szükségszerűen magában foglalja az elrendezési szakaszot, ha az összes ismeretlen meghatározása az összeomlott változók vagy funkciók címét határozza meg.

Egyesítésének folyamata tárgymodult egy fájlba végzi egy speciális linker program vagy egy gyűjtő (Link.exe programot a Microsoft és Tlink.exe cég Borland), amely elvégzi a kötődését tárgymodult és gépi kód szabványos funkciók, megállapítás őket könyvtárakban, és működtethetővé válik, az alkalmazás egy adott platform végrehajtható kódja.

A végrehajtható kód egy teljes programot a COM, DLL vagy EXE kiterjesztés, amely lehet futtatni a számítógépen a telepített operációs rendszer, amelyben a program jött létre. A végrehajtható fájl nevét az első .OBJ fájl határozza meg. Az összekapcsoláshoz a parancssorba kell tárcsázni:

link prog1.oobj prog2.oobj vagy tlink prog1.obj prog2.obj prog2.obj

Az objektumfájl tartalmát egy linker elemzi. Meghatározza, hogy van-e program külső linkekEz az, hogy a Program Call parancs programja tartalmazza az objektummodul könyvtár egyikét (Link Library). A linker találja ezeket a linkeket az objektum fájl másolatát a szükséges eljárásokat a könyvtárak, kombinálja őket a tárgy fájlt, és létrehoz egy futtatható fájl (futtatható fájl). Mint további jellemzők A linker létrehozhat egy keresztkötésű fájlt, amely tartalmazza a fogadott futtatható fájl tervét.

Használt források
1. https://ru.wikipedia.org/
2. http://natalalia.appmat.ru/
3. http://www.codenet.ru/
4. http://wasm.ru/
5. Norton P., Sauke D. Összeszerelő nyelv az IBM PC számára. M.: Számítógép, 1992.

1. Mikor és ki találták a perforációs gépek számlálását? Milyen feladatokat megoldottak rájuk?

2. Mi az elektromechanikus relé? Mikor jöttek létre a relé számítástechnikai gépek? Milyen sebességgel rendelkeznek?
3. Hol és mikor épült az első számítógép? Hogy hívták?
4. Mi a John Von Neuman szerepe a számítógép létrehozásában?
5. Ki volt az első hazai számítógép tervezője?
6. Mi elemalap Létrehozott első generációs gépek? Mi volt a fő jellemzői?
7. Melyik elemi adatbázis létrehozta a második generációs gépeket? Milyen előnyei vannak az első generációs számítógéphez képest?
8. Mi az integrált áramkör? Mikor voltak az első számítógépek az integrált áramkörökön? Mit hívtak?
9. Melyek a számítógép alkalmazási területei a harmadik generációs gépek megjelenésével?
10. Mi a mikroprocesszor? Mikor és hol volt az első mikroprocesszor?
11. Mi az a mikroevm és személyi számítógép?
12. Milyen típusú PC a leggyakoribb a világon?
13. Mi a szuperszámítógép?
14. Mi a fürtözött PC rendszerek?
15. Mi az ötödik generációs számítógép jellemzője?

Nevezze meg az első számítástechnikai eszközt. Pack számológép aritmométer orosz pontszámok, amelyek a közepén terjednek előre

19. századi angol matematikus Charles Babbage?

A szoftver létrehozásának ötlete számláló géparitmetikai eszköz, vezérlőberendezés, valamint bemeneti és nyomtatókészülék

A teremtés ötlete mobiltelefon

A számítógép által kezelt robotok létrehozásának ötlete

Melyik év és hol volt az első számítógép az elektronikus lámpákon alapulva?

1945, USA

1944, Anglia

1946, Franciaország

Milyen alapon jöttek létre a harmadik generációs számítógépek?

Integrált rendszerek

félvezetők

elektronikus lámpák

superbound integrált áramkörök

Mi volt az első személyi számítógép neve?

Nevezze meg a számítógép központi eszközét.

processzor

Rendszer egysége

Tápegység

Alaplap

A processzor feldolgozza a bemutatott információkat:

BAN BEN tizedes rendszer jegyzet

Angolul

Oroszul

A motor nyelvén (bináris kódban)

A használt numerikus és szöveges információk megadása

Billentyűzet

A szkenner ...

A képek és a szöveges dokumentumok képeinek beviteléhez

Egy speciális fogantyú rajza

A kurzor mozgatása a monitor képernyőjén

Holografikus képek

10. Milyen típusú nyomtató tanácsos pénzügyi dokumentumokat használni a nyomtatáshoz?

Mátrix nyomtató

Sugárhajtómű

Lézeres nyomtató

Milyen típusú nyomtató ajánlatos az esszék nyomtatására?

Mátrix nyomtató

Sugárhajtómű

Lézeres nyomtató

Milyen típusú nyomtató ajánlatos fényképeket használni a nyomtatáshoz?

Mátrix nyomtató

Sugárhajtómű

Lézeres nyomtató

A számítógép egészségügyi és higiéniai követelményeinek be nem tartásával az emberi egészségre gyakorolt \u200b\u200bkáros hatás ...

Monitor egy elektronikus sugárzási csőre

Folyékony kristályok monitorozása

Plazma panelek

Amikor a számítógép ki van kapcsolva, az összes információ törlődik ...

Véletlen hozzáférési memória

Merevlemez

Lézeres lemez

Melyik számítógép tárolódik a számítógépben?

Külső memória;

pROCESSZOR;

Az optikai sávok kisebb vastagságúak és szorosabban vannak elhelyezve ...

Digitális video motor (DVD lemez)

Kompakt lemez (CD-lemez)

Beviteli eszközök belépnek ...

A kimeneti eszköz ...

Billentyűzet, egér, joystick, könnyű toll, szkenner, digitális kameraMikrofon

Hangoszlopok, monitor, nyomtató, fejhallgató

HDD, processzor, memóriamodulok, alaplaphajlékonylemez

A programot ...

Számítógépes program Lehet, hogy kezelheti a számítógép munkáját, ha ...

Ramban

Rugalmas lemezen

Merevlemezen

CD-lemezen

Az adatok ...

A számítógép által az adatfeldolgozás során végrehajtott parancsok sorrendje

A digitális formában bemutatott információk és a számítógépen feldolgozott információk

Adatok neve és tárolva a hosszú távú memóriában

A fájl ...

A számítógépre nyomtatott szöveg

A digitális formában bemutatott információk és a számítógépen feldolgozott információk

Program vagy adat, amelynek neve és hosszú távú memóriájában tárolódik

A rugalmas lemez gyors formázásával ...

Törölje a lemezkönyvtárat

Minden adat törlődik

Lemeztörlesztés történik

A lemez felületének ellenőrzése

A rugalmas lemez teljes formázásával ...

minden adat törlődik

a lemez teljes ellenőrzése történik.

törölje a lemezkönyvtárat

a lemez szisztémás lesz

Többszintű hierarchikus fájlrendszerben ...

A fájlokat a beágyazott mappák rendszerében tárolják.

A fájlokat olyan rendszerben tárolják, amely lineáris szekvencia

A számítástechnikai berendezések fejlesztésének története:

1. Nevezze meg az elsőt számítóeszköz.
1) abak
2) Számológép
3) aritmométer
4) Orosz pontszámok

2. Milyen ötletet terjesztettek elő a 19. század közepén Angol Mathematician Charles Babbage?
1) az ötlet létrehozásának egy szoftver vezérelt megszámlálható gép olyan aritmetikai eszköz, egy vezérlőegység, valamint egy bemeneti és nyomtató berendezés
2) a mobiltelefon létrehozásának ötlete
3) a számítógép által kezelt robotok létrehozásának ötlete
3. Adja meg az első programozó számítástechnikai gépeket.
1) HELL LAVLEY
2) Sergey Lebedev
3) Bill Gates
4) Sophia Kovalevskaya

4. Melyik évben és hol volt az első számítógép az elektronikus lámpákon?
1) 1945, USA
2) 1950, Szovjetunió
3) 1944, Anglia
4) 1946, Franciaország

5. Milyen alapon jött létre a harmadik generációs számítógép?
1) integrált áramkörök
2) félvezetők
3) Elektronikus lámpák
4) Super-nagy integrált áramkörök

6. Mi volt az első személyi számítógép?
1) Apple II
2) IBM PC
3) Dell.
4) Corvette
Számítógépes eszköz ......................... 15
1. Nevezze meg a számítógép központi eszközét.
1) processzor
2) Rendszerblokk
3) tápegység
4) Alaplap
2. Hogyan rögzíti és továbbítják a számítógép fizikai információit?
1) számok;
2) programok használata;
3) az elektromos jelek formájában jelenik meg.

3. A processzor feldolgozza a bemutatott információkat:
1) A tizedes számrendszerben
2) angolul
3) oroszul
4) A gépen (bináris kódban)
4. A használt numerikus és szöveges információk megadása
1) billentyűzet
2) egér
3) trekball
4) fogantyú
5. A legfontosabb jellemző A koordináta beviteli eszközök a felbontás, amely általában 500 DPI (Dot Per Inch - pont per hüvelyk (1 hüvelyk \u003d 2,54 cm)), amely eszköz ...
1) Az egér egy hüvelykre történő mozgatásakor az egérmutató 500 ponttal mozog
2) Az egér 500 ponttal történő mozgatásakor az egérmutató egy hüvelyket mozgat
6. A szkennert használják ...
1) A képek és szöveges dokumentumok megadása
2) A rajta egy speciális fogantyú
3) A kurzor mozgatása a monitor képernyőjén
4) holografikus képek megszerzése
Információs kimeneti eszközök ................. 21
1. Milyen típusú nyomtató helyénvaló pénzügyi dokumentumok használata a nyomtatáshoz?
1) mátrix nyomtató
2) tintasugaras nyomtató
3) lézernyomtató
2. Milyen típusú nyomtató ajánlatos a kivonatok kinyomtatására?
1) mátrix nyomtató
2) tintasugaras nyomtató
3) lézernyomtató

1. Milyen típusú nyomtató ajánlatos fényképeket használni a nyomtatáshoz?
1) mátrix nyomtató
2) tintasugaras nyomtató
3) lézernyomtató
2. A számítógép egészségügyi és higiéniai követelményeinek be nem tartása esetén az emberi egészségre gyakorolt \u200b\u200bkáros hatás ...
1) Monitor egy elektronikus sugárzási csőre
2) Folyékony kristályok monitorozása
4) Plazma panelek
3. Olyan eszköz, amely belépést és az információ olvasását biztosítja ...
1) Hajtás vagy meghajtó

4. Ha a számítógép ki van kapcsolva, az összes információ törlődik ...
4) RAM
5) merevlemez
6) Lézerlemez
7) Diéták
13. Melyik számítógépen tárolódik az információért?
1) külső memória;
2) monitor;
3) processzor;
2. Az optikai sávok kisebb vastagságúak és szorosabban vannak elhelyezve ...
1) Digitális video motor (DVD-lemez)
2) Kompakt lemez (CD-lemez)
3) hajlékonylemez
3. Melyik lemezinformációt tárolják a koncentrikus útvonalakon, amelyeken a mágnesezett és nem vitrátszakaszok alternatívak
1) egy hajlékonylemezen
2) egy kompakt lemezen
3) a DVD-lemezen

4. A bemeneti eszközökben ...

1) merevlemez, processzor, memória modulok, alaplap, floppy lemez
5. A kimeneti eszközben ...
1) billentyűzet, egér, joystick, könnyű toll, szkenner, digitális fényképezőgép, mikrofon
2) Hangoszlopok, monitor, nyomtató, fülhallgató
3) merevlemez, processzor, memória modulok, alaplap, floppy lemez
6. A programot ...

7. A számítógépes program kezelheti a számítógép munkáját, ha ...
1) a RAM-ban
2) Rugalmas lemezen
3) a merevlemezen
4) CD-lemezen
8. Az adatok ...
1) A számítógép által az adatfeldolgozási folyamat során végrehajtó parancssorozat
2) digitális formában bemutatott és feldolgozott információ a számítógépen
3) a hosszú távú memóriában tárolt adatok és tárolva
9. A fájl ...
1) A számítógépen nyomtatott szöveg
2) digitális formában bemutatott és feldolgozott információ a számítógépen
3) Program vagy adatok neve és tárolása hosszú távú memóriában

10. A rugalmas lemez gyors formázásával ...
1) Tisztítsa meg a lemezkönyvtárat.
2) Minden adat törlődik
3) DISK töredezettségmentesítés
4) Ellenőrizze


Kezdjük, megértjük a terminológiát.

Gépkód - Egy adott számítástechnikai gép (processzor) parancsok rendszere, amelyet közvetlenül a processzorhoz értelmeznek. A csapat, mint általában egy egész szám, amelyet a processzor nyilvántartásába írt. A processzor ezt a számot olvasja, és egy olyan műveletet hajt végre, amely megfelel ez a parancs. Népszerűen ezt a könyvben ismertetjük, hogyan lehet programozóvá válni.

Alacsony szintű programozási nyelv (Alacsony szintű programozási nyelv) egy programozási nyelv, amennyire csak lehetséges, a gépkódok programozásához. A gépkódokkal ellentétben az alacsony szintű nyelven minden parancs megfelel a nem számnak, de a parancs rövidített neve (Mnemonic). Például az Add parancs a szó hozzáadása redukciója. Ezért az alacsony szintű nyelv használata jelentősen egyszerűsíti az írási és olvasási programokat (a gépkódok programozásához képest). Az alacsony szintű nyelv egy adott processzorhoz van kötve. Például, ha egy programot írt egy alacsony szintű nyelven a PIC processzor számára, akkor biztos lehet benne, hogy nem fog működni az AVR processzorral.

Magas szintű programozási nyelv - Ez egy programozási nyelv, amennyire csak lehetséges az emberi nyelv (általában angol, de vannak programozási nyelvek a nemzeti nyelveken, például az 1c nyelv oroszul alapul. A magas szintű nyelv gyakorlatilag nem kötődik egy adott processzorhoz vagy az operációs rendszerhez (ha meghatározott irányelveket nem használnak).

Összeszerelő nyelv - Ez egy alacsony szintű programozási nyelv, amelyen írja a programjait. Minden processzor esetében van saját összeszerelő nyelv.

Szerelő - Ez egy különleges program, amely konvertálja (lefordítja) a forrásszövegek a program írt assembly nyelven a futtatható fájl (a EXE vagy COM kiterjesztésű). Ahhoz, hogy pontos legyen, akkor további programok szükségesek egy végrehajtható fájl létrehozásához, és nem csak egy összeszerelővel. De később ...

A legtöbb esetben az összeszerelő azt mondja, és "összeszerelő nyelvet". Most már tudod, hogy ezek különböző dolgok, és így nem igazán helyes. Bár minden programozó meg fogja érteni.

FONTOS!
A magas szintű nyelvekkel ellentétben, mint például a Pascal, a Beysik stb., Minden egyes összeszerelési nyelven van. Ezt a szabályt radikálisan megkülönbözteti az összeszerelő nyelv magas szintű nyelvekről. A legmagasabb szintű nyelven írt program (vagy egyszerűen "források" (vagy egyszerűen "források") forrásszövegei, a legtöbb esetben különböző kompilezőgépek készíthetik a különböző feldolgozók és különböző operációs rendszerek számára. Az összeszerelő források, hogy ezt sokkal nehezebbé tegyék. Természetesen ez a különbség szinte nem kézzelfogható a különböző összeszerelő számára, amely ugyanazon a feldolgozók számára készült. De az ügy ténye az, hogy minden egyes processzor esetében van saját összeszerelő és összeszerelő nyelve. Ebben az értelemben sokkal könnyebb programozni magas szintű nyelveken. Mindazonáltal az összes örömtételt kell fizetni. A magas szintű nyelvek esetében ilyen dolgokkal találkozhatunk nagyobb végrehajtható fájl, legrosszabb sebesség stb.


Ebben a könyvben csak az Intel processzorokkal (vagy kompatibilis) számítógépes programozásról beszélünk. A gyakorlatban ellenőrizze a könyvben megadott példákat, szükség lesz a következő programokra (vagy legalábbis néhányra):

  1. . Jó programkülönösen a kezdőknek. Tartalmazza a forrásszerkesztőt és más hasznos dolgokat. A Windows rendszerben működik, bár a programok DOS alatt vannak írva. Sajnos a program pénzbe kerül (de megéri))). A részleteket lásd: webhely http://www.emu8086.com.
  2. - Turbo összeszerelő Borlandból. Programokat hozhat létre mind a DOS, mind a Windows számára. Érdemes a pénzt, és jelenleg már nem támogatott (és Borland nem létezik). Általában a dolog jó.
  3. - Szerelje fel a Microsoft-t (makró összeszerelő, és nem a Microsoft összeszerelő, mint sok unitiated) gondoljon. Talán a legnépszerűbb összeszerelő az Intel processzorok számára. Eddig támogatott. Feltételesen ingyenes program. Vagyis, ha külön megvásárolod, pénzt fog fizetni. De elérhető ingyenes MSDN előfizetők, és belép a Visual Studio szoftvercsomagból a Microsoftból.
  4. - Szerelje fel a Watcom-tól. Mint minden más, előnyei és hátrányai.
  5. - Szerény lehetősége van, de van egy nagy plusz - belép a szabványos Windows-készletbe. Keresse meg a Windows \\ Command vagy Windows \\ System32 mappában. Ha nem találja meg, akkor más Windows címtár mappákban.
  6. Azt is kívánatos, hogy bármilyen. A disszion filmkezelő, mint például a Wolves Commander (VC) vagy a Norton Commander (NC), nem akadályozza meg. Segítségükkel láthatja a hexadecimális fájlkódokat is, de nem szerkeszthető. A szabad hexadecimális szerkesztők az interneten nagyon sokat vannak. Itt van egyikük: McAfee FileSight v2.1. Ugyanez a szerkesztő használható a programok forrásszövegével való együttműködésre. Mindazonáltal tetszik, hogy ezt tegye a következő szerkesztővel:
  7. Szöveg szerkesztő. Mi érdekli a programok forrásszövegeit írásban. Javasolhatom szabad szerkesztő PSPAD, amely számos programozási nyelvt támogat, beleértve az összeszerelő nyelvet is.
A könyvben bemutatott összes programot (és program példái) tesztelik a teljesítményre. És ez a programok, amelyek a könyvben megadott programok példáinak megvalósítására szolgálnak.

És mégis - a forráskód írva, például az EMU8086 esetében, kissé eltér a kódot, például a szöget. Ezeket a különbségeket meg kell adni.

A könyvben bemutatott programok többsége íródott. Először is, mert ez az összeszerelő a legnépszerűbb és még mindig támogatott. Másodszor, mert az MSDN-vel és a Microsoft vizuális stúdió szoftvercsomaggal van ellátva. Nos, harmadik, mert boldog tulajdonos vagyok a MASM licencelt példányának.

Ha már van olyan szerelő, hogy nem szerepel a listán felsorolt, akkor önállóan kezelni a szintaxis és olvassa el a használati útmutatót, hogy megtanulják, hogyan kell dolgozni vele. De az ebben a könyvben megadott általános ajánlások minden (Nos, vagy szinte minden) összeszerelő számára tisztességesek lesznek.

Annak érdekében, hogy a gép a hardver szintjén lévő személy csapatainak elvégzéséhez szükséges, meg kell határozni a "Nolikov és egységek" nyelvén egy bizonyos cselekvési sorozatot. Az asszisztens ebben az üzletben lesz egy összeszerelő. Ez egy olyan segédprogram, amely a parancsok nyelvének átadásával működik. A program írása azonban nagyon időigényes és összetett folyamat. Ez a nyelv nem célja tüdő és egyszerű cselekvések létrehozása. Jelenleg minden programozási nyelv (Assembler működik jól) lehetővé teszi, hogy olyan speciális feladatokat írjon, amelyek erősen befolyásolják a hardver működését. A fő cél a mikrokomand és a kis kódok létrehozása. Ez a nyelv több lehetőséget kínál, mint például Pascal vagy C.

Az összeszerelő nyelvek rövid leírása

Minden programozási nyelv szintről van osztva: alacsony és magas. Az összeszerelő "családjának" szintaktikai rendszerének bármelyike \u200b\u200bkülönbözik abban, hogy egyszer egyesíti a leggyakoribb és modern nyelvek előnyeit. Másokkal, rokonaik és az a tény, hogy a számítógépes rendszer teljesen használható.

A fordító megkülönböztető jellemzője az egyszerűség a használathoz. Ez különbözik azoktól, amelyek csak magas szinten dolgoznak. Ha figyelembe veszi az ilyen programozási nyelvet, az összeszerelő kétszer olyan gyors és jobb funkciót mutat. Annak érdekében, hogy egy könnyű programot írjon benne, túl sok időre nincs szükség.

Röviden a nyelv szerkezetéről

Ha beszélünk általában a munka és a szerkezet működését a nyelvet, akkor lehet mondani, az biztos, hogy a parancsok teljesen megfelelnek a processzor csapatok. Ez az, hogy az összeszerelő mnapokodes, a legkényelmesebb személy rögzíthető.

Más programozási nyelvekkel ellentétben az összeszerelő bizonyos címkéket használ a memóriacellák helyett a címek helyett. Az úgynevezett irányelvekbe lefordítják őket. Ezek olyan relatív címek, amelyek nem befolyásolják a processzor működését (nem fordítva a gép nyelvére), és szükségesek a programozási környezet felismeréséhez.

A processzor minden egyes sorához ez a helyzet a helyes lesz, bármilyen folyamat, beleértve a lefordított

Az összeszerelő nyelv több szintaxissal rendelkezik, amelyeket a cikkben tárgyalunk.

A nyelv plusz

Az összeszerelő nyelv legfontosabb és kényelmes adaptációja lesz, hogy bármilyen programot írjon egy olyan processzorra, amely nagyon kompakt lesz. Ha a kód hatalmas lesz, akkor néhány folyamat átirányítja ram. Ugyanakkor mindent gyorsan és kudarcok nélkül tesznek, kivéve, ha természetesen ellenőrzik a minősített programozót.

Illesztőprogramok, operációs rendszerek, BIOS, fordítók, tolmácsok stb. - Ez az összes program az összeszerelő nyelven.

Ha egy szétszerelést használ, amely egy fordítást ír elő az egyikben, akkor könnyen megérthető, hogy egy vagy egy másik rendszer feladat működik, még akkor is, ha nincs magyarázat. Ez azonban csak akkor lehetséges, ha a programok fények. Sajnos, a noncriviális kódokban, meglehetősen nehéz megérteni.

Hátrányok

Sajnos, a kezdő programozók (és gyakran szakemberek) nehezen szétszerelni a nyelvet. Az összeszerelő megköveteli részletes leírás A szükséges csapat. Ennek köszönhetően, hogy a gépi parancsokat, a hibás akciók valószínűségét és a végrehajtás összetettségét növeli.

Annak érdekében, hogy még a legtöbbet írjon egyszerű programA programozónak minősíteni kell, és a tudás szintje meglehetősen magas. Az átlagos szakember sajnos gyakran rossz kódokat ír.

Ha a program létrehozásának platformja frissül, akkor minden parancsot kézzel kell másolni - ez megköveteli a nyelvet. Az összeszerelő nem támogatja a folyamatok működésének automatikus szabályozásának funkcióját, és cserélje ki az elemeket.

Nyelvi csapatok

Amint azt már említettük, minden processzornak saját parancssori készlete van. A legegyszerűbb elemek, amelyeket bármely típusban ismernek fel a következő kódok:


Az irányelvek használata

A mikrokontrollerek programozása a nyelvben (Assembler Ez lehetővé teszi, hogy tökéletesen másolja a működését) a legalacsonyabb szinten a legtöbb esetben sikeresen végződik. A legjobb, ha a feldolgozók korlátozott erőforrással rendelkeznek. 32 bites felszerelés esetén ez a nyelv Tökéletesen illeszkedik. Gyakran a kódokban láthatja az irányelveket. Mi ez? És mit használnak?

Kezdjük, ki kell hangsúlyozni azt a tényt, hogy az irányelvek nem kerülnek át a gép nyelvére. Szabályozzák a fordító teljesítményét. Ellentétben a csapatokkal, ezek a paraméterek, miután különböző funkciókKülönböző a különböző processzoroknak köszönhetően, de egy másik fordító rovására. A fő irányelvek közül a következőképpen lehet elosztani:


A név eredete

A nyelv neve miatt - "Assembler"? A fordítóról és a fordítóról beszélünk, amely adat titkosítást is eredményez. Az angol összeszerelőtől nem csak egy kollektorot jelent. A programot manuálisan nem gyűjtötték össze, automatikus szerkezetet alkalmaztunk. Ráadásul jelenleg a felhasználók és szakemberek törölték a különbséget a feltételek között. Gyakran az összeszerelő hívja a programozási nyelveket, bár ez csak egy segédprogram.

Az általánosan elfogadott összegyűjtési névnek köszönhetően néhány téves megoldás van, hogy van egy alacsony szintű nyelv (vagy szabványos normák). Annak érdekében, hogy a programozó megértse, hogy milyen szerkezet van, meg kell határozni, hogy melyik platformot használják egy vagy más összeszerelő nyelv.

Makrofok

Összeszerelő nyelvek, amelyek viszonylag a közelmúltban létrehozhatók macrosses. Megkönnyítik a program helyesírását és végrehajtását. A jelenlétüknek köszönhetően a fordító gyorsabban hajtja végre az írásbeli kódot. Ha feltételes választást hoz létre, akkor hatalmas csapatot írhat, és könnyebb használni a makrókat. Gyorsan átkapcsolnak az akciók között, ha a feltétel vagy a nem teljesítés teljesül.

Makró-nyelvű irányelvek használata esetén a programozó megkapja az összeszerelő makrókat. Néha széles körben használható, és néha funkcionális jellemzői egy parancsra csökkentek. Jelenlétük a kódban megkönnyíti a munkát vele, megérthetőbbé és vizuális. Ugyanakkor figyelni kell arra, hogy figyelmes legyen - egyes esetekben makrók éppen ellenkezőleg, rontják a helyzetet.