8 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 32
|
|
1 | |
Резидент. Борьба с мусором18.03.2013, 01:15. Показов 971. Ответов 8
Метки нет (Все метки)
Пишу свой резидент... У меня к примеру выводится дамп по ctrl\s, у кого-то по этой комбинации содержимое диска С. Но при этом когда ты нажимаешь комбинацию ctrl\s, то после нажатия Enter, пишел "illegal command !!!!!!". Кол-во "!!" в зависимости от того, сколько раз нажата клавиша ctrl\s. Ну надеюсь кто-то сталкивался с подобным, хотя звучит запутано C этим можно что-то сделать? Просто у меня и так примут, но стало интересно можно ли такое решить, а то как-то некрасиво. Гугл не помогает, у самого мысли на этот счет туманные.
Т.е сейчас я нажал ctrl\s к примеру один раз(При этом выводится содержание диска, а в конце списка"!!"), потом нажимаю Enter, и пишет "illegal command !!". А хочется чтобы он молча вернулся в командную строку. Конечно можно нажать esc, тогда перед !!, будет "\", и возвращение будет "молча". Но может есть другой способ? Если не понятно, то могу прикрепить код однокурсника, или исполняемый файл.
0
|
18.03.2013, 01:15 | |
Ответы с готовыми решениями:
8
Резидент, который устанавливает пароль на каталог, указанный в командной строке Резидент Резидент глючит Резидент не создает файл |
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
|
|
18.03.2013, 17:40 | 2 |
woklex, Не спрашивайте - прикрепляйте сразу. И еще желательно обозначить проблемные куски кода.
0
|
8 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 32
|
|
18.03.2013, 19:17 [ТС] | 3 |
К примеру программа моего одногрупника. Возможно код не самый лучший, но дело именно в символах, это у всех так. Возможно проблема даже не решаема, хотя я думаю что можно добавлять "/" после "!!". Тогда будет без ошибок "illegal command", но не знаю оптимальный ли это вариант. Вообщем лучше один раз увидеть, скомпилировав, и нажав ctrl\s во время выполнения программы.
0
|
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
|
|
18.03.2013, 21:29 | 4 |
woklex, У меня нет тасма, скиньте executable файл.
0
|
6767 / 2737 / 384
Регистрация: 17.02.2013
Сообщений: 4,045
|
|
19.03.2013, 05:42 | 6 |
А как можно нажать Ctrl-S во время исполнения программы твоего одногрупника, ежели она после запуска немедля завершается ?
И, кстати, она будет работать ровно до тех пор, пока после ее запуска не будет запущена следующая программа. При этом запуске произойдет крах MS-DOS. А все потому, что при постановке кода в резидент он этот код отсекает не по его концу, а по началу. Он в INT 27h передает адрес точки входа в обработчик прерывания, а надо адрес отсечения резидентного кода - адрес, который разделяет код, что должен остаться резидентным и что не должен. Ясно, что его обработчик прерывания проживет ровно до тех пор пока поверх него не будет навален код следующей запускаемой программы. Кстати, некоторые места программы твоего одногрупника можно в мраморе высекать. Так встречается такая ахинея, что не понятно где вы такую траву берете.
0
|
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
|
|
19.03.2013, 08:25 | 7 |
Трава что надо, это точно. У меня после запуска из командной строки программа уходит в бесконечный цикл без шансов на выход. Сколько я на esc и enter ни жал в соответствии с первым постом - выхода не добился. Кстати, означенных выше "!!!!!" и "/" я тоже не заметил. Только вот следующее:
0
|
8 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 32
|
|
19.03.2013, 22:32 [ТС] | 8 |
Хм. У меня в досбокс запускается. В принципе это уже сданная и защищенная работа. Ну вот тогда к примеру скрин этой проги.
http://dl.dropbox.com/u/207573... 9%3A05.png Или прога которая выводит что-то из видеопамяти, написано совсем в другом стиле. Может она более корректно работает. http://dl.dropbox.com/u/2075731/VIDEO.EXE Может у меня более правильно будет в итоге, потому как я примеры беру из "Ассемблер - это просто" и из нета. Изначально хотел чужое под свою задачу сделать, но понял что легче писать с нуля. Наверно получится ужасно, если интересен мой результат, то кину в четверг свой результат.
0
|
6767 / 2737 / 384
Регистрация: 17.02.2013
Сообщений: 4,045
|
|
19.03.2013, 23:08 | 9 |
Ты спрашиваешь почему у тебя прога глючит. Тебе говорят где ошибка.
Ты возражаешь - но в досбокс она ведь запускается. Определись уже - она запускается и глючит или запускается и работает ? Покажи преподавателю вот это : Код
mov ax, 2516h mov dx, seg custom mov ds, dx mov dx, offset custom int 21h sti mov ax, 4C01h int 27h Я уже не говорю о том, что твоя прога начинает работу с исполнения целой кучи 0000 add [bx+si],al 0000 add [bx+si],al 0000 add [bx+si],al 0000 add [bx+si],al 0000 add [bx+si],al 0000 add [bx+si],al ... и я не уверен, что при старте программы si имеет какое-то определенное значение.
0
|
19.03.2013, 23:08 | |
19.03.2013, 23:08 | |
Помогаю со студенческими работами здесь
9
Резидент, который при ctrl+s записывает информацию с экрана в файл Резидент, который выводит на экран время работы запускаемых программ Резидент (приведение к верх. регистру) Не получается удалить резидент из памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |