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

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


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

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

Выпуск № 723
от 14.05.2004, 16:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5271
Отправлено ответов: 14514
Активность: 275.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pawel
Статус: Профессиональный
Общий рейтинг: 155.49
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 118.48
[Подробней >>]
Foamplast
Статус: Профессиональный
Общий рейтинг: 150.59
URL: мой личный сайт
[Подробней >>]
 
Dragoon
Статус: Начальный
Общий рейтинг: 109.7
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.72
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.52
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.71
[Подробней >>]
Стас
Статус: Начальный
Общий рейтинг: 120
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.42
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 116.6
[Подробней >>]
Acid Burn
Статус: Доверительный
Общий рейтинг: 127.65
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5246. Программа-редактор для Ассемблера. Всем изучающим язык будет полезен. http://www.avtlab.ru/asmedit.h... (ответов: 2)
Вопрос № 5247. Добрый день, Если кто-нибудь знает как мне удалить файл, если эта программа запущена? Наверно как.то... (ответов: 2)
Вопрос № 5248. Привет Где можно взять(купить, скачать) туториал, книгу о организации памяти в Win32 Горю желанием и... (ответов: 5)
Вопрос № 5249. Здравствуйте уважаемые эксперты.... Подскажите где достать хороший подробный справочник по WIN 32 AP... (ответов: 4)
Вопрос № 5250. Чем отличаются функции GlobalAlloc и LocalAlloc? И правда ли что они выделяют блок памяти кратный 4к... (ответов: 5)
Вопрос № 5251. Здравствуйте уважаемые эксперты! 1. Я хочу чтобы запрос который я послал с браузера вернулся к нему... (ответов: 1)
Вопрос № 5252. Будьте добры помогите написать следующую часть программы, нужно обрабатывать нажатие Ctrl, если нажа... (ответов: 4)
Вопрос № 5253. Здравствуйте. Я начинающий программист на Assembler'е под DOS. Под Windows пишу более менее. Но к с... (ответов: 5)

Вопросов: 8, ответов: 28


 Вопрос № 5246

Программа-редактор для Ассемблера.
Всем изучающим язык будет полезен.
http://www.avtlab.ru/asmedit.htm



Вопрос отправлен: 09.05.2004, 12:40
Отправитель: EI

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Здравствуйте, EI!
С синтаксисом FASM он работает плохо.
В основном это ешё один MASM редактор.

Ответ отправлен: 10.05.2004, 21:14
Отправитель: Pawel


Отвечает _vt

Здравствуйте, EI!
Давно известный и не очень удобный редактор.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 11.05.2004, 04:10
Отправитель: _vt


 Вопрос № 5247

Добрый день, Если кто-нибудь знает как мне удалить файл, если эта программа запущена? Наверно как.то надо поличить SE_TAKE_OWNERSHIP_NAME или ...?



Вопрос отправлен: 09.05.2004, 15:49
Отправитель: Andrei

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Здравствуйте, Andrei!
Win запрешает ред. файлов запущенных программ.
Какая версия Win?


Ответ отправлен: 10.05.2004, 21:24
Отправитель: Pawel


Отвечает Foamplast

Добрый день, Andrei!
Убить однозначно.


Ответ отправлен: 11.05.2004, 22:08
Отправитель: Foamplast


 Вопрос № 5248

Привет
Где можно взять(купить, скачать) туториал, книгу о организации памяти в Win32
Горю желанием изучить Win32 на низком уровне но все туториалы в Inetе пока ещё слишком сложны для меня
(честно говоря я не знаток в Win)
Меня постоянно терзает вопрос об организ памяти И
о виртуальных адресных пространствах для каждого процесса,
что процессы не могут залесть в чужое адр простр и т п,
вобщем о разделении адр простр между процессами их изолированности
Заранее ОГРОМНОЕ спасибо ответившим, потому что я ничего на эту тему не могу найти



Вопрос отправлен: 09.05.2004, 22:18
Отправитель: troxa (mrtroxa@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, troxa!
На http:www.wasm.ru вроде были.

Ответ отправлен: 10.05.2004, 21:24
Отправитель: Pawel


Отвечает Dragoon

Доброе время суток, troxa!
Почитай туториалы Iczelion'а. Там многое классно расписано.
Лежат они здесь:
http:\www.wasm.ru


Ответ отправлен: 10.05.2004, 11:48
Отправитель: Dragoon


Отвечает _vt

Доброе время суток, troxa!
Лучше чем Рихтер, тебе никто про организацию памяти не расскажет. Качай его книгу.У меня есть в электронном виде такая:
Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows/Пер, англ - 4-е изд.
Насколько я знаю, уже есть 5-е издание.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 11.05.2004, 04:10
Отправитель: _vt


Отвечает ASMодей

Здравствуйте, troxa!
Почитай книгу Рихтера "Windows для профессионалов" и/или книгу
D.Solomon, M.Russinovich "Inside Windows 2000"
В первой книге описаны общие принципы, а во второй - подробности.
А вообще работа Windows с памятью основана на защищенном режиме работы
процессора, поэтому нелишней будет и документация по процессорам Intel 80386
и выше.


Ответ отправлен: 11.05.2004, 15:38
Отправитель: ASMодей


Отвечает Foamplast

Здравствуйте, troxa!

Странно, информации должно быть дофига. Рекомендую следующие книги:

  • Зубков С.В. "Assembler для DOS, Windows и UNIX"
  • Э. Танненбаум "Современные операционные системы"
  • David A. Solomon and Mark E. Russinovich "Inside Microsoft Windows 2000"



Ответ отправлен: 11.05.2004, 22:09
Отправитель: Foamplast


 Вопрос № 5249

Здравствуйте уважаемые эксперты....
Подскажите где достать хороший подробный справочник по WIN 32 API, а то в инете все какие-то маленькие, я где-то прочитал что полный весит около 20 мегов, а это все килобайт по 200...
спасибо!!!



Вопрос отправлен: 09.05.2004, 23:39
Отправитель: felicson

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, felicson!
В Microsoft :)
Просто содержание разных справочников часто не совпадает.
Я например пользуюсь Api_nt, "Русская спpавка по Windows API", "The Undocumented Functions Microsoft Windows NT/2000"
"WinApiHelp"

Ответ отправлен: 10.05.2004, 21:29
Отправитель: Pawel


Отвечает Gibbel

Добрый день, felicson!
на сайте MSDN.
P.S.: люди, может хватит отправлять вопросы в первую попавшуюся рассылку. Ведь есть же рассылка по WinAPI.

Ответ отправлен: 12.05.2004, 11:11
Отправитель: Gibbel


Отвечает _vt

Приветствую Вас, felicson!
В комплекте с Borland С++Builder и Borland Delphi есть win32.hlp - на 20Мб - вполне подробный справочник. Одна беда - он старый: в нем описывается только API Windows95/NT4. Оптимальным вариантом будет найти у себя в городе Visual Studio.NET на 6-7 дисках - там есть всё. Из всёго этого, чисто справочником по API является Platform SDK, который можно бесплатно скачать на microsoft.com - занимает под 400Мб.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 11.05.2004, 04:11
Отправитель: _vt


Отвечает Foamplast

Здравствуйте, felicson!

Дезинформация, однозначно. Полный весит 470 Мб, а самый полный - около 2 Гб. Первый можно бесплатно скачать с http://www.microsoft.com/msdownload/platformsdk/sdkupdate/, а второй купить на базаре, ибо легальный будет стоить, как несколько компьютеров.




Ответ отправлен: 11.05.2004, 22:09
Отправитель: Foamplast


 Вопрос № 5250

Чем отличаются функции GlobalAlloc и LocalAlloc?
И правда ли что они выделяют блок памяти кратный 4к.
Pushkoff



Вопрос отправлен: 10.05.2004, 00:34
Отправитель: Pushkoff

[Следующий вопрос >>] [Список вопросов]

Отвечает Dark_Lord

Здравствуйте, Pushkoff!
Ничем!
Зависит от версии Windows, обычно кратный 64к

Ответ отправлен: 10.05.2004, 18:44
Отправитель: Dark_Lord


Отвечает Pawel

Доброе время суток, Pushkoff!
1)Ничем.
2)Да, но это может зависеть от версии.

Ответ отправлен: 10.05.2004, 21:34
Отправитель: Pawel


Отвечает Dragoon

Здравствуйте, Pushkoff!
1)Ничем.
Под Windows плоская модель памяти и каждый сегмент размером 4 гб.
2) Правда.

Ответ отправлен: 10.05.2004, 11:49
Отправитель: Dragoon


Отвечает _vt

Доброе время суток, Pushkoff!
Выдержки из MSDN и мои комментарии:
The GlobalAlloc function allocates the specified number of bytes from the heap. Win32 memory management does not
provide a separate local heap and global heap.
Т.е. в Win32 API нет разницы между GlobalAlloc и LocalAlloc - они сохранены для совместимости с Win 3.1
Note The global functions are slower than other memory management functions and do not provide as many features. Therefore, new applications should use the heap functions.
Следовательно, в современном API используются такие функции - HeapCreate, HeapAlloc, HeapDestroy и пр.
Memory allocated with this function is guaranteed to be aligned on an 8-byte boundary.
Да, они выделяют блок памяти, кратный 8 байтам = 4 кбайтам.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 11.05.2004, 04:11
Отправитель: _vt


Отвечает Foamplast

Доброе время суток, Pushkoff!

Они отличаются от HeapAlloc() тем, что безнадёжно устарели. Современным программам следует использовать функции GetProcessHeap() (или HeapCreate() - HeapDestroy() для растущей кучи), HeapAlloc() и HeapFree(). К тому же, это удобнее.

P.S. Видимо, когда-то при динозаврах одна из этих функций выделяла память из локальной кучи, а вторая - из глобальной. Сейчас это аболютно всё равно.




Ответ отправлен: 11.05.2004, 22:09
Отправитель: Foamplast


 Вопрос № 5251

Здравствуйте уважаемые эксперты!
1. Я хочу чтобы запрос который я послал с браузера вернулся к нему обратно ввиде странички, а не как файл..............я так понимаю этот запрос надо оформить в виде html кода.........а я незнаю как добавить к полученным данным пару тегов?
2. И еще запрос не хочет на консоль выводиться...........
3. И еще в win2k под IE мой сервер не пашет а из оперы свободно почему?


Приложение:


Вопрос отправлен: 10.05.2004, 01:45
Отправитель: Dr

[Следующий вопрос >>] [Список вопросов]

Отвечает Foamplast

Здравствуйте, Dr!
Сделайте надлежащую обработку ошибок. У Вас приложение вываливается по GPF.


Ответ отправлен: 13.05.2004, 23:35
Отправитель: Foamplast


 Вопрос № 5252

Будьте добры помогите написать следующую часть программы, нужно обрабатывать нажатие Ctrl, если нажато в нечетный раз, то все нажатые клавиши например q заменяется на й,
w заменяется на ц, e на у, r на к, т.е. что-то похожее на драйвер русской клавиатуры, если Ctrl нажат в четный раз переходим к старому обработчику INT 9. Заранее благодарен за помощь.Вот, что я смог написать, а обработчик незнаю даже с чего начать.


Приложение:


Вопрос отправлен: 10.05.2004, 11:36
Отправитель: Саша (zevskl@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Добрый день, Саша!
С Ctrl нужно быть осторожней. Ведь может быть что человек хочет нажать Ctrl-Break скажем. Из этого следует, что нужно в момент нажатия Ctrl поставить флаг, уйти на обработку настоящего INT9. В следующий заход в Int9 проверить, что это отпускается Ctrl, только тогда поставить флаг переключения раскладки и снова бежать на настоящий INT9.
А если при входе в свой INT9 выясняется, что нажата(отпущена) не Ctrl, обнуляем флаг нажатой Ctrl.
Получаем код нажатой клавиши. Проверить чтобы это была одна из буквенных клавиш, если это не так отдать управление настоящему INT9.
Иначе записать в буффер клавиатуры (0:41a(голова буферра),0:41c(хвост)) подменненный код исходя из флага раскладки клавиатуры. И проигнорировать настоящий INT9.
Примерно так.
Обращайся если что.


Ответ отправлен: 10.05.2004, 13:50
Отправитель: Стас


Отвечает Евгений Иванов

Здравствуйте, Саша!
Тебе нужно запускать старый обработчик всегда.
Но потом, после него, проверять, и если нажата клавиif Ctrl, то в буфере клавиатуры (а стандартный обработчик там оставил коды нажатой клавиши) менять то, что тебе нужно. Ясно?
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 10.05.2004, 15:33
Отправитель: Евгений Иванов


Отвечает Pawel

Доброе время суток, Саша!
Ставишь свой обработчик, но запоминаешь старый.
Когда проверишь код клавиши в буфере то выполняешь свои действия и если нужно переходишь на старый обработчик.

Ответ отправлен: 10.05.2004, 21:39
Отправитель: Pawel


Отвечает Ayl

Приветствую Вас, Саша!
Я бы делал так.
Читаем порт 60h. Если нажат Ctrl - изменяем флаг (кстати, это можно делать одной командой:
xor [U1], 1 - тогда при четных нажатиях в U1 будет 0, при нечетных - 1 (вначале в U1 надо записать 0)
). Выходим, очищая контроллер клавиатуры.

Если же нажато что-то другое, запоминаем указатель хвоста буфера клавиатуры (ячейка 0040:001C) и вызываем старый обработчик 9-го прерывания. Чтобы не заморачиваться с конвертацией скен-кодов в символы. 9-ку вызываем через call. После чего проверяем флаг нажатий Ctrl, и если он установлен, то считываем значение из буфера клавиатуры по запомненному указателю хвоста (смещение в сегменте 0040) и перекодируем его в русскую раскладку. Результат оставляем в той же ячейке.
Буфер клавиатуры - это циклическая очередь из 16-ти слов. Тебя будут интересовать младшие байты каждого слова.



Ответ отправлен: 11.05.2004, 17:44
Отправитель: Ayl


 Вопрос № 5253

Здравствуйте.
Я начинающий программист на Assembler'е под DOS. Под Windows пишу более менее.
Но к сожалению в университете мы проходим dos'овский ассемблер. Для экзамена "автоматом" дали 4 задания, 3 из которых я сделал. А как сделать 4-ое не знаю. Поэтому решил спросить у вас.
Итак, необходимо написать программу, которая бы при включенном индикаторе NumLock печатала русскими буквами, при выключенном - английскими буквами.
Заранее огромное спасибо!



Вопрос отправлен: 10.05.2004, 16:19
Отправитель: ProLamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Здравствуйте, ProLamer!
Писать саму прогу не буду, а действовать надо примерно так.
Вешаешь на 9 прерывание свой обработчик, работающий ПОСЛЕ основного, который если по адресу 0:417 5 бит равен=1 (test 0:417h,20h)- NumLock горит - заменяешь код в буффере клавиатуры (0:41a начало, 0:41с конец) на свой.
Например английская буква "а" имеет код "61 1E", меняешь на "E4 00". Всё!

Ответ отправлен: 10.05.2004, 21:58
Отправитель: Стас


Отвечает Pawel

Приветствую Вас, ProLamer!
Ставишь свой обработчик для int клавы.
В котором проверяешь состояния num loock переключаешь раскладку и переходишь на старый обработчик.

Ответ отправлен: 10.05.2004, 21:41
Отправитель: Pawel


Отвечает Ayl

Здравствуйте, ProLamer!
Очень просто. Индикатор NumLock определяется установкой/сбросом бита 5 байта по адресу 0040:0017.
Т.о. тебе нужно проверять этот бит и при необходимости производить перекодировку. Насколько я понял, тебе даже не нужно перехватывать прерывания. Т.е. ты вызываешь функцию чтения клавиши через int 16h (0 или 10h) и после этого проверяешь статус NumLock. И перекодируешь.


Ответ отправлен: 11.05.2004, 17:49
Отправитель: Ayl


Отвечает Foamplast

Добрый день, ProLamer!

Здесь есть существенная разница, должна ли программа делать это внутри себя или же модифицировать ввод других программ. В первом случае просто необходимо при вводе символа узнавать, не нажата ли NumLock, и ,соответственно, печатать одни символы, либо другие. А вот во втором придётся писать резидентную программу, перехватывающую прерывание клавиатуры и заполняющую системную очередь символов. Таких примеров должно быть немерено в сети. Советую ресурс ya.ru.




Ответ отправлен: 11.05.2004, 22:09
Отправитель: Foamplast


Отвечает Acid Burn

Здравствуйте, ProLamer!
Ставишь свой обработчик прерывания клавиатуры на INT 9h,в котором описываешь проверку бита нужной клавиши (по адресу 40:17 - байт состояния клавиатуры). И при нужном значении бита №5 (1 - numlock нажат) заменяешь скан код символов

Ответ отправлен: 11.05.2004, 23:08
Отправитель: Acid Burn



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (14)
Perl (4)
Builder / Delphi (19)
Pascal (20)
Basic / VBA (4)
Java / JavaScript (4)
PHP (12)
Криптография (8)
WinAPI (10)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (53)
"Железо" (28)
Поиск информации (14)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (9)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное