bss セクションでバッファーを宣言し、データで bufsize を宣言する必要があります
section .data
bufsize dw 1024
section .bss
buf resb 1024
おお、これは楽しそうです。
アセンブリ言語には変数がありません。これらは高水準の言語構造です。アセンブリ言語では、変数が必要な場合は自分で作成します。上り坂。両方。雪の中。
バッファーが必要な場合は、スタックの一部の領域をバッファーとして使用するか (適切なスタック フレーム セットアップ命令を呼び出した後)、ヒープ上の一部の領域を使用する必要があります。ヒープが小さすぎる場合は、SYSCALL 命令 (別の INT 80h) を作成して、(sbrk 経由で) オペレーティング システムに追加を要求する必要があります。
もう 1 つの方法は、ELF 形式について学び、適切なセクションにグローバル変数を作成することです (.data だと思います)。
これらのメソッドの最終結果は、使用できるメモリ ロケーションです。しかし、今では素晴らしく見えるようになった C の世界から慣れ親しんだ唯一の本当の「変数」は、レジスターです。そして、それらの数はそれほど多くありません.
アセンブラは、便利なマクロを手助けしてくれるかもしれません。アセンブラのドキュメントを読んでください。頭のてっぺんからそれらを覚えていません。
ASM レベルでの生活は厳しいものです。
open の呼び出し後、ファイル ハンドルは eax になります。当然のことながら、eax を ebx に移動し、そこで read の呼び出しがそれを探します。残念ながら、この時点で、読み取り用の syscall である 3 で既に上書きされています。