Asembler - Google

Asembler

Z Wikipedii

Skocz do: nawigacji, szukaj

Asembler - pojęcie związane z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim pojęcia tego używa się zarówno dla niskopoziomowych języków programowania bazujących na bezpośrednich operacjach procesora (zwanych czasami językami asemblerów - ang. assembly languages), jak i dla programów tworzących kod maszynowy na podstawie kodu źródłowego w tym języku. W terminologii komponentowej asembler to podmiot dokonujący asemblacji.

Spis treści

[edytuj] Asembler jako język programowania

Asemblery lub języki asemblerów to w informatyce rodzina języków programowania niskiego poziomu, w których zasadniczo jedno polecenie odpowiada jednemu rozkazowi procesora. Są to języki powstałe na bazie języka maszynowego, poprzez zastąpienie liczb odpowiadających fragmentom rozkazów kodu maszynowego ich mnemonikami. Dzięki zamianie liczb na tzw. mnemoniki, możliwe jest tworzenie programów, których kod źródłowy może być zrozumiały dla człowieka (w małym stopniu), a jednocześnie bezpośrednio tłumaczony na kod maszynowy procesora, co pozwala zapewnić duży stopień kontroli programisty nad zachowaniem procesora.

Pierwszym asemblerem był skonstruowany przez Konrada Zuse układ elektromechaniczny przygotowania taśmy perforowanej z programem dla maszyny Z4 (moduł Planfertigungsteil). Pozwalał na wprowadzanie i odczyt rozkazów i adresów w sposób zrozumiały dla człowieka.

Składnia języka asemblerowego różni się w zależności od używanego asemblera (programu tłumaczącego, patrz niżej) oraz implementacji sprzętowej - przede wszystkim od architektury procesora. Do najpopularniejszych odmian tego języka - ze względu na popularność architektury Intela znanej pod nazwą x86, zaliczyć można Asembler x86.

Współcześnie praktycznie nie używa się asemblera do pisania całych programów dla komputerów osobistych. Jest on wciąż używany jedynie do pisania fragmentów wymagających bardzo wysokiej wydajności lub mających inne specjalne wymagania, np. dla oprogramowania mikrokontrolerów o niewielkich rozmiarach pamięci programu lub istotnych, niewielkich fragmentów systemów operacyjnych.

Przykładowe polecenia (mnemoniki) w języku Asembler x86:

mov ax, 0D625h              ;wprowadź do rejestru AX liczbę szesnastkową D625 (54821 dziesiętnie)
mov es, ax                  ;załaduj rejestr segmentowy ES wartością znajdującą się w AX (D625)
mov al, 24                  ;załaduj dolną (młodszą) połówkę rejestru AX (AL) liczbą dziesiętną 24
mov ah, 0                   ;wyzeruj górną (starszą) połówkę rejestru AX (AH)
int 21h                     ;wywołaj przerwanie 21H

[edytuj] Asembler jako program

Asemblerem (ang. assembler) nazywa się również program dokonujący asemblacji, czyli tłumaczenia zapisu symbolicznego na język maszynowy (odpowiednik kompilacji języków wyższych poziomów). Do najpopularniejszych asemblerów zalicza się NASM, TASM oraz MASM. Istnieją też na przykład FASM i GASM.

Rozszerzeniem asemblera z zachowaniem wszystkich jego możliwości jest makroasembler.

[edytuj] Przykładowy program

Program tworzony w innych językach programowania niż asembler jest zwykle kompilowany do asemblera, a potem zamieniany na kod binarny przez asembler.

Przykładowy program wypisujący na standardowym wyjściu słowa Witaj świecie (kodowanie w UTF-8) w języku C:

#include <stdio.h>
#include <stdlib.h>
int main()
{
  printf("Witaj świecie\n");
  exit(0);
}

po kompilacji przez gcc na procesor x86 zostaje "przetłumaczony" na Asembler:

.file   "main.c"
        .section        .rodata
.LC0:
        .string "Witaj \305\233wiecie"
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $4, %esp
        movl    $.LC0, (%esp)
        call    puts
        movl    $0, (%esp)
        call    exit
        .size   main, .-main
        .ident  "GCC: (GNU) 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)"
        .section        .note.GNU-stack,"",@progbits

Kod Asemblera oprócz listy mnemonicznych poleceń zawiera sekcje opisujące parametry pliku binarnego, takie jak np. łańcuch znaków "Witaj \305\233wiecie".

[edytuj] Problemy terminologiczne

Nazwa Assembler (wielkÄ… literÄ… i z dwoma 's') zachowywana jest w jÄ™zyku polskim w przypadkach, gdy chodzi o nazwy programów lub poleceÅ„ w ich dosÅ‚ownym brzmieniu, czyli nazwy wÅ‚asne, natomiast małą literÄ… i z jednym 's' używa siÄ™ spolszczonego wyrazu oznaczajÄ…cego ogólnie oprogramowanie lub dowolny program tej kategorii[potrzebne ÅºródÅ‚o].

[edytuj] Historia

Pierwszy asembler został zrealizowany w postaci modułu Planfertigungsteil komputera Z4 z 1945 r.

Pierwszym polskim asemblerem był SAS komputera XYZ z ok. 1958 r.

[edytuj] Zobacz też

Wikibooks
Zobacz podręcznik na Wikibooks:
Asembler

[edytuj] Linki zewnętrzne



Getty Images zaprasza do Cannes
Getty Images ogłosiło otwarty konkurs kreatywny pod hasłem "Make it". Nagrodą główną jest wyjazd na festiwal reklamowy Cannes Lions.
Wierzbowska w Re:define
Teresa Wierzbowska została szefem działu marketingu i PR-u w firmie Re:define.
Pepsi rzuci rękawicę Coca-Coli
Starcie na rynku soków i napojów jest murowane. Pepsi rusza do ataku, uzbrojona w nowe linie i zespół handlowców.
"Gazeta Wyborcza" laureatem Polskiej Nagrody Europejskiej
Podczas sobotniej Parady Schumana redakcja "Gazety Wyborczej" została uhonorowana Polską Nagrodą Europejską, przyznawaną za zasługi w pogłębianiu integracji europejskiej.
Wii sięga po kobiety
Najnowsza kampania reklamowa gry Wii Fit skierowana jest wyłącznie do kobiet.
Linki: Strona g³ówna