OSDev

для всех
Текущее время: 10 ноя 2024, 22:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13, 14  След.
Автор Сообщение
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 21 окт 2008, 19:51 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Пока не научился использовать функции BIOS, то на всё остальное можешь вообще не смотреть, оно на порядок сложнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 21 окт 2008, 20:45 
Ну с десятым прерыванием биоса я нормально работаю ;)

Мож чтение сектора где-то готовое есть? А то время поджимает...


Вернуться к началу
  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 22 окт 2008, 22:00 
Получилось... Оно прочитало. Вот окончательный код:

[ORG 0x7C00]

section .text

xor ax,ax
mov ds,ax
mov es,ax

_start:
mov ah, 42h
mov dl, 81h
mov si, dap
int 13h
jc _error

mov ah, 0x0E
mov al, 0x29
int 0x10

_exit: jmp _exit

global _start

_error:

mov al, 0x26
call _kputchar
jmp _exit

_kputchar:
pusha
mov ah, 0x0E
int 0x10
popa
ret

section .data

msg_error db "Error!"

dap:
packet_size db 10h
reserved db 00h
N_SEC dw 01h
buff_seg dw 00h
buff_off dw buff
X_SEC dd 0
dd 0

section .bss

buff resb 512


Теперь у меня ряд вопросов:
1. Почему неправильная директива приводила к ошибкам чтения? (что она вообще указывает)
2. Куда оно считало информацию. Как ее просмотреть?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 00:01 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
dap это структура, такая же как в предыдущем примере на языке Си, там она называется disk_packet. В ней указывается адрес записи данных, сегмент в buff_seg, и смещение buff_off, только они местами перепутаны, их нужно переставить, и указать значение сегмента в buff_seg:
dap:
packet_size db 10h
reserved db 00h
N_SEC dw 01h
buff_off dw buff
buff_seg dw 7C0h
X_SEC dd 0
dd 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 00:05 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Директива ORG указывает, начиная с какого смещения располагаются данные и код. Сектор загружается на адрес 7C00h, соответственно и все адреса переменных должны начинаться с него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 00:08 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Если бы не использовалась директива ORG, то пришлось бы к каждой переменной прибавлять базовый адрес, например вместо
mov si, dap
писать
mov si, 7C00h + dap


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^3: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 00:19 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
А, нет, в buff_seg нужно оставить 0, потому что buff уже содержит точный адрес.
buff_seg dw 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re^3: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 00:23 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
buff_seg нужно оставить 0, потому что buff_off уже содержит точный адрес. Но в принципе можно указать любое сочетание сегмент:смещение, например buff_seg=1000h, buff_off=0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 13:42 
Насколько я понимаю, сектор загрузился в адрес 0:7c00h? или нет?
Как теперь получить доступ к считанной информаци? Она в переменной buff? Или нужно создать указатеь?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 23 окт 2008, 16:13 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Сектор загрузился в адрес 0:7c00h.
Да, сектор попадает в переменную buff.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13, 14  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB