8 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 32
1

Резидент. Борьба с мусором

18.03.2013, 01:15. Показов 750. Ответов 8
Метки нет (Все метки)

Пишу свой резидент... У меня к примеру выводится дамп по ctrl\s, у кого-то по этой комбинации содержимое диска С. Но при этом когда ты нажимаешь комбинацию ctrl\s, то после нажатия Enter, пишел "illegal command !!!!!!". Кол-во "!!" в зависимости от того, сколько раз нажата клавиша ctrl\s. Ну надеюсь кто-то сталкивался с подобным, хотя звучит запутано C этим можно что-то сделать? Просто у меня и так примут, но стало интересно можно ли такое решить, а то как-то некрасиво. Гугл не помогает, у самого мысли на этот счет туманные.

Т.е сейчас я нажал ctrl\s к примеру один раз(При этом выводится содержание диска, а в конце списка"!!"), потом нажимаю Enter, и пишет "illegal command !!". А хочется чтобы он молча вернулся в командную строку. Конечно можно нажать esc, тогда перед !!, будет "\", и возвращение будет "молча". Но может есть другой способ?

Если не понятно, то могу прикрепить код однокурсника, или исполняемый файл.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2013, 01:15
Ответы с готовыми решениями:

Резидент, который устанавливает пароль на каталог, указанный в командной строке
Здравствуйте! Плиз, помогите разобраться с прогой: нужно составить резидентную прогу, которая...

Резидент
Сейчас разбираюсь с резидентом, вот код .286 CSEG segment assume cs:CSEG, ds:CSEG, es:CSEG,...

Резидент глючит
Почему резидент не работает? Я написал код: cli mov ax,0 mov es,ax mov ax,seg intproc mov...

Резидент не создает файл
Здравствуйте! Вот код резидента. Проблема в том, что резидент по нажатию F12 не создает файл. ...

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
Вложения
Тип файла: txt tasm.txt (2.3 Кб, 13 просмотров)
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
18.03.2013, 21:29 4
woklex, У меня нет тасма, скиньте executable файл.
0
8 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 32
19.03.2013, 00:13  [ТС] 5
exe файл
0
6678 / 2661 / 366
Регистрация: 17.02.2013
Сообщений: 3,908
19.03.2013, 05:42 6
Цитата Сообщение от woklex Посмотреть сообщение
К примеру программа моего одногрупника. Возможно код не самый лучший, но дело именно в символах, это у всех так. Возможно проблема даже не решаема, хотя я думаю что можно добавлять "/" после "!!". Тогда будет без ошибок "illegal command", но не знаю оптимальный ли это вариант. Вообщем лучше один раз увидеть, скомпилировав, и нажав ctrl\s во время выполнения программы.
А как можно нажать Ctrl-S во время исполнения программы твоего одногрупника, ежели она после запуска немедля завершается ?

И, кстати, она будет работать ровно до тех пор, пока после ее запуска не будет запущена следующая программа. При этом запуске произойдет крах MS-DOS. А все потому, что при постановке кода в резидент он этот код отсекает не по его концу, а по началу. Он в INT 27h передает адрес точки входа в обработчик прерывания, а надо адрес отсечения резидентного кода - адрес, который разделяет код, что должен остаться резидентным и что не должен. Ясно, что его обработчик прерывания проживет ровно до тех пор пока поверх него не будет навален код следующей запускаемой программы.

Кстати, некоторые места программы твоего одногрупника можно в мраморе высекать. Так встречается такая ахинея, что не понятно где вы такую траву берете.
0
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 211
19.03.2013, 08:25 7
Трава что надо, это точно. У меня после запуска из командной строки программа уходит в бесконечный цикл без шансов на выход. Сколько я на esc и enter ни жал в соответствии с первым постом - выхода не добился. Кстати, означенных выше "!!!!!" и "/" я тоже не заметил. Только вот следующее:
☻Й☻Ц☻г☻░☻╜☻╩☻╫☻ф☻ .☻;☻H☻U☻b☻o☻|☻Й☻Ц☻г☻░☻╜☻╩☻╫☻ф☻ INTEL
Не знаю что это, но на содержание диска c: не похоже.
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
6678 / 2661 / 366
Регистрация: 17.02.2013
Сообщений: 3,908
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
и спроси правильное ли значение DX передается в 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2013, 23:08

Резидент, который при ctrl+s записывает информацию с экрана в файл
Приветствую! Необходимо написать резидент, который при ctrl+s записывает информацию с экрана в...

Резидент, который выводит на экран время работы запускаемых программ
Задание:На языке ассемблер написать резидентную программу, которая бы обрабатывала int 21 h ,...

Резидент (приведение к верх. регистру)
Здравствуйте! Тут программа - резидент для приведения определенных рус. букв к верх. регистру....

Не получается удалить резидент из памяти
Вообщем вот код: .286 CSEG segment assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG org 100h Start:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.