Last active
March 14, 2016 19:08
-
-
Save stv0g/11370735 to your computer and use it in GitHub Desktop.
NASM quick reference
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; NASM quick reference | |
;; Format der Instruktionen NASM | |
label: opcode dest, src | |
; vgl GNU Assembler | |
label: opcode src, dest | |
;; NASM Pseudoinstruktionen | |
N equ 5 ; define constant (no memory reserved!) | |
SECTION .data ; initialisierte Daten | |
var1: db 0xFF ; byte = 1 byte | |
var2: dw 0xFFFF ; word = 2 byte | |
var3: dd 0xFFFFFFFF ; dword = 4 byte (double) | |
var4: dq 0xFFFFFFFFFFFFFFFF ; qword = 8 byte (quad) | |
str db "Hello World\n",0 ; string = N byte | |
len: db $ - str | |
blob: times 64 db 0 ; wiederhole 64 mal | |
SECTION .bss ; uninitialisierte Daten | |
dec: resb 1 | |
bin: resw 1 | |
hex: resd 1 | |
oct: resq 1 | |
;; Register x86 und x86_64 | |
; byte word dword qword | |
; Akkumulator al, ah ax eax rax | |
; Daten dl, dh dx edx rdx | |
; Zähler cl, ch cx ecx rcx | |
; Basis bl, bh bx ebx rbx | |
; Stack sp esp rsp | |
; Stack Basis bp ebp rbp | |
; String Src Index si esi rsi | |
; String Dest Index di edi rdi | |
; Instruction Pointer ip eip rip | |
; Allgmein r8 - r15 | |
;; Adressierung | |
SECTION .text | |
mov al, byte [dec] ; indirekt | |
mov ax, word [ebx + 0x22] ; indirekt mit Offset | |
mov eax, dword [ebx + 0x23 + 4*ecx] ; indirekt SIB | |
; mov rax, qword [base + index*scale + displacement] | |
;; Konstanten | |
mov [dec], byte 138 ; alternativ 138d, 0d138 | |
mov [bin], word 10101010b ; alternativ 0d10101010, 0b1010_1010 | |
mov [hex], dword 0ABh ; alternativ 0xAB, 0hAB | |
mov [oct], qword 126o ; alternativ 0o126 | |
;; Sprünge | |
jmp label ; unbedingter Sprung | |
test eax, ebx ; eax & ebx | |
cmp eax, ebx ; Vergleich setzt Flags (eax - ebx) | |
jz label ; falls Zero Flag gesetzt (gleich) | |
jnz, jne ; falls Zero Flag nicht gesetzt (ungleich) | |
ja, jae ; falls größer (oder gleich) | |
jb, jbe ; falls kleiner (oder gleich) | |
; siehe Skript für weiteres | |
label: ; Sprungmarke | |
jmp $ ; Endlosschleife |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment