Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 105
от 06.04.2005, 17:20

Администратор:Калашников О.А.
В номере:Вопросов: 6, Ответов: 13


Вопрос № 19056: Вопрос ? 18686: Здрасти! Хочу вывести строку путем прямого отображения в видеобуфер Не понимаю как это сделать. В коде указал смещение строки, которую нужно вывести(DS:SI) В DX координаты. Я так понял что здесь указывается расположение куда надо выве...
Вопрос № 19057: Hi, all ! Сделал резидент, в котором при нажатии Alt + L инфа пишется в файл и затем сразу же выгружается из памяти. Но. Хочу чтобы он успел вывести строку что мол выгрузился из памяти. После вывода такой строки dos виснет. Если убрать код вы...
Вопрос № 19059: ПОхоже я забыл передать управление уже назад поставленного оригинального обработчика 09 прерывания после вывода строки. Клава дальше заработала, но если заново загружать резидент, при 2 повторной попытке загрузки и нажатия alt+l система рушится...?...
Вопрос № 19067: Здраствуйте. Вот я хочу сделать свой интерператор как Бейсик но со своими коммандами . Но вопрос вот в чем как сделать свой файл с рассширением .exe на своем интерператоре. Спасибо за раннее. ...
Вопрос № 19068: Привет! Работает два процесса, первый передает второму данные (приблизительно 6 байт) при наступлении определенного события, задача второго процесса получить данные и обработать их. Второй процесс я уведомляю при помощи события, но как в этот...
Вопрос № 19070: Уважаемые эксперты не могли бы мне скинуть пример вируса под WindowsNT E-mail Dark_Skies@mail.ru Спасибо...

Вопрос № 19056
Вопрос ? 18686: Здрасти! Хочу вывести строку путем прямого отображения в видеобуфер Не понимаю как это сделать. В коде указал смещение строки, которую нужно вывести(DS:SI) В DX координаты. Я так понял что здесь указывается расположение куда надо выве...
Доброе время суток
А я по этому вопросу попробовал все ответы и не один не работает.
Ставишь (.386) для (push 0b800h) - assembler выдает ошибку размерности операндов
Только когда сделал
mov ax,0b800h
mov es,ax
заработало
Кто знает что это ?
Заранее спасибо за ответы
Отправлен: 01.04.2005, 04:40
Вопрос задал: Slava_ (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Стас
Здравствуйте, Slava_!
DX не при чем вовсе. "Координаты" строки задаются в DS:DI по формуле DS=B800, DI=(Y*80+X)*2.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 02.04.2005, 01:37
Оценка за ответ: 3
Комментарий оценки:
Спасибо конечно.
Но желательно бы что бы вы дочитали вопрос до конца.Это был не мой вопрос. Я его обсуждаю. (хотя насчет DX я с вами полностью согласен).

Отвечает: Евгений Иванов
Здравствуйте, Slava_!
VERSION T400
IDEAL
P586
Model use16 TINY,Normal StdCall
SMART
Locals @@
Segment S byte public 'code' use16
Assume CS:S,DS:S
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 02.04.2005, 12:05

Отвечает: Boriss
Здравствуйте, Slava_!
Попробуй так
.data
VideoBuf dd 0B800h:0
.code
...
les di, Videobuf
mov ah, 1eh
lea si, Str
cld
mov cx, Str_len
1:
lodsb
stosw
loop @1
...
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 02.04.2005, 17:05


Вопрос № 19057
Hi, all !
Сделал резидент, в котором при нажатии Alt + L инфа пишется в файл и затем сразу же выгружается из памяти.
Но. Хочу чтобы он успел вывести строку что мол выгрузился из памяти. После вывода такой строки dos виснет. Если убрать код вывода строки(все, что расположено между ;---------- в коде) резидент выгружается вроде нормально.
Подозреваю, что нарушается(переполняется) стек, порядок вызовов и система виснет. Может нужно еще перехватывать 21h прерывание?
ЗЫ У 5-го прерывания вызов в досе по shift+prnscr, а можно ли его вызвать в винХР(прога дос) ?

Приложение:

Отправлен: 01.04.2005, 07:46
Вопрос задал: Guran (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Стас
Здравствуйте, Guran!
Можно еще на 2Fh сесть, там вывести строку через Int21(AH=9) и выгрузить оттуда же.
>ЗЫ: Ага, "правой кнопкой" на файле (например в проводнике) в свойствах, в разном сними галку с Alt+PrtScr и XP перестранет перехватывать.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 02.04.2005, 01:36

Отвечает: mvp
Здравствуйте, Guran!
Обратите внимание на последовательность строк:
;---------------------------
pusha
mov ah,9
push cs
pop ds
mov dx,offset mess3
int 21h
popa
mess3 db 'Proga remove from memory!!!$'
;---------------------------
iret
После КОМАНДЫ popa в памяти записано текстовое сообщение, которое вомпринимается как последовательность команд (можете посмотреть в TD, каким командам отвечает это строка), что и является причиной глюков. Поменяйте местами строчки iret и mess db '...'.
Ответ отправил: mvp (статус: 2-ой класс)
Отправлен: 02.04.2005, 20:59


Вопрос № 19059
ПОхоже я забыл передать управление уже назад поставленного оригинального обработчика 09 прерывания после вывода строки. Клава дальше заработала, но если заново загружать резидент, при 2 повторной попытке загрузки и нажатия alt+l система рушится...?

Приложение:

Отправлен: 01.04.2005, 08:54
Вопрос задал: Guran (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Стас
Здравствуйте, Guran!
Не бойсь из под какой нибудь оболочки? Тогда смотри - она берет Int9 себе. Перед запуском твоей проги меняет на "девственный". Загружаешся ты, забираешь его себе. Выходишь из своей проги. Оболочка хватает твой обработчик. alt+l - и ты восстанавливаешь "девственный". (Хорошо если это и правда девственный, а не временный какой нибудь).
Возможен такой вариант.
Либо чтото не досмотрел.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 02.04.2005, 02:14

Отвечает: mvp
Здравствуйте, Guran!
См. мой ответ на Ваш вопрос 19057. Поменяйте местами iret и mess3 db ...
Ответ отправил: mvp (статус: 2-ой класс)
Отправлен: 02.04.2005, 21:03


Вопрос № 19067
Здраствуйте.
Вот я хочу сделать свой интерператор как Бейсик но со своими коммандами .
Но вопрос вот в чем как сделать свой файл с рассширением .exe на своем интерператоре.
Спасибо за раннее.
Отправлен: 01.04.2005, 15:52
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: Bob Johnson
Здравствуйте, newinfo2005!
так если у тебя интерпретатор, то зачем тебе делать exe файл? пусть твой exe файл открывает заданный текстовый файл и выполняет его (как перл, например)

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 01.04.2005, 22:43
Оценка за ответ: 4
Комментарий оценки:
А мне надо чтоб отдельно .exe айл выполнялся!

Отвечает: Стас
Здравствуйте, newinfo2005!
Если "интерпретатор" то "бейсик" должен быть рядом. Либо где нибудь в доступном месте на диске(например как часть твоей операционной системы), либо в тексте самой программы.
Если компилятор, то проанализировать код заменив команды "бейсика" ассемблерным кодом.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 02.04.2005, 01:34
Оценка за ответ: 5
Комментарий оценки:
Но по подробние лучше бало!!!

Отвечает: Boriss
Здравствуйте, newinfo2005!
Я делал как-то так (для выполнения управляющей программы, написанной на PDP-11, на интеловских): есть куча подпрограмм (сложение, ....) и их вызывешь по мере расшифровки формулы. И в приниципе нормально работало
То есть, если правильно понял суть вопроса, то ответ такой - в Вашем EXE-шнике уже есть все процедуры для выполнения элементарных действий
(Только там расшифровывал исполняемый код в 8-ричном коде. Где-то в середине работы даже стало интересно)-
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 06.04.2005, 10:01


Вопрос № 19068
Привет!
Работает два процесса, первый передает второму данные (приблизительно 6 байт) при наступлении определенного события, задача второго процесса получить данные и обработать их.
Второй процесс я уведомляю при помощи события, но как в этот момент передать ему данные? Мне нужен самый быстрый способ, т.к. данные передаются приблизительно 40 раз в секунду.
Какие у вас есть предложения?
Спасибо.
Отправлен: 01.04.2005, 15:53
Вопрос задал: Торба Андрей Николаевич (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: PavPS
Здравствуйте, Торба Андрей Николаевич!
Самый быстрый способ межпроцессорного взаимодействия - файловые отображения. В одном из процессом (грубо) CreateFleMapping->MapViewOfFile в другом OpenFileMapping->MapViewOfFile (главное то, что при создании/открытии надо использовать имена объектов одинаковые) В результате - все виртуальные адреса в 2 процессах укажет на 1 физический. Пользуйте ...
Ответ отправил: PavPS (статус: 7-ой класс)
Отправлен: 02.04.2005, 01:01

Отвечает: Bob Johnson
Здравствуйте, Торба Андрей Николаевич!
40 раз в секунду по 6 байт? :) ты что, это же огромное количество данных!
варианты:
1. memory mapped file (функция CreateFileMapping, первый параметр INVALID_HANDLE_VALUE) - это реально быстро, т.к. физически используется одна и та же область памяти.
2. пайпы (CreatePipe)
3. сокеты (socket)
4. сообщение WM_COPYDATA
.... и так дальше :)

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 02.04.2005, 01:28


Вопрос № 19070
Уважаемые эксперты не могли бы мне скинуть пример вируса под WindowsNT
E-mail
Dark_Skies@mail.ru
Спасибо
Отправлен: 01.04.2005, 16:42
Вопрос задал: Серж (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Bob Johnson
Здравствуйте, Серж!
попробуй посмотреть на сайте http://wasm.ru

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 01.04.2005, 22:43


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное