Devi utilizzare le apposite syscall:
open per aprire
write/read per leggere ed infine close per liberare la memoria.

codice:
%define SYS_OPEN     5 ; 5 è il numero della syscall open
%define SYS_WRITE   4 ; 4 è il numero della syscall write
%define SYS_READ     3 ; 3 è il numero della syscall read
%define O_RDONLY    0
%define O_WRONLY   1
%define O_RDWR        2

section .data
   filename db 'file.txt'

section .bss
   text resb 1 ;; Alloca un byte

section .text
   global _start

_start:
   mov eax, SYS_OPEN ;int open(const char *filename, int mode)
   mov ebx, filename
   mov ecx, O_RDWR

   int 0x80

   ;; Legge un byte
   mov ebx, eax ;salva il filedescriptor
   mov eax, SYS_READ
   mov ecx, text
   mov edx, 1

   int 0x80

   mov eax, 1 ;; chiama exit
   mov ebx, 0

   int 0x80
Il codice non lo provato, ma è solo per dare un'idea.