我在NASM(适用于Linux)中有一段代码,应该打开一个现有文件,读取它并在屏幕上打印内容,但是不起作用,有人可以告诉我我在做什么错吗?(hello.txt是名字文件的)

section .data

file db "./hello.txt", 0

len equ 1024

section .bss

buffer: resb 1024


section .text

global _start

_start:

    mov ebx, [file] ; name of the file
    mov eax, 5
    mov ecx, 0
    int 80h

    mov eax, 3
    mov ebx, eax
    mov ecx, buffer
    mov edx, len
    int 80h

    mov eax, 4
    mov ebx, 1
    mov ecx, buffer
    mov edx, len
    int 80h

    mov eax, 6
    int 80h

    mov eax, 1
    mov ebx, 0
    int 80h

最佳答案

mov ebx, [file] ; name of the file
mov eax, 5
mov ecx, 0
int 80h

是错的。松开file周围的方括号。您正在传递文件名,而不是指向文件名的指针。
mov ebx, file ; const char *filename
mov eax, 5
mov ecx, 0
int 80h

关于linux - NASM,读取文件并打印内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26963871/

10-13 07:01