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

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

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

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

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

Результаты опроса: Хотите ли вы читать эту книгу?
Хочу 148 78.31%
Не хочу 29 15.34%
уже прочитал 12 6.35%
Голосовавшие: 189. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2013, 19:35   #11
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию

Пытался скачать файлы к книге на вашем сайте,но почему то слетает соединение с сервером,посмотрите в чем там может быть дело?
Книга отличная ,особенно порадовала глава с написанием драйверов на ассемблере.
Gtnz8 вне форума Ответить с цитированием
Старый 20.01.2015, 13:39   #12
faxriddinjon
Новичок
Джуниор
 
Регистрация: 20.01.2015
Сообщений: 1
По умолчанию

Привет всем. Нужна ваша помощь. Посмотрите, пожалуйста, можно ли программным способом заменить кварц 4,096 MHz на 4,00 MHz
Файл находится тут:
https://docs.google.com/document/d/1...2OeLOshvk/edit

Спасибо заранее.
faxriddinjon вне форума Ответить с цитированием
Старый 18.02.2017, 10:23   #13
Sergey54
 
Регистрация: 15.02.2014
Сообщений: 4
По умолчанию

Изложенное в книге понятно. Объясните пож подробно как с флешки загружаться. Виртуальной машиной не хочу пользоваться, а с флешки нет загрузки, выдает сообщение boot сектор не найден.
Sergey54 вне форума Ответить с цитированием
Старый 18.02.2017, 12:17   #14
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Sergey54
Это лучше обсудить в отдельной теме. Судя по сообщению БИОСа вы уже прошли с 0 по 4 пункт и застряли на 5. Но всё равно рекомендую перечитать.

0) Не все флешки годятся для загрузки с них. В первых секторах у таких флешек лежит служебная информация и они имеют свою логическую структуру. При этом изменить это нельзя так как аппаратно заблокировано и информация доступна только на чтение.
С Tranced никогда проблем не было.
1) Способ загрузки UEFI/CSM - выбирается в биосе. CSM (Compatibility Support Module).
CSM - это режим совместимости со старым BIOS когда загрузка идёт с сектора. Для обращения к API БИОСа используют интерфейсную команду int, к примеру (Int 13h)
UEFI используются файлы с расширением *.efi формата PE-EFI.
2) Логическая структура флешь-диска. Есть два основных вида под мягкий-диск и под жесткий диск.
Мягкий диск он же: флоппи, флопик, Floppy, НГМД.
Жёсткий диск он же: HDD, Hard-Disk, НЖМД.

Соответственно в меню-БИОС выбирается тип определения флешь-диска как USB FDD или USB HDD. Тип должен совпадать с логической структурой.
Обычно все работают с USB-HDD.
3) При создании самого первого(считаем от 1) логического тома/раздела его размеры не могут привышать определённые значения. Самый первый раздел не может быть больше не может быть больше 7.8 ГБ. А для жёсткий не более 2 ТБайт.
4) Выбор загрузочного сектора. Для флешек менее 7٫8 Гб и более 7٫8 Гб должны использоваться разный код загрузочного сектора. Для более код должен быть написан с использованием EDD Int 13h AH=42h

5) При записи загрузочного сектора вы могли спутать MBR и Boot Sector(загрузочный сектора) и Boot Record (загрузочная запись).
Надо поместить MBR в 0 сектор физического диска. Обычно путают и пишут не в физический диск, а в логический. Или путают с томом, разделом диска.
6) Забыли вставить или отсутствует магическая подпись
db 55h, 0AAh
Перепутан порядок константы или их место размещение.
6.1) 55h, 0AAh соответственно имеют смещения 510d, 511d (смещение считается от нуля)
7) Некоторые биосы требуют недокументированных кодов в 0 секторе диска. Пока что никто такую базу не создал.
7.2) Не стоит портить DiskSignature им тоже пользуются некоторые биусы.
7.3) Все служебные поля важны!

С виртуозками проблем меньше они не такие привередливые.

Вот ещё ряд типичных проблем/ошибок при написании загрузчика:
http://ru.osdev.wikia.com/wiki/Почем...т_загрузчик%3F

Поэтому лучше это пропустить и пользоваться Grub4DOS для загрузки ядра свой ОС.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 18.02.2017 в 12:22.
Pavia вне форума Ответить с цитированием
Старый 18.02.2017, 21:53   #15
Sergey54
 
Регистрация: 15.02.2014
Сообщений: 4
По умолчанию

Спасибо Pavia за ответ. Напишу подробнее.
Брал программу - раздела 2 без описанных условий перекидывал на флешку и свободно компьютер запускался. По непонятным причинам в определенный момент это стало невозможным. Либо выдает сообщение No bootable device - insert boot disk and press any key и просит вставить загрузочный диск, либо сразу переходит на загрузку ОС.
Устанавливал загрузчик объемом не более 512 байт в нулевом секторе с сигнатурой 55АА со смещением 510 511 ничего не помогло. Биос определяет флешку как HDD.
Sergey54 вне форума Ответить с цитированием
Старый 19.02.2017, 13:27   #16
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Вам надо восстановить MBR на вашей флешке.
В консоли с правами администратора выполнить
bootsect.exe /mbr E:
Где вместо E: - указать диск вашей флешки
Затем сделать загрузочным диском-дос как описано здесь:
http://www.pontin.ru/technical/instr...yu-fleshku-dos
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 19.02.2017, 15:45   #17
Sergey54
 
Регистрация: 15.02.2014
Сообщений: 4
По умолчанию

Выдает сообщение что bootsect можно воспользоваться из биос. This tool can only be run on systems booted using a PC/AT BIOS. This was booted using EFI or some other firmware type.
Sergey54 вне форума Ответить с цитированием
Старый 19.02.2017, 18:58   #18
Sergey54
 
Регистрация: 15.02.2014
Сообщений: 4
По умолчанию

Спасибо Pavia, все получилось.
Sergey54 вне форума Ответить с цитированием
Старый 12.03.2019, 15:17   #19
PetroMetro
 
Регистрация: 11.03.2019
Сообщений: 7
По умолчанию

Здравствуйте, занимаюсь по этой книге. И к сожалению столкнулся с тем что примеры из книги не работают, к примеру на dosbox (на скрине) не работает part2/sample2.3, обычная трансляция адресов, но в freedos всё нормально , да Я понимаю что там запрещена запись в поля данных, перепроверял дескрипторы, всё нормально(хотя если на freedos выполнялось, то смысла проверять не было). в итоге проблема решилась уменьшением PAGE_DIR_BASE_ADDRESS и PAGE_TABLES_BASE_ADDRESS на 4 разряда.
Ну думаю ладно, разобрался.
Затем перешёл к следующему part2/sample2.3.PAE трансляция в режиме PAE. тут столкнулся с той же ошибкой(но тем не менее делал как в предыдущем примере, не помогло), но уже по причине другой ошибка происходит:
Код:
  9    xor eax, eax
 10    mov edi, PAGE_DIRECTORIES_POINTERS_TABLE_BASE_ADDRESS
 11    mov ecx, (TABLES_END - PAGE_DIRECTORIES_POINTERS_TABLE_BASE_ADDRESS)/4
 12    rep stosd
то есть при заполнении значением eax (0) всего пространства начиная с места указанного в edi, в селекторе es, ну думаю дай проверю pm.asm вдруг там ошибки в типе, дескриптора, - да нет, всё норма, думаю может не es:edi а ds:edi, и этот дескриптор по типу и другим параметрам подходит. Да и что бы наверняка и сегмент кода тоже позволяет производить туда запись.
Так как это вопрос, то подскажите пожалуйста в чём причина? Я пока всё перечитывал в книге, уже запомнил всю структуру GDT, как виртуальный страничный адрес преобразуется в физический, уже сны снятся на эту тему, но так и не пойму в чём проблема. Я уже подозреваю, может это такой план Автора, что бы обучающиеся всё запомнили через такие муки. Предполагаю что проблема, для людей которые этим давно занимаются на поверхности, у Меня же, ввиду того что Я не сильно в этом разбираюсь, просто кончились весомые домыслы что Я делаю не так. Буду благодарен
Изображения
Тип файла: png dosBox2.3.png (17.9 Кб, 133 просмотров)
PetroMetro вне форума Ответить с цитированием
Старый 12.03.2019, 21:44   #20
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Во времена доса 64 битного режима не было. Поэтому dosbox его и не эмулирует.
И вообще дос это 16 битное программирование.

Берите нормальный эмулятор и вперёд.
В порядке убывания качества VMware Player, VirtualBox, Bochs, Qemu.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 12.03.2019 в 21:47.
Pavia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Руслан Аблязов - Программирование на ассемблере на платформе x86-64 (+ CD-ROM) Alar Свободное общение 110 19.04.2017 01:49
Программирование на Ассемблере Николай ПН Помощь студентам 3 23.03.2010 00:56
Программирование микроконтроллера 80С196КС на ассемблере KOCT9IH Фриланс 3 07.11.2008 13:03