![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
vasiliy0905 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
Доброго всем времени суток.
![]() Дамы и господа, прошу Вашей помощи в написании программы на Pascal. Имеется листинг процедур для непосредственной работы с контроллером жестких дисков ATA: 1) ЧТЕНИЕ СЕКТОРА ЖЕСТКОГО ДИСКА В РЕЖИМЕ LBA, 2) ПОСЛАТЬ КОМАНДУ ЗАДАННОМУ ДИСКУ, 3) ЧТЕНИЕ ИДЕНТИФИКАТОРА ЖЕСТКОГО ДИСКА. Необходимо, используя эти процедуры, написать программу на Pascal'е. Так как опыта работы в асме у меня нет то при создании pas-файла, Turbo Pascal выдал кучу ошибок. ![]() 1) Pushad/popad (Error 5: Syntax error) - Я как понимаю TP не меняет размещение стеков? ТО есть данные команды в TP неприемлемы? 2) строка mov EAX,[SectorAddress] и все подобные строки с регистром EAX (Error 3:Unknown identifier) - Если честно, вот это совсем не понял, почему TP ругается на регистр? 3) call SendCommandToHDD (Error 3:Unknown identifier) - здесь вызов процедуры, сегодня буду читать как из под asm вызывать процедуры ; 4) mov AX,[CS:MainDataSeg] (Error 3:Unknown identifier)- Как я понимаю идет обращение к разделу DATASEG, но у меня его нет, так как я его заменил паскалевскими переменными, какую именно переменную ему нужно я не пойму ; 5) mov AX,[BX+StandardHDDBases] (Error 155: Invalid combination of opcode and operands) - Видимо несоответствие переменных. Как я понимаю значение переменной берется в прямоугольные скобки, видимо StandardHDDBases - это ссылка а не значение; По второй проблеме - TP 16-разрядная система, а EAX - регистр 32 разряда. Скачал и установил Free Pascal, но там ошибок еще больше Буду очень благодарен за помощь в создании исполняемого файла Это сообщение отредактировал(а) vasiliy0905 - 27.12.2012, 08:35 Присоединённый файл ( Кол-во скачиваний: 1 ) ![]() |
|||
|
||||
vasiliy0905 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
||||
|
||||
vasiliy0905 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
Решил попробовать сделать программу на более "родном" для меня Delphi 2009.
Что самое удивительное, ошибок практически не было. (не знаю правда будет ли работать сама программа. Отслеживал ошибки чисто при запуске) Как таковое осталось 2 ошибки: 1) mov AX,[CS:MainDataSeg] - просмотрел всю книгу Кулакова Владимира Геннадьевича "Программирование на аппаратном уровне" и нашел следующее описание переменной: ; Адрес основного сегмента данных MainDataSeg DW ? Добавил в свой проект эту переменную, хотя и не знаю какие она должна принимать значения :( 2) В строках, типа mov DI, offset SectorDataBuffer (как я понимаю, это и есть строка, в которой данные передаются в массив), компилятор ругается: E2107 Operand size mismatch. Насколько я понимаю, имеется расхождение в размерах регистра DI и массива SectorDataBuffer. Понимаю, что наверное опять глупые вопросы задаю, но буду благодарен за объяснения, что делать с CS:MainDataSeg и как подружить регистр и массив. Присоединённый файл ( Кол-во скачиваний: 0 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |