Автор
|
Тема: Прав ли я ?
|
Ilyia |
опубликован 23-01-2002 10:48 MSK
Здравствуйте. Вот допустим надо написать маленькую программку, которая при попытке удалить файл или каталог запрашивала бы пароль. Это так, к примеру. Так вот, прав ли я, что хочу воспользоваться для этой цели функцией 13Н прерывания int21H ? То бишь я должен переделать на время действия этой программы стандартный обработчик 13Н и заменить его на свой, так ? Да, и ещё. В стеке сохранить ведь надо ds, dx, cx и флаги, да ? А ещё ? А после завершения моего обработчика вытолкнуть их оттуда ? Прав ли я ? Thanks.
|
rivitna
|
опубликован 23-01-2002 11:33 MSK
> Так вот, прав ли я, что хочу > воспользоваться для этой цели > функцией 13Н прерывания int21HЭта функция была в первой версии DOS, сейчас ее редко используют или не используют вовсе. Но в принципе может контролировать и эту функцию. Вообще же тебе надо обрабатывать следующие функции: ah = 13h - удаление файла (FCB) ah = 41h - удаление файла ah = 3Ah - удаление каталога ax = 713Ah - удалить каталог (LFN) ax = 7141h - удалить файл (LFN) > То бишь я должен переделать на время > действия этой программы стандартный > обработчик 13Н и заменить его на > свой, так ? Да, плюс вышенаписанные функции > В стеке сохранить ведь надо ds, dx, cx и > флаги, да ? А ещё ? > А после завершения моего обработчика > вытолкнуть их оттуда ? В обработчике надо сохранять все изменяемые регистры, кроме регистра флагов. За сохранение его содержимого и восстановление отвечают int и iret Только может быть проблема со стеком внутри твоего обработчика. Можно понадеяться на авось, а можно в обработчике зарезервировать память под собственный стек и работать с ним. > Прав ли я ? В принципе, да!
|
7in
|
опубликован 23-01-2002 23:43 MSK
Я ж тебе присылал работающую программу.... Добавь функции, которые rivitna указал и сделай вывод вопроса на экран покрасивее.... |
Ilyia
|
опубликован 24-01-2002 01:17 MSK
Ну да, кому то легко говорить... Твоя программа конечно же вешает машину в определённый момент.. Что же они, эти две программы действительно так похожи, чтобы всё сводилось к тому, чтобы что-то просто добавить ? Ну похожи они разве только тем, что эта новая программа тоже вешает всё на свете, как я только ввожу команду...( попробовал её сегодня воплотить, блин ) но это по моей вине... Я приписываю это к своей безграмотности. |
NOPIK
|
опубликован 24-01-2002 04:44 MSK
Хм... А как и куда вводится команда? Не используется ли часом для этого опять 21-е прерывание? |
rivitna
|
опубликован 24-01-2002 07:39 MSK
Если программка виснет, то это скорее из-за того, что в обработчике используются другие программные прерывания или не хватает стека. В этом случае на одних машинах программа может работать, а на других - виснет, или доводит компьютер до рестарта |
rivitna
|
опубликован 24-01-2002 07:42 MSK
2 Ilyia: Ты изъясняйся конкретнее, или напиши текст всего обработчика |
Ilyia
|
опубликован 24-01-2002 17:24 MSK
Не , вы извините, но зря я затеял этот топик. Мне пока не под силу сделать эту прогу. Даже если вы, мне объясните, как говорится, где и чё писать, я всё равно пока вряд ли пойму. Надо мне вначале разобраться с простейшими резидентнами, а я,дурак,хочу чтоб всё сразу... Так что извиняйте, но в любом случае спасибо. |
NOPIK
|
опубликован 24-01-2002 17:45 MSK
Дело тут не в резидентах, а в исполнении программ, прерываниях. Именно на работу процессора и программ стоит налегать... Тогда станет ясна роль прерываний в этом процессе и особенности их использования. |
StormKnight
|
опубликован 26-01-2002 13:42 MSK
Кстати, мне попадались проги, которые для работы с дисками использовали BIOS Int13h. |
StormKnight
|
опубликован 26-01-2002 13:48 MSK
Да, и ещё - для начинающих програмеров на ASM есть две толковые штуки: 1) TechHelp - Толковый справочник по прерываниям, функциям BIOS&DOS и т.д. 2) VirTech 1.0 - дока по резидентам и другим полезным вещам.Если надо - пришли мне на StormKnight@tut.by свой E-Mail, я их тебе сброшу... Привет из Минска! StormKnight |
Ilyia
|
опубликован 26-01-2002 18:08 MSK
Привет из Краснодара ! Честно говоря, я не думал, что так трудно узнать email. Для этого есть иконка со знаком вопроса. TechHelp у меня есть ( респект 7in`у ), вещь хорошая, а вот второе... буду благодарен если пришлёшь, может инте ресное там будет, я сейчас собираю всё, что хоть как-то связано с tsr. |
7in
|
опубликован 27-01-2002 21:49 MSK
2 StormKnight: Мне тоже пришли на eujin@mailru.com :) |