IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Создание программы на Pascal с использованием процедур на asm., Создание программы на Pascal с использованием процедур на asm.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Доброго всем времени суток. smile.gif
Дамы и господа, прошу Вашей помощи в написании программы на Pascal.
Имеется листинг процедур для непосредственной работы с контроллером жестких дисков ATA: 1) ЧТЕНИЕ СЕКТОРА ЖЕСТКОГО ДИСКА В РЕЖИМЕ LBA, 2) ПОСЛАТЬ КОМАНДУ ЗАДАННОМУ ДИСКУ, 3) ЧТЕНИЕ ИДЕНТИФИКАТОРА ЖЕСТКОГО ДИСКА. Необходимо, используя эти процедуры, написать программу на Pascal'е.
Так как опыта работы в асме у меня нет sad.gif то при создании 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, но там ошибок еще больше sad.gif
Буду очень благодарен за помощь в создании исполняемого файла smile.gif



Прикрепленные файлы
Прикрепленный файл  LIST6_07.INC.doc ( 50 килобайт ) Кол-во скачиваний: 390
Прикрепленный файл  HDD1.PAS ( 5.28 килобайт ) Кол-во скачиваний: 298
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Решил попробовать сделать программу на более "родном" для меня Delphi 2009.
Что самое удивительное, ошибок практически не было. (не знаю правда будет ли работать сама программа. Отслеживал ошибки чисто при запуске)
Как таковое осталось 2 ошибки:
1) mov AX,[CS:MainDataSeg] - просмотрел всю книгу Кулакова Владимира Геннадьевича "Программирование на аппаратном уровне" и нашел следующее описание переменной:
; Адрес основного сегмента данных
MainDataSeg DW ?
Добавил в свой проект эту переменную, хотя и не знаю какие она должна принимать значения sad.gif
2) В строках, типа mov DI, offset SectorDataBuffer (как я понимаю, это и есть строка, в которой данные передаются в массив), компилятор ругается: E2107 Operand size mismatch. Насколько я понимаю, имеется расхождение в размерах регистра DI и массива SectorDataBuffer.
Понимаю, что наверное опять глупые вопросы задаю, но буду благодарен за объяснения, что делать с CS:MainDataSeg и как подружить регистр и массив.


Прикрепленные файлы
Прикрепленный файл  Form.rar ( 8.71 килобайт ) Кол-во скачиваний: 216
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.04.2025 5:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name