|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.12.2013, 22:57 | #1 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 36
|
(TASM) Вывод системного времени
Здравствуйте.
Изначально задание звучит так: написать резидентную программу, которая после двойного нажатия клавиши SHIFT выводит системное время. Ассемблером раньше заниматься не приходилось и честно на данный момент желания постигать его нет. На основе разных примеров и учебника сделал программу, которая реализует часть заложенных функций, но не все правильно. Проблемы: 1. Резидентной программу сделать не получается, не могу понять как должна работать такая программа, если я её запускаю из Windows. Примеры резидентных программ сути не прояснили. 2. Непонятно как отлавливать нажатие SHIFT, так как прочитать можно только его текущий статус, но не отловить сам факт нажатия. Пока заменил на нажатие Enter. 3. При выводе строки после неё выводится много пустого пространства, а если пробовать объявлять строку в других местах, то куча мусора. 4. Код получается страшный, часть где сохраняется компонента времени так и просится в процедуру, но попытка моя успехом не увенчалась. Вот и код: Код:
|
19.12.2013, 14:36 | #2 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
1. Резидентные программы dos не будут работать под windows. Придется ставить эмулятор (dosbox?).
2. Нужно перехватывать девятое прерывание (irq от клавиатуры). Оно будет вызываться при нажатии и отпускании любой клавиши, в том числе и shift. 3. У тебя в строке 8 знаков $, и все их ты перезаписываешь временем. Нужен еще один, девятый, для обозначения конца строки. |
19.12.2013, 15:35 | #3 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 36
|
Son Of Pain, Спасибо еще раз.
Стал копаться дальше сам. Вот что нашел: http://pascal.sources.ru/asm/faq/#tsr - как писать резидентную программу. Приводятся примеры для DOS и Windows 9X (для более поздних нет). Там же можно найти ответы на многие интересные вопросы. Пока пришло решение ставить DOSBox и писать резидент под DOS. Вот нашел специальную сборку TASM+DOSBox для win7, win8: http://techapple.net/2013/01/tasm-wi...gle-installer/ |
19.12.2013, 15:55 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Так стоп. Зачем Вам написание резидентных программ под TurboPascal, если у Вас стоит задача написать резидента на Ассеблере?!
(да, в турбоПаскаль это можно сделать, я писал в своё время резиденты, но к Ассемблеру это прямого отношения не имеет) NB. Рекомендую Вам взять готовую, рабочую программу на Ассемблере с резидентной частью (и перехватчиком клавиатуры) и доработать её под свои нужды. Это будет самое простое решение вашей проблемы. |
19.12.2013, 18:09 | #5 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
На счет резидента не помогу, но на ХР консольку писал, правда под МАSМ. Выдавало сис.время, очищало экран, удаляло/создавало (не помню точно) каталог. Могу скинуть.
Если помог, проси поставить минус. Будь оригинален!
|
19.12.2013, 20:24 | #6 | |
Пользователь
Регистрация: 10.12.2011
Сообщений: 36
|
Цитата:
|
|
19.12.2013, 20:27 | #7 | |
Пользователь
Регистрация: 10.12.2011
Сообщений: 36
|
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
изменения системного времени в EFI | Alexandr17-10 | Компьютерное железо | 3 | 29.09.2013 12:20 |
Вывод системного времени на экран через каждые 5 секунд | royal_king | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 03.11.2011 16:14 |
чтение/установка системного времени | blackbanny | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 25.10.2009 17:00 |
постоянное получение системного времени в ячейке | iamaxl | Microsoft Office Excel | 2 | 02.07.2009 20:34 |
получение системного времени | Alex_Pro | Общие вопросы C/C++ | 1 | 21.05.2008 20:31 |