Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2017, 13:01   #31
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Я тестил под чистым досом и дискетой. Если у тебя виртуальная машина, попробуй сменить адрес 600h например на 7E00h
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 26.08.2017, 13:13   #32
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
Я тестил под чистым досом и дискетой. Если у тебя виртуальная машина, попробуй сменить адрес 600h например на 7E00h
На виртуалке 600h можно использовать. На всех проверял.

А вот по поводу стандартного сервиса и расширенного. Для дисков менее 8гб используем стандартный для более расширенный. Некоторые старые БИОСы могут не поддерживать для определённых дисков сервисы.

Цитата:
Сообщение от Nikolay2015 Посмотреть сообщение
Через ульта ISO создал самозагружаемый образ.
А вот с этого надо было начинать. С CD- дисками я не работал. Там и сектора больше. Поэтому код R71MT может и не работать он рассчитан на мягкие диски.
Там и структура разделов разная.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 26.08.2017 в 13:18.
Pavia вне форума Ответить с цитированием
Старый 26.08.2017, 13:16   #33
Nikolay2015
Пользователь
 
Регистрация: 23.08.2017
Сообщений: 59
По умолчанию

Для загрузки с USB к примеру как поступать?
Nikolay2015 вне форума Ответить с цитированием
Старый 26.08.2017, 13:31   #34
Nikolay2015
Пользователь
 
Регистрация: 23.08.2017
Сообщений: 59
По умолчанию

Поставил на 07E00h загрузку.
Загрузил на флешку.
Пишет Loading DEMO-OS 1.0 ....
Error - не выводит
А мать пищит как поросёнок
Nikolay2015 вне форума Ответить с цитированием
Старый 26.08.2017, 13:37   #35
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..а номер диска для INT-13h как определил?
С флэхой дела обстоят немного по другому-же..

Во-первых, нужно вычислить номер диска, чтобы указать его для INT-13h.
Как-правило диск-Ц имеет номер 80h, диск-Д = 81h и т.д. Иначе ничего не получится. Во-вторых - у флэшек размер сектора помоему не 512-байт, а больше. Это тоже проблема..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 26.08.2017, 13:40   #36
Nikolay2015
Пользователь
 
Регистрация: 23.08.2017
Сообщений: 59
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
..а номер диска для INT-13h как определил?
С флэхой дела обстоят немного по другому-же..

Во-первых, нужно вычислить номер диска, чтобы указать его для INT-13h.
Как-правило диск-Ц имеет номер 80h, диск-Д = 81h и т.д. Иначе ничего не получится. Во-вторых - у флэшек размер сектора помоему не 512-байт, а больше. Это тоже проблема..
Мне вот интересно тогда как винда определяет на каком ты диске (Жестком, USB, CD, Floppy) перед своей установкой. Я думал биос сам всё говорит при загузке, т.е. номер твоего диска.

А определил номер диска так: регистр dl положил в стек, после определения sp
Nikolay2015 вне форума Ответить с цитированием
Старый 26.08.2017, 13:48   #37
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от Nikolay2015 Посмотреть сообщение
Для загрузки с USB к примеру как поступать?
Отложить на потом. Вначале сделайте на виртуалке.
USB - это шина. От сюда и разнообразия. Флешки, жесткие диски, оптические-диски
Флешки бывают 2-х видов. В 97% вы наткнётсь на те которые могут эммулировать HDD/FDD. (Нужное указать в меню БИОСа)
3% которые эммуллируют только FDD.
Пишем 2 загрузчик и от объема прошиваем нужным. Менее 8ГБ старый.

Так ещё и с номером диска не всё так хорошо. Не все БИОСы стандарт соблюдают. Так что пробуем читать проверять контрольную сумму. А также сигнатуру диска. Потом пробуем другой номер диска.
Контрольная сумма нужна что-бы найти свой загрузчик. А сигнатура диска исключить не верный в случае 2-х и более дисков.
Правда из-за вредных советов в интернете проверка сигнатуры диска может не работать. Но это ничего грузим вторичный загрузчик он разбирает систему FAT и там ищет метку тома.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 26.08.2017, 13:57   #38
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
Во-вторых - у флэшек размер сектора помоему не 512-байт, а больше.
Не беспокойтесь 512.
Только если у вас флешка эммулирует CD, тогда да. Но таких флешик я не видел, только устройства которые очень похожи на флешки. Но вероятность
с ними встретиться ещё меньше чем 1%

Цитата:
Сообщение от Nikolay2015 Посмотреть сообщение
Мне вот интересно тогда как винда определяет на каком ты диске (Жестком, USB, CD, Floppy) перед своей установкой. Я думал биос сам всё говорит при загузке, т.е. номер твоего диска.

А определил номер диска так: регистр dl положил в стек, после определения sp
Частично я уже рассказал. Номер диска передаётся в DL. Далее для определения типа используется дисковый сервис int 13h он вернёт тип носителя.

Но потом во вторичном загрузчике повторно анализируются эти данные. Если найден сервис PnP то данные от int 13h игнорирутся и данные берутся из него. Но всё равно данные PnP могут быть не достоверные или отсутствовать как на большинства виртуалок. Винду можно обмануть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 26.08.2017, 14:23   #39
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

fn. расширенного сервиса AH=48h возвращает тип интерфейса в ASCII-виде (поле 40-47). Можно поискать там перебором дисков в DL
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 26.08.2017, 14:44   #40
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

там перечисляются интерфейсы: ATA\SATA\USB\SCSI\RAID\1394\ATAPI
поэтому пожно проверять только первую букву. Лишь-бы расширенный сервис поддерживал биос. Функция копирует данные в буфер, в котором нужно потом проверить поле(40d):

Код:
org  100h
jmp  start

buff  db  74, 128 dup(0)
dsk   db  80h


start: mov  ah,41h        ; проверка поддержики расш\сервиса
       mov  dl,80h
       mov  bx,55AAh
       int  13h
       jnc  @ok
       ret               ; BIOS не поддерживает расш\сервис :(

@ok:   mov  cx,3         ; всего дисков

@@:    mov  ah,48h       ; считать параметры диска!
       mov  dl,[dsk]
       mov  si,buff
       int  13h

       cmp  byte[si+40],'U'    ; первый символ 'U' (USB) ???
       je   @next              ; есть такой!
       inc  byte[dsk]          ; нет - сл.диск..
       loop @b
       ret                     ; облом :(

@next: mov  al,[dsk]     ; номер USB-диска в переменной DSK
       sub  al,50h       ; переведём в ascii
       xor  bx,bx
       mov  cx,1
       mov  ah,0Ah       ; вывод символа (номера диска) на экран
       int  10h

       xor  ax,ax
       int  16h
       ret
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 26.08.2017 в 14:51.
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывания kolyan147 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 13.06.2012 23:55
прерывания lilek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.12.2010 20:44
Прерывания alexdrew Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.05.2010 00:38
Прерывания Kn793 Общие вопросы Delphi 3 10.01.2009 18:43