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.