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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


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


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

В избранное