Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 631
от 01.09.2003, 23:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4069 Отправлено ответов: 12059 Активность: 296.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
_vt Статус: Профессиональный Общий рейтинг: 121.09 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 113.1 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.24 URL: Программирование [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 148.59 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 107.33 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.78 [Подробней >>] |
Greys Статус: Доверительный Общий рейтинг: 123.56 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 112.76 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 120.74 URL: мой сайт [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 134.24 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4026. Здравствуйте эксперты. Уточню вопрос 4013! Я пишу свой бут (подобие Линукса), и поэтому хотел руссиф... (ответов: 4)
Вопрос № 4027. Уважаемые Эксперты. Прочитал я на wasm.ru в форуме про ftp://130.88.244.210 ( если кто-то все-же отв... (ответов: 1)
Вопрос № 4028. Расскажите пожалуйста про RASApi, я всё никак не могу позвонить с их помощью. В моём английском спра... (ответов: 1)
Вопрос № 4029. здравствуйте. благодарю вас за столько ответов на вопрос 4000, благодаря им я смог успешно разобрать... (ответов: 3)
Вопрос № 4030. Уважаемые эксперты, Посоветуйте какую-нить программку, по возможности максимально схожую с трассиров... (ответов: 2)
Вопрос № 4031. Здравствуйте. Для программирования видеокарты доступны адреса оперативной памяти с A0000h до Bffffh(... (ответов: 4)
Вопрос № 4032. Как поместить строку IP "xxx.xxx.xxx.xxx" в sin_addr ?... (ответов: 3)
Вопрос № 4033. Здравствуйте! Вопрос по SIce. Прошу сильно не бушевать, но я в растерянности: поставил себе SoftIce ... (ответов: 1)
Вопрос № 4034. Добрый час! Я снова про GlobalAlloc. Некоторое время не было инета, что дало мне возможность поиск... (ответов: 3)
Вопрос № 4035. Доброго время суток! Я написал програму, которая переходит в защищеный режим. Есть одна проблема сра... (ответов: 5)
Вопросов: 10, ответов: 27
Вопрос № 4026 |
Здравствуйте эксперты. Уточню вопрос 4013! Я пишу свой бут (подобие Линукса), и поэтому хотел руссифицировать клаву. В ответе _vt упомянул о загрузке знакогенератора. Можете об этом подробнее кинуть что-нибудь на мыло?
Вопрос отправлен: 27.08.2003, 23:14
Отправитель: Марсель
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Доброе время суток, Марсель!
Я указал тебе на WASM.RU. Там очень подробно всё описывается и для экрана и для клавиатуры. Насколько я помню, это находится в разделе "DOS навсегда!", а название статьи могу привести полностью:
Единственно верный алгоритм руссификации адаптеров VGA/EGA
К ней прилагаются исходники...
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 28.08.2003, 01:40
Отправитель: _vt
Отвечает ASMодей
Приветствую Вас, Марсель!
Все равно не понятно. Ты хочешь засунуть русификатор в BOOT-сектор? У тебя это вряд ли получится: там едва хватает места на сам код загрузки.
Ответ отправлен: 28.08.2003, 07:48
Отправитель: ASMодей
Отвечает Bob Johnson
Здравствуйте, Марсель!
Тогда тебе нужно:
1. Перегрузить знакогенератор - упрощенно это выглядит так - ты в составе своего русификатора имеешь графическое изображение символов (всех 256) определенного размера (кажется, 8*14 для режима 80*25) - его загружаешь в знакогенератор (я функции не помню, но _vt тебе что-нибудь подкинет).
2. Перехватить прерывание 9 и написать его полный обработчик, который включает трансляцию скан-кода в код символа.
Может, конечно, можно перевхатить 16h-е прерывание и выполнять трансляцию уже там. В общем, сходи на wasm.ru - я там что-то подобное давно видел.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 12:39
Отправитель: Bob Johnson
Отвечает Евгений Иванов
Доброе время суток, Марсель!
Там надо адрес установить на свои шрифты.
И всё!
Ответ отправлен: 29.08.2003, 00:36
Отправитель: Евгений Иванов
Вопрос № 4027 |
Уважаемые Эксперты.
Прочитал я на wasm.ru в форуме про ftp://130.88.244.210 ( если кто-то все-же ответит User: upload, Pass: upload ). Книг там ну очень много, только проблема одна, не могу ни одну ( кроме списка ) скачать. В ftp я полный чайник, хотя пробовал как через IE так и в FTP Commander. Не сочтите вопрос за off-topic. Очень уж там хорошие книги...
С уважением...
Вопрос отправлен: 28.08.2003, 05:52
Отправитель: shade
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, shade!
Тут не в ftp дело, а в том, что для пользователя upload скачивать книги нельзя. А где ты вообще взял это имя и пароль? Потому как я поиском нашел только комбинацию read/good_book, но она не работает.
* EMan1.5: ---===*** The game we play ***===---
Приложение:
Ответ отправлен: 28.08.2003, 13:06
Отправитель: Bob Johnson
Вопрос № 4028 |
Расскажите пожалуйста про RASApi, я всё никак не могу позвонить с их помощью. В моём английском справочнике по WinApi вроде написано, что функции RAS должны запускаться в отдельном треде. Если не сложно, напишите работающий код. Заранее спасибо.
Вопрос отправлен: 28.08.2003, 09:13
Отправитель: PRO (p-r-o@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, PRO!
У меня на странице есть небольшой пример использования RAS для набора номера. Точная ссылка: http://www.bobjohnson.nm.ru/files/rasfunction.zip
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 12:44
Отправитель: Bob Johnson
Вопрос № 4029 |
здравствуйте.
благодарю вас за столько ответов на вопрос 4000, благодаря им я смог успешно разобраться с компилятором. возникла у меня другая маленькая проблемка - может подскажете несложный способ передать команду уже выполняющемуся процессу ? то есть запускается программа с параметрами в командной строчке, затем определяет что копия уже запущена и необходимо этой копии передать полученную командную строчку. на ум приходят разные способы - пайпы, файлы, сокеты, прямая запись в блок данных процесса :)
может посоветуете что нибудь быстро реализуемое и красивое - записывать командную строчку в файл и мониторить его появление имхо некрасиво :)
Вопрос отправлен: 28.08.2003, 09:29
Отправитель: ukms[z]
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, ukms[z]!
Вообще конечно лучше использовать WM_COPYDATA, но еще можно попробовать через Clipboard.
Ответ отправлен: 29.08.2003, 07:15
Отправитель: ASMодей
Отвечает Евгений Иванов
Здравствуйте, ukms[z]!
Попробуй через сообщения.
Ответ отправлен: 29.08.2003, 01:34
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, ukms[z]!
> записывать командную строчку в файл и мониторить его появление имхо некрасиво
Согласен.
Попробуй использовать WM_COPYDATA, если у твоего процесса есть окно. Тогда просто пошли ему сообщение. Если окна нет, то сделай невидимое окно и пошли это сообщение ему. Можно, конечно, в такой ситуации socket использовать, но тогда процесс будет его занимать, на что может заругаться firewall или обратить внимание пользователь.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 12:42
Отправитель: Bob Johnson
Вопрос № 4030 |
Уважаемые эксперты,
Посоветуйте какую-нить программку, по возможности максимально схожую с трассировщиком debug.exe, но в отличие от него умеющую работать с 32-разрядными регистрами. По сути дела, мне нужен debug.exe c 32-bit способностями, никаких навороченных прибамбасов с таблицами символов и т.д. не надо. Нужны только способности debug.exe, но - как уже я говорил - в 32 разрядной имплементации.
Использование предполагает введение асм кода начиная с произвольного адреса, редакция данных в хекс-режиме и дизассемблирование начиная с произвольного адреса. Все остальное - второстепенно. Даже дисковая запись. Просто инструмент чтоб порыться в опкодах. Было бы здорово если бы этот инструмент понимал ситуации, когда у одной инструкции могут быть два опкода (например, mov bx,dx - 89D3 и 8BDA).
Благодарю за внимание.
Вопрос отправлен: 28.08.2003, 09:47
Отправитель: Саня
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, Саня!
Попробуй Turbo Debugger 5.0 или QVIEW.
Ответ отправлен: 29.08.2003, 07:36
Отправитель: ASMодей
Отвечает Beeblebrox
Здравствуйте, Саня!
А чем тебе hiew не нравится?
Ответ отправлен: 28.08.2003, 10:16
Отправитель: Beeblebrox
Вопрос № 4031 |
Здравствуйте.
Для программирования видеокарты доступны адреса оперативной памяти с A0000h до Bffffh(128 kb). Такая ситуация наблюдается, как в реальном, так и в защищённом режимах работы процессора. Как быть, если необходимо программировать при разрешении 1024х768х24b(больше 2-х мегабайт!)?
Вопрос отправлен: 28.08.2003, 12:33
Отправитель: Алексей
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Алексей!
Прямое отображение памяти.
Как 13h режим VGA.
Очень удобно.
Все эти слои - полный бардак.
А ещё лучше OverLay.
Ответ отправлен: 29.08.2003, 01:32
Отправитель: Евгений Иванов
Отвечает Ayl
Приветствую Вас, Алексей!
А вот так! Сразу предупреждаю, что все нижесказанное - только теория, сам никогда не писал под этот режим.
Начнем с того, что область a0000 - bffff - это "окно" в ОП, в которое отображается реальная видеопамять, расположенная на видеоадаптере. Соответственно, когда у тебя на видеокарте есть, например, 16М, а окно равно 128К, то в каждый момент времени ты получаешь доступ именно к этим 128К памяти. Для того, чтобы использовать другие 128К нужно переместить свое окно (т.е. изменить начальный адрес памяти на видеокарте, который отображается на адрес a0000). Кроме этого, не забывай, что видеопамять располагается по слоям (если не ошибаюсь, в режимах высокого разрешения, типа 1024*768*24, тоже так). Причем слоев как минимум 4. Соответственно, с помощью этого окна в ОП ты получаешь доступ не к 128К памяти, а к 128К * кол-во слоев, то есть, как минимум, к 512К.
Переключение окна называется переключением банка видеопамяти. Подробнее об этом можешь прочитать в описании стандарта VESA - там есть специальные функции для этого.
Кроме этого, при программировании под DirectX ты получаешь линейное отображение видеоэкрана на оперативнцю память. Где каждая точка представляется 4-мя байтами (для режима 1024*768*24), причем старшие 8 бит не использются. Такое отображение возможно при помощи использования защищенного режима, когда драйвер DirectX сам отслеживает соответствие твоего 3М-байтного массива на видеопамять.
Ответ отправлен: 28.08.2003, 13:23
Отправитель: Ayl
Отвечает Greys
Приветствую Вас, Алексей!
Чтобы вывести изображение, используются два механизма — переключение банков видеопамяти для реального режима и LFB (линейный кадровый буфер) для защищенного.Во втором случае вся видеопамять отображается на непрерывный кусок адресного пространства, но начинающегося не с адреса 0A0000h, а с какого-нибудь другого адреса, так чтобы весь образ видеопамяти, который может занимать несколько мегабайтов, отобразился в один непрерывный массив. В защищенном режиме максимальный размер сегмента составляет 4 гигабайта, поэтому никаких сложностей с адресацией этого буфера не возникает. Буфер LFB можно использовать, только если видеоадаптер поддерживает спецификацию VBE 2.0
С уважением, Greys!
Ответ отправлен: 29.08.2003, 00:00
Отправитель: Greys
Отвечает Bob Johnson
Доброе время суток, Алексей!
1. Переключать страницы видеокарты.
2. Использовать LFB (Linear Frame Buffer).
Все это реализуется через функции VESA. Предпочтителен второй вариант.
> Такая ситуация наблюдается, как в реальном, так и в защищённом режимах работы процессора
Конечно, ведь режим работы процессора касается только его и ничего более - когда ты переходишь в защищенный режим, видеокарта ведь ничего об этом не знает.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 14:51
Отправитель: Bob Johnson
Вопрос № 4032 |
Как поместить строку IP "xxx.xxx.xxx.xxx"
в sin_addr ?
Вопрос отправлен: 28.08.2003, 14:29
Отправитель: Rin
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Приветствую Вас, Rin!
Так:
szIP db "255.255.255.255", 0
invoke inet_addr, ADDR szIP
mov sockaddr.sin_addr, eax
Ответ отправлен: 28.08.2003, 15:06
Отправитель: Hangatyr
Отвечает _vt
Приветствую Вас, Rin!
Существует функция
unsigned long inet_addr(
const char FAR * cp // указатель на строку вида "xxx.xxx.xxx.xxx"
);
преобразует строковое представление IP-адреса в числовое...
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 28.08.2003, 16:21
Отправитель: _vt
Отвечает Bob Johnson
Приветствую Вас, Rin!
А в чем проблема? Преобразовать из строки в число можно с помощью inet_addr, а затем просто поместить в структуру (The Windows Sockets inet_addr function converts a string containing an (Ipv4) Internet Protocol dotted address into a proper address for the IN_ADDR structure.)
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 14:34
Отправитель: Bob Johnson
Вопрос № 4033 |
Здравствуйте!
Вопрос по SIce.
Прошу сильно не бушевать, но я в растерянности:
поставил себе SoftIce из DS 3.0.0 (SI 4.30) под XP SP1. запускаю ставлю
bpx messageboxa
вазываю м-бокс - ноль эмоций... Ну сходил на сайт compuware залил osinfo.dat (правда там для SI из 2.7 DS) все равно :( Ну, т.к. не люблю я XP - снёс поставил 2000 prof SP4. Но сдесь то же самое, причем в нете никто о этом не говорит! У всех проблемы только с XP + SP1 ???Раньше, до установки XP и SI 4.30 (4 дня назад) стояла 2000 SP 4 и SI из DS 2.6 - все было без проблем!
Чё делать???
Вопрос отправлен: 28.08.2003, 21:22
Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, Илья!
Где то недавно совсем читал, что это известный глюк (с XP+SP1). В compuware по этому поводу советуют снести SP1, поставить сайс а сверху опять SP1
насчет DS 3 - не советую ее качать, ничего нового, кроме официальной поддержки 2003 (как 2.7 - XP). + добавлены абсолютно бесполезные команды типа метки на участок памяти и т.п. Visual SoftICE о котором все кричат в последнее время - это только для удаленной отладки, такого оконного интерфейса, если отладчик работает на локальной машине "ниже" ОС, создать невозможно
Ответ отправлен: 28.08.2003, 22:32
Отправитель: Broken Sword
Вопрос № 4034 |
Добрый час! Я снова про GlobalAlloc. Некоторое время не было инета, что дало мне возможность поискать ошибку самому. Пришлось, конечно, каждую команду протестировать, потому что все возможные варианты были несколько раз проверены. Как и оказалось, это глюк Windows :) Незадолго перед её вызовом при расчётах я устанавливаю флаг направления(std), а функция его использует, даже не утруждая себя его сбросить. Установленный флаг выбивает её из колеи напрочь :) Вот ведь как бывает, кодишь-кодишь, а потом такая ошибка, и бъёшся над ней больше, чем над всей остальной программой :(
Ладно, чтобы не просто так, задам вопрос: и снова про ImageBase. Где можно почитать про то, как всё это происходит, т.е. как Windows формирует эти виртуальные пространства процессов, и как узнать, куда реально в памяти грузится процесс.
To Bob Johnson: в теории по защищённому режиму ничего не говорится про задачи и процессы.
Вопрос отправлен: 28.08.2003, 22:12
Отправитель: Кодер (therock@ezmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Кодер!
У Рихтера почитать можно.
Ответ отправлен: 29.08.2003, 12:57
Отправитель: masquer
Отвечает Евгений Иванов
Добрый день, Кодер!
Насчёт D-флага:
Это вряд ли... Наверное, ты что-то путаешь...
Ответ отправлен: 29.08.2003, 01:27
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Приветствую Вас, Кодер!
> Как и оказалось, это глюк Windows :)
Ну то, что это - глюк сказать точно нельзя, я где-то читал про то, что флаг должен быть сброшен (но вспомнил, естественно, только сейчас :). В явном виде в msdn есть только то, что inline asm не должен его менять (т.е. должен возвращать в исходное состояние), а все функции С его всегда возвращают сброшенным. Ну да ладно, надо будет это запомнить, чтобы больше никто не попался. Хорошо, что ты написал! Кстати, какая у тебя ОС - в ХР сейчас попытался его установить и вызвать несколько раз GloablAlloc - ничего не вышло, все работает нормально.
> в теории по защищённому режиму ничего не говорится про задачи и процессы
Это не совсем так - там есть регистр TSS, используемый для аппаратной мультизадачности. Но Windows его не использует, она реализует MT программными методами (так быстрее вроде).
> как Windows формирует эти виртуальные пространства процессов, и как узнать, куда реально в памяти грузится процесс
Если в 9х - то можешь написать драйвер, а в нем почитать регистр каталога страниц и все таблицы страниц, а также GDT - тогда можешь создать у себя представление об этом.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 14:47
Отправитель: Bob Johnson
Вопрос № 4035 |
Доброго время суток!
Я написал програму, которая переходит в защищеный режим.
Есть одна проблема сразу послу перехода когда я хочу изменить сегментные регистры комп перегружается!
Но когда я меняю АХ к примеру все нормально.
Подскажите кто-нибудь в чем проблема. Спасибо!
Вопрос отправлен: 28.08.2003, 22:14
Отправитель: Madman (yo-ho@km.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, Madman!
Возможно неправильно настроена таблица GDT, без кода трудно сказать.
Ответ отправлен: 29.08.2003, 08:21
Отправитель: ASMодей
Отвечает Greys
Приветствую Вас, Madman!
Конечно, он перезагрузится, поматерится и расплачется!
Все очень просто! В сегментные регистры в защищенном режиме вы не можете загружать напрямую адреса нужного сегмента, в сегментные регистры для доступа к той или иной области памяти нужно загрузить необходимый селектор, который будет указывать на дескриптор в GDT (GDT с дескрипторами нужно готовить до перехода в защищенный режим! Дескриптор описывает определенный участок памяти!)
Поэтому сразу же после перехода в защищенный режим совершаем дальний переход, загружая селектор нужного сегмента в регистр CS (напрямую это сделать нельзя)
;; 8 (1000b) - первый дескриптор в GDT, RPL=0
jmp 0x8: _metka
С уважением, GREYS!
Ответ отправлен: 28.08.2003, 23:51
Отправитель: Greys
Отвечает Broken Sword
Добрый день, Madman!
кидай исходник на brokensword@ukr.net
Ответ отправлен: 28.08.2003, 22:32
Отправитель: Broken Sword
Отвечает Евгений Иванов
Приветствую Вас, Madman!
Туда надо записывать переключатели сегментов (селекторы).
Ответ отправлен: 29.08.2003, 01:17
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, Madman!
> когда я хочу изменить сегментные регистры комп перегружается
Видимо ты изменяешь их на неправильные значения (например, cs - тогда сразу же будет исключение). Проверь код.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 14:35
Отправитель: Bob Johnson
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (37) C / C++ (29) Perl (5) Builder / Delphi (19) Pascal (25) Basic / VBA (7) Java / JavaScript (8) PHP (10) Криптография (9) WinAPI (15) |
Пользователю Windows 95/98/Me (48) Windows NT/2000/XP (63) "Железо" (42) Поиск информации (24) |
Администратору Windows NT/2000/XP (32) Linux / Unix (11) |
Юристу Гражданское право (11) Семейное право (7) Трудовое право (7) КоАП (6) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||