0

Linux 32 ビット x86 アセンブリ (NASM 構文) でテキスト ファイルの内容を表示するにはどうすればよいですか?

前もって感謝します、

4

2 に答える 2

6

私はこれをテストしていません (必ずしも NASM 構文であるとは限りません) が、これらの行に沿った何かが x86 Linux マシンで動作するはずです:

; Open file 
mov ecx,0 ; FILEMODE_R
mov ebx,filePath
mov edx,01FFh
mov eax,5  ;__NR_open
int 80h  ; syscall
mov fileHandle,eax

...

; Read file data
mov ebx,fileHandle
mov ecx,buffer
mov edx,numBytesToRead
mov eax,3  ; __NR_read
int 80h

; Write to STDOUT
mov edx,numCharsToWrite
mov ecx,buffer
mov ebx,1  ; STDOUT
mov eax,4 ; __NR_write
int 80h

; Repeat as many times as necessary

; Close file
mov ebx,fileHandle
mov eax,6 ; __NR_close
int 80h
于 2013-01-09T20:54:52.473 に答える
2

これをターミナルで./[program name] > destination.txt < source.txtのように使用します。 source はコピー元のファイルです....これはバイトごとにコピーされます..宛先ファイルを指定しない場合このプログラムは、ファイルの内容を端末に表示します。つまり、[プログラム名] < source.txt ...

    SECTION .bss
        fileBuf: resb 1
    SECTION .data
    SECTION .text
        global _start
    _start:

        nop

      read: mov eax, 3 ; sys_read
            mov ebx, 0 ; standard input
            mov ecx, fileBuf
            mov edx, 1
            int 80h
            cmp eax, 0 ; ensure havn't read eof
            je exit

      write:mov eax, 4 ; sys_write
            mov ebx, 1 ; standard output
            mov ecx, fileBuf
            mov edx, 1
            int 80h
            jmp read


     exit: mov eax, 1 ; wrap it up
           mov ebx, 0
           int 80h
于 2013-01-24T10:51:38.590 に答える