U članku će se raspravljati o osnovama asemblerskog jezika u odnosu na arhitekturu win32. To je simboličan zapis strojnih kodova. U bilo kojem elektroničkom računalu najniža razina je hardver. Ovdje se upravljanje procesima odvija s uputama ili uputama na strojnom jeziku. Upravo na tom području asembler je namijenjen za rad.
Pisanje programa u asembleru je izuzetno težak i skup proces. Da biste stvorili učinkovit algoritam, potrebno vam je duboko razumijevanje rada računala, poznavanje detalja naredbi, kao i povećana pažnja i točnost. Učinkovitost je kritični parametar za programiranje u asembleru.
Glavna prednost jezika asemblera je u tome što vam omogućuje stvaranje kratkih i brzih programa. Stoga se u pravilu koristi za rješavanje specifičnih problema. Potreban vam je kod koji učinkovito radi s hardverskim komponentama, ili vam je potreban program koji zahtijeva memoriju ili vrijeme izvođenja.
Registri u jeziku asemblera nazivaju se memorijske ćelije koje se nalaze izravno na čipu s ALU (procesorom). Značajka ove vrste memorije je brzina pristupa njemu, koja je mnogo brža od RAM-a računala. Također se naziva ultrabrzi RAM (PopS ili SRAM).
Postoje sljedeće vrste registara:
Postoji 8 registara opće namjene, svaki po 32 bita.
EAX, ECX, EDX, EBX registri su dostupni u 32-bitnom, 16-bitnom, AX, BX, CX, DX i 8-bitnom AH i AL, BH i BL, itd.
Slovo "E" u nazivima registara znači Prošireno (prošireno). Sami nazivi odnose se na njihova imena na engleskom jeziku:
Specijalizacija RON asemblerski jezik je uvjetan. Mogu se koristiti u bilo kojoj operaciji. Međutim, neke naredbe mogu koristiti samo određene registre. Na primjer, naredbe petlje koriste ESX za pohranu vrijednosti brojača.
Registar zastava. To podrazumijeva bajt, koji može uzeti vrijednosti 0 i 1. Kombinacija svih zastava (njih oko 30) pokazuje stanje procesora. Primjeri zastavica: Carry Flag (CF) - Oznaka nošenja, zastava preljeva (OF) - preljev, ugniježđena zastava (NT) - zastavica gniježđenja zadataka i mnogi drugi. Zastave su podijeljene u 3 skupine: status, upravljanje i sustav.
Indeks naredbi (EIP - pokazivač uputa). Ovaj registar sadrži adresu instrukcije, koja se mora izvršiti sljedeća, osim ako nije drugačije navedeno.
Segmentni registri (CS, DS, SS, ES, FS, GS). Njihova prisutnost u asembleru diktirana je posebnom kontrolom RAM-a kako bi se povećala njegova upotreba u programima. Zahvaljujući njima, bilo je moguće upravljati memorijom do 4 GB. U arhitekturi Win32 nema potrebe za segmentima, ali imena registara su sačuvana i korištena različito.
Ovo je memorijsko područje dodijeljeno za pokrenute procedure. Osobitost stack-a je da su najnoviji podaci koji su mu napisani dostupni za čitanje. Drugim riječima: prvi unosi u stog se vraćaju posljednji. Taj proces možete zamisliti kao toranj skica. Da biste dobili ispitivač (dno kule u podnožju tornja ili bilo koje u sredini), prvo morate ukloniti sve što leže na vrhu. I, u skladu s tim, posljednji komad stavljen na toranj, prvi se uklanja prilikom raščlanjivanja tornja. Ovo načelo organiziranja memorije i rada s njom diktira njezino gospodarstvo. Stog se konstantno briše i svaki put kad ga koristi jedna procedura.
Identifikator u asembleru programskog jezika ima isto značenje kao u bilo kojem drugom. Dopuštena su latinična slova, brojevi i simboli "_", ".", "?", "@", "$". U tom slučaju, velika i mala slova su ekvivalentna, a točka može biti samo prvi znak identifikatora.
Cjelokupni brojevi u asembleru mogu se specificirati u referentnim sustavima s bazama 2, 8, 10 i 16. Svaki drugi unos brojeva asembler će smatrati kao identifikator.
Dopušteno je koristiti i apostrofe i citate u pisanom obliku znakovnih podataka. Ako trebate odrediti jednu od njih u nizu znakova, pravila su sljedeća:
Za označavanje komentara u jeziku asemblera, koristi se simbol sa zarezom - ";". Dopušteno je koristiti komentare i na početku redaka i nakon naredbe. Komentar završava s novim retkom.
Direktiva ekvivalencije se koristi na sličan način kao i drugi konstantni izrazi. Ekvivalencija je naznačena kako slijedi:
EQU
Tako je u programu sve pojave
Jezici na visokoj razini (C ++, Pascal) su upisani. To jest, koriste podatke koji imaju određeni tip, postoje funkcije za njihovu obradu, itd. U asembleru programskog jezika ne postoji takva stvar. Postoji samo 5 direktiva za definiranje podataka:
Slovo D znači Define.
Bilo koja direktiva se može koristiti za deklariranje bilo kojih podataka i polja. Međutim, za nizove se preporučuje DB.
sintaksa:
DQ [, ]
DQ [, ]
DQ [, ]
Kao operand dopušteno je koristiti brojeve, simbole i upitnik - “?”, Označavajući varijablu bez inicijalizacije. Razmotrite primjere:
real1 DD 12.34char db 'c'ar2 db '123456',0 ; массив из 7 байтnum1 db 11001001b ; двоичное числоnum2 dw 7777o ; восьмеричное числоnum3 dd -890d ; десятичное числоnum4 dd 0beah ; шестнадцатеричное числоvar1 dd ? ; переменная без начального значенияar3 dd 50 dup (0) ; массив из 50 инициализированных эл-товar4 dq 5 dup (0, 1, 1.25) ; массив из 15 эл-тов, инициализированный повторами 0, 1 и 1.25
Sintaksa naredbi za sklapanje ili upute za sastavljanje je kako slijedi:
Oznaka (oznaka :) mora završiti dvotočkom i može se postaviti na zasebnu liniju. Oznake se koriste za upućivanje na naredbe unutar programa.
Upute upućuju na radnje koje treba izvršiti. U asembleru su operacije predstavljene u obliku slovnih kratica kako bi se olakšalo razumijevanje. Upute se također mogu nazvati mnemotehnikom.
U ulozi operandova naredbe mogu biti:
Adresa se može prenijeti na nekoliko načina:
U asembleru, adresa se prenosi kroz uglate zagrade. Budući da je varijabla i adresa, može se koristiti s ili bez uglatih zagrada.
Osim toga, u asembleru postoje skraćenice: r za registre, m za memoriju i i za operand. Ove kratice koriste se s brojevima 8, 16 i 32 za označavanje veličine operanda: r8, m16, i32, itd.
add i8/i16/i32, m8/m16/m32 ;суммирование операнда с ячейкой памяти
Ova naredba je glavna među naredbama asemblera. Omogućuje vam upisivanje u registar vrijednosti drugog registra, memorijske ćelije ili konstante. Također zapisuje vrijednost registra ili konstante u memorijsku ćeliju. Sintaksa naredbe:
MOV ,
MOV ,
Postoje druge naredbe u procesoru za provedbu prijenosa. Na primjer, XCHG je naredba za razmjenu operanada vrijednostima. Ali sa stajališta programera, svi se provode kroz osnovnu MOV naredbu. Razmotrite primjere:
MOV i, 0 ; Записать в i значение 0MOV ECX, EBX ; Пересылка значения EBX в ECX
U obliku operanda može djelovati kao registar i memorijska stanica. Međutim, ako se sadržaj dvaju registara može preurediti, tada ne postoje dvije memorijske ćelije. Treba paziti da su operandi iste veličine. Također imajte na umu da MOV naredba ne mijenja vrijednost zastavica.
Daljnje teorijsko proučavanje asemblera može biti teško, pa biste trebali razmisliti o alatima koji se koriste za razvoj programa s njim. Ovdje ćete vidjeti samo kratki popis popularnih alata:
Postoji mnogo alata. U ovom slučaju, trebate posebnu napomenu da ne postoji jedinstvena norma za sintaksu asemblera. Postoje 2 najprimjenjivija: AT & T sintaksa, usmjerena na ne-Intel proizvodne procesore, i, sukladno tome, Intelovu sintaksu.
Unatoč prividnoj složenosti, asembler je jednostavan programski jezik, koji je lako razumljiv. Dakle, možete sigurno koristiti obrazovne literature o sličnosti "asembler za lutke" i naučiti ovaj prekrasan jezik.