Comunidade OSDevBrasil.net
Fevereiro 09, 2012, 06:30:30 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: Preciso escrever no disco  (Lida 590 vezes)
Eduardo
OS Newbie
*

Karma: 0
Mensagens: 4


Ver Perfil
« : Outubro 25, 2009, 08:31:04 »

Olá pessoal vejo que vocês manjão mesmo de assembly, gostaria de saber como escrever no disco dentro de um arquivo de texto (ou criar o arquivo)em assembly sem utilizar qualquer tipo de interrupção dos, alguém sabe como me ajudar?
Obrigado
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 430


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #1 : Outubro 26, 2009, 01:48:27 »

Bom, sem o DOS é mais dificil, mas você teria que usar a INT 13 para acessar o disco, mas também terá que interpretar o sistema de arquivos FAT... Se fosse possivel fazer isso sem as interrupções do DOS, não precisaríamos dele para quase nada!

Sobre a int 13:

http://en.wikipedia.org/wiki/INT_13

Sobre FAT:

[PDF] http://www.osdever.net/documents/fatgen103.pdf?the_id=40
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Eduardo
OS Newbie
*

Karma: 0
Mensagens: 4


Ver Perfil
« Responder #2 : Outubro 28, 2009, 07:11:19 »

Gostaria Apenas de gravar um caracter no disco (nem que seja apenas a letra "A" ) e fazer a leitura do mesmo em um programa em assembly. Em todos os lugares que eu olho não dizem como mandar um carater para o disco gostaria apenas de fazer isso, tem como? Você ou alguém pode ajudar-me?
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 430


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #3 : Outubro 30, 2009, 03:52:30 »

O disco rigido é um sistema de blocos, com geralmente 512 bytes por bloco, diferente do teclado que é um dispositivo de caracteres. Então você teria que ler um bloco, gravar a letra 'A' nele, e então gravar novamente o bloco.

EDIT: Ia esquecendo, na seção de downloads do SOmBRA, tenho um pequeno sistema operacional que implementa algumas das funções do DOS, e ele mesmo tem um driver FAT, que le dados do disquete... Se quiser dar um olhada como é feito a leitura do disco por ele, você pode faze-lo. Dai você teria somente que implementar a parte de escrita. O link esta ai abaixo, para encontrar o código que faz essa leitura é só ir em v0017/drv/discos.c.

http://projeto-sombra.googlecode.com/files/SD-BRAv0017.zip
« Última modificação: Outubro 30, 2009, 03:57:20 por Mounter » Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Eduardo
OS Newbie
*

Karma: 0
Mensagens: 4


Ver Perfil
« Responder #4 : Novembro 01, 2009, 12:01:14 »

Algumas apostilas de assembly que falam sobre escrita e leitura dizem os seguinter:    "ES:BX  - Buffer Address Pointer", o que significa? E como se usa isso?
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 430


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #5 : Novembro 01, 2009, 06:48:58 »

Ali é o conjunto SEGMENTO :: OFFSET para onde os dados do disco serão lidos/gravados.
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

anthony collucci
it not exist
Moderador Global
OS Full Member
*****

Karma: 3
Mensagens: 100


Ver Perfil WWW Email
« Responder #6 : Novembro 06, 2009, 08:17:52 »

Olá pessoal vejo que vocês manjão mesmo de assembly, gostaria de saber como escrever no disco dentro de um arquivo de texto (ou criar o arquivo)em assembly sem utilizar qualquer tipo de interrupção dos, alguém sabe como me ajudar?
Obrigado

Bom Dia Eduardo,

Voce pretende apenas fazer um teste?

Porque e o seguinte, quando vc grava em um disco usando o assembly direto, vc grava nele fisicamente, e em um setor-trilha bem definido. Para lê-lo depois vc teria que gravar em algum lugar onde voce gravou esse arquivo. Pq senao ele ficaria perdido no meio do disco.

Posso de dar um conselho, implemente primeiro um sistema de arquivos fat, pois la vc vai aprender como ler e gravar e apagar um arquivo, alem de como mover copiar e etc.. ( que na verdade e quase a mesma coisa). Depois disso vc ja estará apto a usar as "system call" do fat para fazer isso por você.

att,
Registrado

Eduardo
OS Newbie
*

Karma: 0
Mensagens: 4


Ver Perfil
« Responder #7 : Novembro 14, 2009, 06:53:50 »

Obrigado pela ajuda de todas mas o meu principal problema é não saber onde eu mando um letra e onde depois eu a leio( em um programa em assembly, como por exemplo mov paraonde, 'a letra ou db'), alguém sabe isso?
Registrado
Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.14 | SMF © 2006-2009, Simple Machines LLC XHTML 1.0 Válido! CSS Válido!