Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 274
от 24.05.2002, 16:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 229 Отправлено ответов: 588 Активность: 256.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
AllAddIn Статус: Опытный Общий рейтинг: 120.54 [Подробней >>] |
Blackeye Статус: Опытный Общий рейтинг: 128.89 URL: Delphi, my programms... [Подробней >>] |
Shal Статус: Начальный Общий рейтинг: 108.57 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 134.02 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 149.1 [Подробней >>] |
DiGiT Статус: Профессиональный Общий рейтинг: 153.61 [Подробней >>] |
Painbringer Статус: Профессиональный Общий рейтинг: 157.26 URL: нечто наподобие домашней страницы [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 137.64 URL: Пристанище неодинокого программиста [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 163.72 [Подробней >>] |
Тorax Статус: Начальный Общий рейтинг: 114.28 [Подробней >>] |
BlackBeast Статус: Начальный Общий рейтинг: 104.76 [Подробней >>] |
Dzik Статус: Доверительный Общий рейтинг: 114.54 [Подробней >>] |
Dron Статус: Профессиональный Общий рейтинг: 155.29 URL: Операционная система с нуля! [Подробней >>] |
Gibbel Статус: Доверительный Общий рейтинг: 110.36 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 163.01 [Подробней >>] |
Beeblebrox Статус: Опытный Общий рейтинг: 135 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Zloy Статус: Начальный Общий рейтинг: 104.68 [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 160.88 Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 202. Как перезагрузить компьютер из ДОСА Программно? Какая функция для этого есть, или прерывания или i/o... (ответов: 8)
Вопрос № 203. Привет! Я уже понял, что на мой вопрос по поводу вывода прог, перехвативших вектора, почти все за... (ответов: 6)
Вопрос № 204. Здраствуйте Эксперты. Помогите пожайлуста реализовать такую задачу. Ввести с клавиатуры последовател... (ответов: 7)
Вопрос № 205. Здраствуйте эксперты! Предположим, что я написал прогу в которой можно перемешать по экрану квадрат.... (ответов: 2)
Вопрос № 206. Здравствуйте! Где можно взять исходник на программу подобную языковой панели Offica XP или индикатор... (ответов: 2)
Вопрос № 208. Как очистить буфер клавиатуры под ДОСом ? Если нетрудно, дайте исходник на сях или асме.. Спасибо.... (ответов: 4)
Вопросов: 6, ответов: 29
Вопрос № 202 |
Как перезагрузить компьютер из ДОСА Программно? Какая функция для этого есть, или прерывания или i/o порт?
Вопрос отправлен: 19.05.2002, 20:44
Отправитель: Олег
[Следующий вопрос >>] [Список вопросов]
Отвечает AllAddIn
Доброе время суток, Олег!
INT 18H
Ответ отправлен: 20.05.2002, 15:43
Отправитель: AllAddIn
Отвечает Blackeye
Приветствую Вас, Олег!
МОжжно использовать int 19h, чтобы перезагрузить ДОС - правда под Виндой такое может не пройдет!
Ответ отправлен: 21.05.2002, 20:18
Отправитель: Blackeye
Отвечает Shal
Приветствую Вас, Олег!
Вроде как int 19h.
Приложение:
Ответ отправлен: 20.05.2002, 17:53
Отправитель: Shal
Отвечает baldr
Добрый день, Олег!
Я пользуюсь [см. приложение]. Там тоже не идеал, но все же лучше, чем у INT 14h !
Даже винда (98SE) задумывается, офигев! Правда, потом выходит из комы...
Если кратко, то здесь просто передается управление на ту часть в BIOS, которая и
отвечает за горячую перезагрузку.
Приложение:
Ответ отправлен: 20.05.2002, 00:06
Отправитель: baldr
Отвечает Ayl
Добрый день, Олег!
db 0eah
dw 0fff0h, 0f000h
Соответственно, команда jmp far F000:FFF0
По этому адресу находится процедура BIOS старта компа.
Ответ отправлен: 20.05.2002, 00:56
Отправитель: Ayl
Отвечает DiGiT
Доброе время суток, Олег!
Знаешь знаю по опыту точно перегружает
mov eax, cr0
or eax, 1
mov cr0, eax
Ответ отправлен: 20.05.2002, 08:37
Отправитель: DiGiT
Отвечает Painbringer
Здравствуйте, Олег!
int 19h
Ответ отправлен: 20.05.2002, 11:50
Отправитель: Painbringer
Отвечает Артём Шегеда
Приветствую Вас, Олег!
int 19h - перезагрузка DOS. Может не работать под Windows.
Ответ отправлен: 20.05.2002, 14:01
Отправитель: Артём Шегеда
Вопрос № 203 |
Привет!
Я уже понял, что на мой вопрос по поводу вывода прог, перехвативших вектора, почти
все забили... :( Ответил только Gibbel... Так вот: я тоже, когда мне задали такой вопрос,
не задумываясь, ответил почти так же, что надо знать исходные, а потом сравнивать... Но потом,
задумался: а как же, например, выводит список Dos Navigator в своих встроенных утилитах? Он
ведь выводит и проги, которые были запущены и до него! А вот Volcov Commander или Release еще
и выружать эти проги могет! Да и любая прога, призводящая тестирование компа, выведет эти
названия! Я сначала подумал, что это DOS, если прерывание перехватываешь через ф-ю 25h,
запоминает эти проги, но оказалось, что выводят не только такие...
В общем, спрошу еще раз: объясните, кто знает - как получить список векторов прерываний,
перехваченных программами?
И еще вопрос: народ, у вас ответы не пропадают? Я некоторые свои ответы не нахожу в рассылке!
Обидно отвечать зря! :( Написал нашему админу, а он что-то не отвечает...
Вопрос отправлен: 20.05.2002, 00:08
Отправитель: baldr (baldr@pisem.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, baldr!
Значит, есть такое дело... Если, конечно, все они юзают мультиплексор 2Fh (или AMIS 2Dh) В этом случае, 04h-ф-ция 2Dh прерывания в DS:BX возвращает адрес списка прерываний, перехваченных данной прогой (в ah - ее идентификатор)
НО (!)
Сам понимаешь, не все проги юзят мультиплексор, поэтому если ты будешь перехватывать обычной 25h ф-цией, то никакая суперутилита ничего сказать не сможет (конечно, если ты запустился до ЗАПОМИНАНИЯ ей таблицы векторов, такие тоже есть моменты)
Ответ отправлен: 20.05.2002, 22:18
Отправитель: Broken Sword
Отвечает Тorax
Доброе время суток, baldr!
Вот линк. Надеюсь поможет:
http://www.rusdoc.ru/cgi/view.pl?275
Torax
Ответ отправлен: 22.05.2002, 19:42
Отправитель: Тorax
Отвечает BlackBeast
Здравствуйте, baldr!
Все не просто, а очень просто :) Ищем все проги в памяти (с помощью MCB) получаем начало и конец этих блоков в 32 форме т.е. le=segm*16+offs. Далее сканируем таблицу векторов прерываний с 0 по 255, преобразуем тек. вектор по тому же принципу и если le вектора попадает в диапазон памяти выделенный проге, то ... она его и переопределила. Именно так и работает DOS Navigator v 1.50. Исходник соответствующего модуля, у тебя в ящике, где писем нет :)
Best regards. BlackBeast
Ответ отправлен: 20.05.2002, 00:47
Отправитель: BlackBeast
Отвечает Dzik
Доброе время суток, baldr!
По поводу ответов: пропадают и очень часто!
Ответ отправлен: 20.05.2002, 10:41
Отправитель: Dzik
Отвечает Dron
Приветствую Вас, baldr!
По поводу прерываний - уже ответил...
составь список резидентов и проведи паралели с таблицей векторов прерываний.
Ответ отправлен: 20.05.2002, 11:06
Отправитель: Dron
Отвечает Gibbel
Добрый день, baldr!
1. Commanderы там разные и утилиты соответствующие смотрят по тому, в адресное пространство какой программы уходит прерывание.
1.1. В прошлый раз ты спрашивал, _как_ _определить_ _какие_ _перерывания_ _были_ _перехвачены_, но не _как_ _определить_ _кем_ _они_ перехвачены_.
2. Выгрузить программу, перехватившую прерывание возможно только если знать, куда оно ужодило до нее... Соответственно, тот же самый Volcov не выгрузит тебе резидент, запущенный до загрузки самого Volcovа...
Ответ отправлен: 20.05.2002, 12:52
Отправитель: Gibbel
Вопрос № 204 |
Здраствуйте Эксперты.
Помогите пожайлуста реализовать такую задачу.
Ввести с клавиатуры последовательность латинских букв верхнего регистра и перевести их в буквы нижнего регистра с выдачей результата на экран.
Заранее благодарен...
Вопрос отправлен: 20.05.2002, 09:33
Отправитель: Владимир
[Следующий вопрос >>] [Список вопросов]
Отвечает Shal
Доброе время суток, Владимир!
Приложение:
Ответ отправлен: 20.05.2002, 17:48
Отправитель: Shal
Отвечает masquer
Добрый день, Владимир!
Для подсказки - разница между верхним регистром и нижним 20h
Ответ отправлен: 21.05.2002, 12:15
Отправитель: masquer
Отвечает Beeblebrox
Доброе время суток, Владимир!
На самом деле твой вопрос звучит так: "Люди, сделайте за меня мою лабораторную работу/курсовую/диплом/кандидатскую/докторскую".
1.Ввод символа с клавиатуры:
start:
mov ah,0
int 16h
; al=char
2.Преобразование в нижний регистр без проверки на правильность аргумента:
add al,20h
3.Вывод al на экран без возможности редиректа:
int 29h
4. "Последовательность букв" означает, что нужен цикл (после пункта 3 команда jmp start). Выход, например, по Esc, то есть между первым и вторым пунктом вставить:
cmp al,1Bh
jne contin
mov ah,4Ch
int 21h
contin:
Итого 16 байт :)
Ответ отправлен: 20.05.2002, 10:39
Отправитель: Beeblebrox
Отвечает Ayl
Доброе время суток, Владимир!
А в чем проблема? Вопроса-то как такового нет, поэтому предполагаю, что это просьба написать программу. А этим, как записано в правилах, здесь не занимаются.
Могу предложить несколько рекомендаций.
1. Ввести последовательность букв. Вариантов - куча. Можно использовать:
а). Посимвольный ввод без эха с помощью:
- прерывания 16h (функции 0 или 10h)
- прерывания 21h (функции 6, 7, 8)
б). Посимвольный ввод с эхом:
- прерывание 21h (функция 1)
в). Буферизированный ввод:
- прерывание 21h (функция 0ah)
2. Преобразовать из верхнего в нижний регистр - для диапазона кодов 41h - 5ah нужно просто прибавить значение 20h
3. Вывести на экран - опять множество вариантов:
а). Посимвольный вывод:
- прерывание 29h
- прерывание 21h (функции 2 и 40h)
- прерывание 10h (функции 9 и 0ah)
б). Строковый вывод:
- прерывание 21h (функции 9 и 40h)
Все.
Ответ отправлен: 20.05.2002, 12:09
Отправитель: Ayl
Отвечает BlackBeast
Приветствую Вас, Владимир!
Предположим введенная строка - inbuffer
Выходная строка - outbuffer
datalen - длина введенных данных
......
mov cx, datalen
mov si, offset inbuffer
mov di, offset outbuffer
l1:
lodsb
add al, 20h ; собственно перевод
stosb
loop l1
.......
Ну а на экран можно вывести используя 21h прерывание или 10h, и т.п.
Ответ отправлен: 20.05.2002, 14:16
Отправитель: BlackBeast
Отвечает Zloy
Приветствую Вас, Владимир!
Лови мысль:
Заглавные буквы (A-Z) имеют коды 41h-5Ah, строчные (a-z) 61h-7Ah. Единственная разница в том, что 5 бит 0 для заглавных букв и 1 для строчных:
№ бита 76543210
A 01000001
a 01100001
Ответ отправлен: 20.05.2002, 14:21
Отправитель: Zloy
Отвечает Тorax
Здравствуйте, Владимир!
Считываешь побуквенно, а потом к скан-коду додаешь 20h. Ну а выводить символ я надеюсь ты умеешь.
Torax
Ответ отправлен: 22.05.2002, 01:43
Отправитель: Тorax
Вопрос № 205 |
Здраствуйте эксперты!
Предположим, что я написал прогу в которой можно перемешать по экрану квадрат. Как сделать так, чтоб был еше один квадрат который работал незаваисемо от моего квадрата, т.е. при перемешении своего другой преремешался автономно.
С уважением...!
Вопрос отправлен: 20.05.2002, 11:59
Отправитель: kuper
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, kuper!
Привязваешь второй квадрат к какому-нибудь событию, таймеру, например.
Ответ отправлен: 21.05.2002, 12:29
Отправитель: masquer
Отвечает Ayl
Здравствуйте, kuper!
Ну а что мешает? Свой квадрат обрабатывай в зависимости от нажатий клавиш, а второй пусть перемещается случайным образом. Т.е. у тебя в проге будет два куска кода, отвечающие за квадраты. В первом ты обрабатываешь нажатия клавиш и перемещаешь свой квадрат, а во втором случайным образом перемещаешь второй квадрат.
Ответ отправлен: 20.05.2002, 12:13
Отправитель: Ayl
Вопрос № 206 |
Здравствуйте! Где можно взять исходник на программу подобную языковой панели Offica XP или индикатора языка internat.exe. Можно ли взять где-нибудь сырье на программы работающие с языком (или раскладкой клавиатуры)?
Заранее благодарю за ответы.
Вопрос отправлен: 20.05.2002, 15:13
Отправитель: Yerba (dek3@mail.kz)
[Следующий вопрос >>] [Список вопросов]
Отвечает Blackeye
Приветствую Вас, Yerba!
Как говориться если гора не дет к Магомету, то Магомет идет к горе. Вот так и тут. Напиши свою программу которая бы переключала язык, юзай GetKeyboardLayout GetKeyboardLayoutList
GetKeyboardLayoutName
GetKeyboardState
из WinAPI и все у тебя получиться :)
Ответ отправлен: 21.05.2002, 20:18
Отправитель: Blackeye
Отвечает masquer
Приветствую Вас, Yerba!
Ищи в мсдн, можно дизассемблировать internat.exe и посмотреть как он работает - ну это если очень надо.
Ответ отправлен: 21.05.2002, 12:30
Отправитель: masquer
Вопрос № 208 |
Как очистить буфер клавиатуры под ДОСом ?
Если нетрудно, дайте исходник на сях или асме..
Спасибо.
Вопрос отправлен: 20.05.2002, 15:59
Отправитель: Рин
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Рин!
Варианты:
1. Использовать функцию 0ch прерывания 21h. AL = 07h
2. В цикле читать из буфера до его очистки. См. приложение
3. Приравнять указатели буфера клавиатуры. См. приложение
Приложение:
Ответ отправлен: 20.05.2002, 16:18
Отправитель: Ayl
Отвечает Sensey
Здравствуйте, Рин!
По адресу 0000:041Аh и 0000:041Сh
находятся голова и хвост буфера клавы. Уравняй их.
Ответ отправлен: 20.05.2002, 16:33
Отправитель: Sensey
Отвечает Zloy
Доброе время суток, Рин!
Вот, что по этому поводу написано у Джордейна:
;------- выравниваем значения указателеий на хвост и голову буфера клавиатуры
CLI
SUB AX, AX
MOV ES, AX
MOV AL, ES:[41Ah]
MOV ES:[41Ch], AL
STI
Ответ отправлен: 20.05.2002, 19:13
Отправитель: Zloy
Отвечает Тorax
Здравствуйте, Рин!
Кинь e-mail на torax@dotes.west.energy.gov.ua. У меня есть статейка про организацию буфера клавиатуры.
Torax
Ответ отправлен: 22.05.2002, 01:42
Отправитель: Тorax
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (56) C / C++ (29) Perl (9) Delphi (19) Pascal (31) Basic / VBA (13) Java / JavaScript (9) PHP (7) MySQL / MSSQL (6) |
Пользователю Windows 95/98/Me (52) Windows NT/2000/XP (37) "Железо" (43) Поиск информации (19) |
Администратору Windows NT/2000/XP (13) Linux / Unix (7) |
Юристу Гражданское право (15) Уголовное право (3) Семейное право (6) Трудовое право (8) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||