ASM86
# ASM86

ASM86 wurde von der Firma Intel als Assembler für deren x86-Prozessor-Familie vertrieben. Heute wird er nicht mehr vertrieben oder weiterentwickelt. Seine Syntax ist jedoch weit verbreitet unter x86-Assemblern wie dem Netwide Assembler, dem Microsoft Macro Assembler oder Borlands Turbo Assembler. Die Syntaxen heutiger x86-Assembler basieren meistens auf der des ASM86 oder sind identisch mit dieser, daher ist sie auch allgemein als „Intel Syntax“ oder „Intel Assembler Syntax“ bekannt.

## Syntaxunterschiede

Für x86-Assembly gibt es zwei vorherrschende Syntaxen: Intel-Syntax und AT&T-Syntax. Unter Windows dominiert die Intel-Syntax, im GNU/Linux-Ökosystem dagegen die AT&T-Syntax.

| | AT&T | Intel |
| - | - | - |
| Parameterreihenfolge | Erst Quelle, dann Zielmov $5, %eax | Erst Ziel, dann Quellemov eax, 5 |
| Parametergröße | Mnemonics erhalten ein Suffix, das für die Operandenlänge steht: q = QWord, l = DWord, w = Word b = Byte. addl $4, %esp | add esp, 4 |
| Sigils | Unmittelbare Werte haben Präfix “$”, Register “%”. | |
| Effektive Adressen | DISP(BASE,INDEX,SCALE). Beispiel: movl mem_location(%ebx,%ecx,4), %eax | Beispiel: mov eax, [ebx + ecx*4 + mem_location] |
