-1

以下は、私のNASMプログラムからの関連コードであることを願っています。int 080h が呼び出されると、デバッガーは eax に対して -9 を表示します。私のtest.txtのテキストは321314145です。私はこれを何時間も見つめていましたが、ここで行き止まりになりました。なぜこうなった?

%define BUFLEN 128
%define READLEN 3
%define SYSCALL_READ  3

    SECTION .bss                    ; uninitialized data section
buf:    resb READLEN                     ; buffer for read
rlen:   resb 4
newstr: resb BUFLEN

; read file name from arg

    ;
    pop     ebx         ;not using

    pop     ebx         ;not using

    pop     ebx         ;pop filename

; open file
;
    mov     eax, SYSCALL_OPEN
    mov     ecx, STDIN
    int     080h

    mov     eax, SYSCALL_READ ; read function
    mov     ebx, eax      ; Arg: file descriptor
    mov     ecx, buf      ; Arg: address of buffer
    mov     edx, READLEN      ; Arg: buffer length
    int     080h
4

1 に答える 1

0
mov     eax, SYSCALL_READ ; read function
mov     ebx, eax      ; Arg: file descriptor

冗談でしょ?

これ-9は「不正なファイル番号」です (errno.h による)。sys_open が成功することを確認してからeaxebx...を入れてください。変更する前にeax!

于 2013-02-25T23:06:54.387 に答える