Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 284
от 11.11.2005, 18:24

Администратор:Калашников О.А.
В рассылке:Подписчиков: 271, Экспертов: 27
В номере:Вопросов: 2, Ответов: 6


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное