Anda harus mendeklarasikan buffer Anda di bagian bss dan bufsize di data
section .data
bufsize dw 1024
section .bss
buf resb 1024
Ohh, ini akan menyenangkan.
Bahasa assembly tidak memiliki variabel. Itu adalah konstruksi bahasa tingkat tinggi. Dalam bahasa rakitan, jika Anda menginginkan variabel, Anda membuatnya sendiri. Menanjak. Kedua cara. Di salju.
Jika Anda menginginkan buffer, Anda harus menggunakan beberapa wilayah tumpukan Anda sebagai buffer (setelah memanggil instruksi penyiapan bingkai-tumpukan yang sesuai), atau menggunakan beberapa wilayah di heap. Jika heap Anda terlalu kecil, Anda harus membuat instruksi SYSCALL (INT 80j lainnya) untuk meminta lebih banyak sistem operasi (melalui sbrk).
Alternatif lain adalah mempelajari format ELF dan membuat variabel global di bagian yang sesuai (menurut saya .data).
Hasil akhir dari salah satu metode ini adalah lokasi memori yang dapat Anda gunakan. Tapi satu-satunya "variabel" Anda yang sebenarnya seperti yang biasa Anda lakukan dari dunia C yang sekarang tampak indah adalah register Anda. Dan jumlahnya tidak banyak.
Assembler mungkin membantu Anda dengan makro yang berguna. Baca dokumentasi assembler; Saya tidak ingat mereka dari atas kepala saya.
Hidup itu sulit di level ASM.
Setelah panggilan untuk membuka, pegangan file ada di eax. Anda berhak memindahkannya ke ebx, di mana panggilan untuk membaca akan mencarinya. Sayangnya, saat ini Anda telah menimpanya dengan 3, syscall untuk membaca.