A (saner, IMO) flavor of assembly.

section .data
str:     db 'Hello world!', 0Ah         ; message string with new-line char at the end (10 decimal)
str_len: equ $ - str                    ; calcs length of string (bytes) by subtracting the str's start address
 
section .text
global _start
_start:
    ;; mov a, b  <===>  a = b
    mov ax, 1234h     ; copies the value 0x1234 (4660) into register AX
    mov bx, ax        ; copies the value of the AX register into the BX register
    add esp, 4        ; esp += 4
    call func         ; push next instruction address onto stack and jump to a function
                      ;   return value is stored in eax
    push eax          ; push the value of eax onto the stack; increments esp (by the size of eax)
    pop eax           ; pop a value off the stack into eax; decrements esp (by the size of eax)
 
    ;; arithmetic operations inside brackets
    mov eax, [ebx + ecx*4]      ; resolves to an address and then accessed
    lea eax, [ebx + ecx*4]      ; interpreted as a value and then stored into eax
 
    test eax, eax               ; performs eax & eax, and sets FLAGS accordingly
    jmp 0x0000411e              ; jump to 0x0000411e (I made up this address)
    je 0x0000411e               ; jump to 0x0000411e if eax = eax
    jne 0x0000411e              ; jump to 0x0000411e if eax != eax (won't ever happen)
 
    ;; example of Linux syscalls from wikipedia
    mov eax, 4                  ; specify the sys_write function code (from OS vector table)
    mov ebx, 1                  ; specify file descriptor stdout --in gnu/linux, everything's treated as a file,
                                ;   even hardware devices
    mov ecx, str                ; move start _address_ of string message to ecx register
    mov edx, str_len            ; move length of message (in bytes)
    int 80h                     ; interrupt kernel to perform the system call we just set up -
                                ;   in gnu/linux services are requested through the kernel
    mov eax, 1                  ; specify sys_exit function code (from OS vector table)
    mov ebx, 0                  ; specify return code for OS (zero tells OS everything went fine)
    int 80h                     ; interrupt kernel to perform system call (to exit)
 
func:
    ;; pop the return address off the stack and jump to that address
    ret