Cuprins
- Introducere 3
- Capitolul I Notiuni de baza ale limbajului de asamblare 4-8
- Capitolul II Intructiunile logice NOT,AND, OR, XOR şi TEST 9-12
- Capitolul III Implemantarea instructiunilor logice intr-o aplicatie Visual C Sharp 13-20
- ANEXE (Cod sursă program, scheme, grafice). . . . . 21-25
- BIBLIOGRAFIE 26
Extras din proiect
Introducere
Limbajul de asamblare : avantaje si dezavantaje in folosirea lui
Desi este unul dintre cele mai vechi limbaje de programare, limbajul de asamblare este incorporat si in cele mai noi compilatoare cum ar fi Visual C++ si Delphi. Codul de asamblare este foarte apropiat de codul executabil al programelor, asamblorul avand rolul de a codifica instructiunile din limbaj de asamblare in cod masina.
In prezent, limbajul de asamblare este din ce in ce mai putin folosit in scrierea programelor, deoarece compilatoarele de ultima generatie au functiile cele mai folosite de programatori deja scrise si optimizate in limbaj de asamblare (gen memmove, memset / fillchar, etc.) incluse in unit-uri si biblioteci. Bineinteles, daca se doreste atingerea unor timpi de executie foarte mici, folosirea limbajului de asamblare este preferabila (cand avem algoritmul de complexitate optima).
Avantaje ale limbajului de asamblare
• Viteza foarte mare de executie a programelor (unele programe scrise si optimizate in asamblare au viteza de executie pana la 5-10 de ori mai mare decat cele scrise in C sau Pascal);
• Marimea codului executabil este foarte mica;
• Ajuta utilizatorul sa inteleaga mai bine cum functioneaza microprocesorul si sa scrie programe eficiente si in High Level Languages.
Dezavantaje ale limbajului de asamblare
• nu este portabil; un program scris pentru calculatoare IBM PC nu va rula pe un Apple Macintosh (difera unele instructiuni);
• un program in asamblare este mai greu de scris si ia mai mult timp decat un program scris in Pascal sau C;
• un program scris in asamblare este mai greu de depanat;
Majoritatea compilatoarelor din prezent permit programatorului sa scrie anumite parti de cod sau subprograme in asamblare, astfel incat programatorul sa poata scrie in asamblare doar partea din program care se executa de cele mai multe ori, programul ruland astfel mult mai rapid. Sunt si compilatoare dedicate exclusiv limbajului de asamblare, cum ar fi TASM - Turbo Assembler (il gasiti in directorul BP/Bin), MASM - Microsoft Assembler, etc.
Capitol 1
Notiuni de baza ale limbajului de asamblare
Registrii
Limbajul de asamblare este foarte apropiat de codul executabil, deci pentru ca programatorul sa fie capabil sa scrie codul in asamblare trebuie sa cunoasca modul in care functioneaza microprocesorul si modul in care acesta executa instructiunile.
Toate operatiile aritmetice/logice/acces la memorie se fac prin intermediul registrilor. Registrii microprocesorului sunt asemanatori variabilelor (pot fi initializati cu anumite valori, se pot efectua operatii asupra lor, pot fi accesati (cititi/modificati)).
Registrii microprocesorului sunt clasificati in mai multe categorii :
• registri de uz general : eax, ebx, ecx, edx si subregistrii lor;
• registri segment : cs (code segment), ds (data segment), es (extra segment), ss (stack segment) - sunt folositi pentru adresarea memoriei in cazul modelului de memorie segmentat
• registrii index : esi, edi (source index, destination index);
• registri speciali : ebp, esp, ip;
Registrii de uz general sunt folositi in executia operatiilor aritmetice si logice. Registrii de segment si cei index sunt folositi in adresarea memoriei, iar cei speciali sunt folositi de microprocesor si S.O. pentru rularea programelor.
Registrii de uz general
Acestia sunt :
• eax - numit si "accumulator" - acesta este cel mai folosit in executarea operatiilor aritmetice (adunare, scadere, inmultire, impartire);
• ebx - numit si "base" - acesta registru este folosit pentru adresarea indirecta a memoriei;
• ecx - numit si "count" - acest registru este folosit mai ales in cadrul "buclelor" (in instructiunile repetitive : for/ while do/ do while/ repeat until);
• edx - numit si "data" - retine anumite variabile, si este folosit impreuna cu eax in executarea operatiei "div", impartire intreaga (avand rolul de a retine restul impartirii).
Dupa cum ati observat, fiecare registru general are o functie specifica, insa oricare din ei pot fi folositi si la operatii aritmetice/logice, adresare memorie sau ca si variabile.
Registrii precedati de prefixul "e" sunt pe 32 de biti, deci pot fi tratati ca si variabile unsigned long/signed long (doubleword). Acestia pot fi folositi si ca registri pe 16 biti (word) sau pe 8 biti (byte) prin intermediul "subregistrilor" : ax, bx, cx, dx (reprezinta word-ul nesemnificativ = cel din dreapta)., ah, bh, ch, dh (byte-ul cel mai semnificativ al ax, bx, cx, dx), al, bl, cl, dl(registrii pe 8 biti).
Preview document
Conținut arhivă zip
- WindowsFormsApplication2
- WindowsFormsApplication2
- bin
- Debug
- WindowsFormsApplication1.vshost.exe
- WindowsFormsApplication1.vshost.exe.manifest
- WindowsFormsApplication2.exe
- WindowsFormsApplication2.pdb
- WindowsFormsApplication2.vshost.exe
- WindowsFormsApplication2.vshost.exe.manifest
- obj
- x86
- Debug
- DesignTimeResolveAssemblyReferences.cache
- DesignTimeResolveAssemblyReferencesInput.cache
- GenerateResource.read.1.tlog
- GenerateResource.write.1.tlog
- ResolveAssemblyReference.cache
- WindowsFormsApplication1.Form1.resources
- WindowsFormsApplication1.Properties.Resources.resources
- WindowsFormsApplication2.csproj.FileListAbsolute.txt
- WindowsFormsApplication2.exe
- WindowsFormsApplication2.pdb
- Properties
- AssemblyInfo.cs
- Resources.Designer.cs
- Resources.resx
- Settings.Designer.cs
- Settings.settings
- Form1.cs
- Form1.Designer.cs
- Form1.resx
- Program.cs
- WindowsFormsApplication2.csproj
- WindowsFormsApplication2.csproj.user
- WindowsFormsApplication2.sln
- WindowsFormsApplication2.suo
- Arhitectura Calculatoarelor - Instructiuni Logice.docx
- WindowsFormsApplication2.exe