Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

f-22

Assembly read file

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.