Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

f-22

Assembly read file

Recommended Posts

f-22

Boas pessoal,

Estou a tentar ler um ficheiro, porem o nome do ficheiro é indicado pelo utilizador.

Eu consigo pedir ao user 1 nome do ficheiro a ser lido e mostrar o que ele introduziu, e consigo ler 1 ficheiro mas com o caminho em uma variável.

Não consigo é juntar os 2. Quando passo o nome do ficheiro lido, isto não faz nada.


section .bss

filePath   resb    filePath_MAX

---------

LEIO O NOME PARA DENTRO DE > filePath

...

mov     eax, 5
mov     ebx, filePath          
mov     ecx, FILE_OPEN
int     0x80                   
mov     [fich_handle], eax 

...

Podem ajudar-me,

Obrigado

Share this post


Link to post
Share on other sites
JD557

Podes mostrar mais um bocado do código (como o input do utilizador)?

Já agora estás a usar MASM? Lembro-me que havia um caso em especifico que o MASM fazia uma coisa esquisita com apontadores (acho que  desreferenciava sozinho sem meteres os []). Pode ser disso.


MIEIC @ FEUP

http://project557.blogspot.com/ --- Development Blog

Proteja a sua pen: http://lastknight.pt.vu

Share this post


Link to post
Share on other sites
f-22

Podes mostrar mais um bocado do código (como o input do utilizador)?

Já agora estás a usar MASM? Lembro-me que havia um caso em especifico que o MASM fazia uma coisa esquisita com apontadores (acho que  desreferenciava sozinho sem meteres os []). Pode ser disso.

Boas, Sim estou em NASM em Linux.

Já experimentei por os [] quando passo o nome do ficheiro mas não resulta :S



MAX_BUFFER      	equ     2048                    
FICH_ABERTURA   	equ     00q                     

;-----------------------------------------------------------------------------
section .data

s_perguntaFicheiro     db      "Introduza o nome do ficheiro para ler:"
perguntaFicheiro_LEN     equ     $ - s_perguntaFicheiro

ficheiro_len       	db      0
FICHEIRO_MAX       	equ     80

fich_handle     	dd      0 
fich_bytes      	dd      0

num         	  	dd      0
result		       	dd      0

;-----------------------------------------------------------------------------
section .bss

ficheiro    		resb    FICHEIRO_MAX
buffer				resb	MAX_BUFFER

;-----------------------------------------------------------------------------
section .text

global  _start

_start:


; pede nome ficheiro

                mov     eax, 4
                mov     ebx, 1
                mov     ecx, s_perguntaFicheiro
                mov     edx, perguntaFicheiro_LEN
                int     0x80


; Le nome ficheiro

                mov     eax, 3
                mov     ebx, 0
                mov     ecx, ficheiro
                mov     edx, FICHEIRO_MAX
                int     0x80
                dec     eax		 ; Retirar a quebra de linha (0xA) final
                mov     [ficheiro_len], eax


; Abre o ficheiro e guarda handle

                mov     eax, 5            
                mov     ebx, ficheiro     
                mov     ecx, FICH_ABERTURA
                int     0x80              
                mov     [fich_handle], eax

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.