Introducere în limbaj de asamblare, asamblare, articole, programare - programare C, Delfi, C #

Ce este Assembler

Assembler - limbaj de programare de nivel scăzut. Fiecare procesor are propriul limbaj de asamblare. Programare în asamblare, va lucra direct cu hardware-ul computerului. Codul sursă în limbaj de asamblare este format din instrucțiuni (mnemotehnici), că, după compilarea este convertit într-un procesor de comandă coduri.

Dezvoltarea de programe în limbaj de asamblare - un lucru foarte dificil. În schimb pentru timpul petrecut pe care primiți un program eficient. Programele scrise în limbaj de asamblare, atunci când importantă în fiecare ciclu de ceas. Assembler da comenzi specifice procesorului și nici un exces de gunoi. Și acest lucru este realizat prin performanța de mare viteză a programului.

Pentru a utiliza în mod corect de asamblare trebuie să cunoască modelul de programare a sistemului de microprocesor. Din punct de vedere al sistemului de programator microprocesor este format din:

  1. microprocesor
  2. memorie
  3. I / O dispozitive.

Modelul de programare este bine descrisă în literatură [1].

sintaxa Assembler

Total de linii de cod în format limbaj de asamblare

etichete de câmp. Eticheta poate consta din caractere și caractere de subliniere. Etichetele sunt utilizate în operațiunile de salt condiționat și necondiționat.

câmp operator. Acest câmp conține comenzile mnemonice. De exemplu mnemonic mov

câmp operand. Operanzi poate fi prezent numai în cazul în care operatorul este prezent (operatorul câmp). Operanzi nu poate fi, și pot exista mai multe. Operanzii pot fi datele pe care trebuie să efectueze o acțiune (înainte, pliat, etc).

Program de limbă Prima Adunare

Acest articol va folosi de asamblare pentru i80x86 procesor și au utilizat următoarele aplicații software:

Pentru a fi specific, TASM 2.0.

Prin tradiție, prima noastră ieșire program va șirul de caractere „Hello world!“ pe ecran.

După cum puteți vedea, programul este împărțit în segmente: segmentul de date, un segment de cod, și există un segment de stivă.

Luați în considerare totul în ordine.

Directiva stabilește modelul de memorie .model mici. model mic - un segment de cod pentru 1, 1 pentru segmentul de date și stiva adică date și stivă se află în același segment. Există alte modele de memorie, cum ar fi: mic, mediu, compact. În funcție de segmentele de memorie modelul selectat programul se pot suprapune, sau poate avea segmente separate în memorie.

Directiva .stack 100h stabilește mărimea stack-ului. Teancul trebuie să salveze anumite informații cu restaurarea ulterioară. În special, se utilizează stiva de întrerupere. În acest caz, conținutul registrului Flags steaguri înregistrare CS, și registrele IP stocate în stivă. Urmează punerea în aplicare a programului întrerupe, iar apoi există o restaurare a valorilor acestor registre.

O descriere mai detaliată merge dincolo de un simplu articol.

Directiva .data definește începutul segmentului de date a programului. Segmentul de date definit „variabile“, care este, există o redundanță de memorie în conformitate cu datele relevante. Dupa ce am vorbit .data linie
HelloMsg DB "Hello World!", 13,10, "$"

Directiva .Cod definește începutul segmentului de cod (CS - Cod segment) de program. Apoi urmează linia de program care conține mnemonice de instrucțiuni.

O să-ți spun despre comanda mov.

mov <приёмник>, <источник>

comanda mov - comanda înainte. Acesta trimite conținutul sursei de la receptor. Transporturile pot fi înregistrați-to-registru, înregistrați-la-memorie, memorie-la-registru, dar de transfer de memorie-memorie care nu este totul trece prin registrele CPU.

și apoi e-mail conținutul registrului AX într-un DS de registru.

mov ah, 09h
mov dx, ofset HelloMsg
int 21h

Aici suntem în AH numerele de înregistrare registru 09h - întrerupere funcția 21, care imprimă linia de pe ecran.

Probabil că aveți o întrebare: De ce scrie numărul funcției 09h în AH registru. Și de ce este abaterea de la linia de scris în registru DX?
Răspunsul este simplu: pentru fiecare funcție identificat registre specifice care conțin intrare pentru această funcție. A se vedea, care au nevoie de registre funcții specifice pe care le poate HELP'e.

mov ax, 4C00h
int 21h

mov ax, 4C00h - e-mail numărul funcției în AX registru. Funcția 4C00h - ieșiți din program.

int 21h - efectuarea de întrerupere (ieșirea reală)

end - sfârșitul programului.

După compilatorul sfârșitul directivei ignoră totul, astfel încât să poată scrie tot ce vrei :)

Dacă ați citit până la sfârșit, ești un erou!

Bibliografie recomandată

articole similare