Assembler / Assembley Language

Assembler, uit het Engels staat voor bouwen of monteren. De assembler taal is de laagste compiler taal voor computers. Assembler talen zijn hardware afhankelijk. In dit artikel nemen wij de x86 processor als basis. De Assembler taal werkt met mnemonic. Mnemonic, afgeleid van het Griekse woord mnemonika, wat zoveel als onthouden betekend, is de benaming voor zeer korte programma instructies. De assembler taal werkt met mnemonics, zo als mov, add en pop.
De daadwerkelijke assembler die wij voor dit artikel gebruiken is de Netwide Assembler, de NASM. Er zijn meerder Assemblers, maar wij hebben voor NASM gekozen omdat:

- NASM is open source, werkt met Linux, ELF, NetBSD, FreeBSD en Win32.
- a86 is een goede assembler maar werkt alleen onder DOS en is niet gratis.

- gas is wel gratis, maar heeft een minimale fout code test.
- MASH heeft beperkingen en werkt werkt onder DOS. Hij is wel goedkoop.
- TASM is beter, duurder en werkt allen onder DOS

Om de NASM te gebruiken, moet hij voor Linux Mint eerst worden geïnstalleerd. Dit gaat heel eenvoudig via Softwarebeheer. Om een programma met assembler programma met NASM te maken, moeten enkele stappen worden genomen.

1 - Schrijf de broncode in een ASCII editor zo als Tekstbewerker. Sla het resultaat op als programmanaam.asm

2 - Het compileer met NASM gaat als volgt:

  nasm -f < file > < filename >( de optie -f specificeert de file format)

Voorbeeld: nasm  - f elf programmanaam.asm

Het linken met het 64 bit systeem benodigt elf_i386! De linker is LD van GNU linker
Voorbeeld: ld -m elf_i386 programmanaam.o -o programmanaam


De uitvoer van het programma wordt gestart door ./programmanaam

Nu kunnen wij het eerste programma bouwen, die Mijn eerste Assembley Program op het beeldscherm gaat plaatsen.
Start de editor Tekstbewerker en tijp de volgende instructies:

; Mijn eerste Assembler programma!
 
SECTION .data
msg     db      'Mijn eerste Assembly Program', 0Ah     ;  msg tekst variable
 
SECTION .text
global  _start

 
_start:
 
    mov     edx, 30      ; aantal tekst bytes plus 13-10
    mov     ecx, msg    ; verplaats de memory locatienaar  ecx
    mov     ebx, 1        ; schrijf STDOUT file
    mov     eax, 4        ; stop in SYS_WRITE (kernel opcode 4)
    int     80h

    mov     ebx, 0       ; return 0 status on exit - 'No Errors'
    mov     eax, 1       ; invoke SYS_EXIT (kernel opcode 1)
    int     80h

Sla de tekst in de Persoonlijke map op als meap.asm

Compileer in de Terminalvenster met de instructie:
nasm -f elf meap.asm en druk op Enter
Link het programma met de GNU linker Ld als volgd:

ld -m elf_i386 meap.o -o meap en druk op Enter

Nu kun je het programma uitvoren met de instructie ./meap

Op het scherm van Treminalvenster verschijnt:

Mijn eerste Assembly Program