Вопрос № 29011: Здравствуйте
Я пытаюсь сделать свою оболочку типа dos navigator
Как мне создать часы в верхнем правом углу?
Нужно перехватить прерывание 1с?
Или как?
И еще вопрос.
Скачал исходники DOS Navigator, они оказались на pa...Вопрос № 29012: У меня к вам вопрос о прерывании 27h. По описанию Калашникова Олега оно должно оставить программу резидентной в памяти (информация взята из архива рассылок, 10 выпуск, программа-резидент). Запуская программу в "Emu8086"(ассемблер + отладчик...
Вопрос
№ 29.011
Здравствуйте
Я пытаюсь сделать свою оболочку типа dos navigator
Как мне создать часы в верхнем правом углу?
Нужно перехватить прерывание 1с?
Или как?
И еще вопрос.
Скачал исходники DOS Navigator, они оказались на pas
Хотя я ожидал увидеть asm.
Вопрос заключается вот в чем.
Стоит ли создавать подобные программы на assembler
И на сколько реально создавать большие проекты без вмешательства
C++, Delphi и т. д.
Отправлен: 06.11.2005, 14:06
Вопрос задал: Xsin (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Undertaker
Здравствуйте, Xsin!
Действительно, проще всего эту проблему решить способом перехвата прерывания пользовательского таймера. Иными словами, необходимо установить в качестве адреса обработчика этого прерывания адрес некоторой процедуры, которая и будет выполнять то, что необходимо (выводить на экран показания счетчика для данного случая).
Ответ отправил: Undertaker (статус: 5-ый класс)
Отправлен: 06.11.2005, 17:32 Оценка за ответ: 5
Отвечает: Sager
Здравствуйте, Xsin!
Для этого используй функцию 2ch:
mov ah,2ch
int 21h
ch=часы
cl=минуты
dh=секунды
dl=доли секунды
Под досом на асме реально создавать большие проекты(я вот писал оболочку на паскале с асм вставками - написал бы и на чистом асме, но нужно было писать на паскале - потому что в школе мы изучали паскаль), а под виндой - лучше уж писать на С++delphi(хотя примеры есть на асме - RadAsm, Saminside...)
Ответ отправил: Sager (статус: Студент)
Отправлен: 06.11.2005, 17:33 Оценка за ответ: 5
Отвечает: Стас
Здравствуйте, Xsin!
Можно и 8 и 1Ch. Хотя есть и еще варианты.
Стоит или не стоит зависит только от тебя. (твоих возможностей и желания)
Тяжело конечно все написать на ассемблере, и долго наверное, зато как интересно!!!
Ответ отправил: Стас (статус: Специалист)
Отправлен: 07.11.2005, 01:30
Отвечает: Master135
Здравствуйте, Xsin!
Вот пример такой проги. А вобще полезно было бы почитать книгу Кулаков Владимир
программирование Периферийных устройств. В нете пока не видел:(
Приложение:
Ответ отправил: Master135 (статус: Студент)
Отправлен: 07.11.2005, 01:53
Отвечает: Юра Устинов
Здравствуйте, Xsin!
Да ты прав 1Ch как раз для этого, не вздумай перехватывать 08.
Базу данных, конечно лучше делать на DELPHI полностью, SQL и всё такое,
а вот игрушку я сделал со вставкой, будет время перепишу полностью на асму.
Конкретней, есть функция getmem, которая резервирует память, но нет функции позволяющей обращаться к этой памяти, кроме как blockread. Я попробовал с этим блокридом для прикола...всё стало жутко торить. В асме же мы можем спокойно обращаться к любому байту, по-крайней мере читать. Так что игрухи надо делать как раз на асме. Оболочки тоже. MenuetOS - это операционка написанная полностью на асме - а ля виндовс 98, а размером с дискету. Ну а драйвера, ты же не будешь делать их на с++ или делфи...Ж:) вот умора,
драйвера на делфи. Удачи, делай на чистом асме!!!
--------- Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 4-ый класс)
Отправлен: 07.11.2005, 05:38 Оценка за ответ: 5
Вопрос № 29.012
У меня к вам вопрос о прерывании 27h. По описанию Калашникова Олега оно должно оставить программу резидентной в памяти (информация взята из архива рассылок, 10 выпуск, программа-резидент). Запуская программу в "Emu8086"(ассемблер + отладчик (эмулятор)) выдаётся сообщение:
"This interrupt is not defined yet, it's availabe for custom functions. You can define this interrupt by modifing interrupt table refer to the list of supported interrupts and global memory table."
Т.е. программа не нашла соответствующее прерывание в таблице прерываний и предлагает пользователю самому добавить его туда. Я не стал бы вас беспокоить, если бы программа отказывалась запускаться под этим отладчиком. Дело в том, что откомпилированная программа (этим же ассемблером (может в этом вся проблем?)) так же отказывается работать.
Помогите, пожалуйста, разобраться с этой проблемой. Текст программы, чтобы вам не пришлось искать его самим привожу далее.
; Windows XP SP1; Intel Pentium 4 CPU 1.80 GHz
С уважением, Попов Максим.
Приложение:
Отправлен: 06.11.2005, 14:22
Вопрос задал: Drow (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Стас
Здравствуйте, Drow!
В ДОС 27h прерывание есть и работает нормально.
Вероятнее всего ваш эмулятор по какойто причине не поддерживает его.
Хотя это странно. Документированное, стандартное прерывание...
Решения 2:
1) меняй эмулятор
2) меняй способ остаться резидентом - выделяешь память перемещаешь код туда, либо изменяешь размер текущего блока, меняешь в PSP сегмент программы, чтобы DOS не освободила его сама.
Ответ отправил: Стас (статус: Специалист)
Отправлен: 07.11.2005, 01:19