Skip to content

Instantly share code, notes, and snippets.

@stv0g
Last active March 14, 2016 19:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stv0g/11370735 to your computer and use it in GitHub Desktop.
Save stv0g/11370735 to your computer and use it in GitHub Desktop.
NASM quick reference
; 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