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

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


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

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

Выпуск № 536
от 05.05.2003, 09:50

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


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

Maverick
Статус: Профессиональный
Общий рейтинг: 134.23
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 109.73
[Подробней >>]
GL
Статус: Опытный
Общий рейтинг: 102.8
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.32
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
Hangatyr
Статус: Доверительный
Общий рейтинг: 127.38
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.22
URL: Программирование
[Подробней >>]
 
Igoryk
Статус: Профессиональный
Общий рейтинг: 118.11
URL: IgorykSoft
[Подробней >>]
Tigran K. Kalaidjian
Статус: Доверительный
Общий рейтинг: 114.88
[Подробней >>]
Insane coder
Статус: Начальный
Общий рейтинг: 102.63
[Подробней >>]
 
Ramzes
Статус: Опытный
Общий рейтинг: 131.09
URL: Microsoft homepage
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 123.1
URL: моя рассылка по Protected Mode
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 115.41
[Подробней >>]
 
Александр
Статус: Доверительный
Общий рейтинг: 102.46
[Подробней >>]


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

Вопрос № 3088. Здравствуйте уважаемые эксперты! Помогите, пожалуйста, вывести на экран цифры в десятичном виде. (на... (ответов: 1)
Вопрос № 3089. Здравствуте, Эксперты! Простите, что отнимаю у вас время, но просто хочется узнать кто каким ассембл... (ответов: 8)
Вопрос № 3090. Привет, У меня есть программа (под ДОС), перехватывающее какое-то прерывание есть ли какой-нибудь сп... (ответов: 6)
Вопрос № 3091. Доброго времени суток уважаемые экперты! У меня к вам такой вопрос: Вы наверное читали стать Станисл... (ответов: 2)
Вопрос № 3093. Доброе время суток. Хотел бы узнать: как используется сегментная и страничная адресация вместе КАК В... (ответов: 4)
Вопрос № 3095. Приветствую всех ассемблерщиков! Требуется ваша квалифицированная помощь. Я как-то работал с одной... (ответов: 2)
Вопрос № 3096. Уважаемые Эксперты! Мне требуется в программе работать сразу с несколькими немодальными диалогами. M... (ответов: 1)
Вопрос № 3097. Здравствуйте! У меня программка переваливает за 64Kb Соответственно model tiny (которую я использова... (ответов: 5)

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


 Вопрос № 3088

Здравствуйте уважаемые эксперты!
Помогите, пожалуйста, вывести на экран
цифры в десятичном виде.
(на примере получения версии Дос).
Заранее спасибо.
C уважением, Sammy.


Приложение:


Вопрос отправлен: 30.04.2003, 08:10
Отправитель: Sammy (sfxgt666@yahoo.com)

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

Отвечает Maverick

Приветствую Вас, Sammy!
В прил. чей то исходние по переводу чисел, не помню чей, разберешся, все просто.

Приложение:

Ответ отправлен: 01.05.2003, 12:40
Отправитель: Maverick


 Вопрос № 3089

Здравствуте, Эксперты!
Простите, что отнимаю у вас время, но просто хочется узнать кто каким ассемблером пользуется.



Вопрос отправлен: 30.04.2003, 20:36
Отправитель: Gert

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

Отвечает keleb-glin

Доброе время суток, Gert!
Я юзаю tasm32, потому что никто больше нормально не компилирует 32-разрядный код для ДОС (это с префиксами типа 66h, 67h ). Для Винь - masm32

Ответ отправлен: 30.04.2003, 20:45
Отправитель: keleb-glin


Отвечает GL

Доброе время суток, Gert!
Для дос-программ - TASM
Для вин-программ - MASM32

Ответ отправлен: 01.05.2003, 14:12
Отправитель: GL


Отвечает Gibbel

Добрый день, Gert!
TASM, однозначно ;-)

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


Отвечает Maverick

Добрый день, Gert!
Tasm 5.0
Tasm 32
Masm 611


Ответ отправлен: 01.05.2003, 12:41
Отправитель: Maverick


Отвечает Hangatyr

Доброе время суток, Gert!
Мне больше нравится masm, хотя часто использую и tasm.

Ответ отправлен: 30.04.2003, 21:13
Отправитель: Hangatyr


Отвечает Bob Johnson

Доброе время суток, Gert!
TASM для Win32, MASM для VxD (но, как видимо, это в прошлом).
И NASM для всего того, что не умеет тасм.
Да, и все остальные встроенные в ЯВУ асмы тоже (чаще всего в VC++, хотя там отстойный асм).


Ответ отправлен: 01.05.2003, 16:27
Отправитель: Bob Johnson


Отвечает Igoryk

Приветствую Вас, Gert!
TASM 4.1

Ответ отправлен: 01.05.2003, 19:05
Отправитель: Igoryk


Отвечает Tigran K. Kalaidjian

Доброе время суток, Gert!
Tasm 2.0
Кстати, прошу прощения - некоторые сообщения сюда не доходят - связь обрывается.

Ответ отправлен: 01.05.2003, 18:24
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3090

Привет,
У меня есть программа (под ДОС), перехватывающее какое-то прерывание есть ли какой-нибудь способ определить перехвачено ли это прерывание уже, точнее есть ли его обработчик? Спасибо.



Вопрос отправлен: 30.04.2003, 20:59
Отправитель: ZIrk

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

Отвечает Gibbel

Здравствуйте, ZIrk!
Смотришь, куда указывает вектор, если в BIOS, или 0000:0000, то не перехвачено...

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


Отвечает Bob Johnson

Приветствую Вас, ZIrk!
Ну вызвать его попробуй с определенными значениями в регистрах и посмотри, что оно вернет.


Ответ отправлен: 01.05.2003, 16:28
Отправитель: Bob Johnson


Отвечает Insane coder

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


Ответ отправлен: 30.04.2003, 21:08
Отправитель: Insane coder


Отвечает keleb-glin

Здравствуйте, ZIrk!
Тебе нужно узнать значения всех векторов до загрузки ДОС. Ты с помощью какой-нибудь программы (можно записать её на дискету в MBR и загрузиться с неё) узнаёшь их. Потом твоя программа сравнивает значение нужного вектора с тем, что было до загрузки ДОС. Если они не совпадают, то обработчик есть. Это не относится к прерываниям БИОСа. Их обработчики загружаются БИОСом до загрузки ОСи.

Ответ отправлен: 01.05.2003, 15:33
Отправитель: keleb-glin


Отвечает Hangatyr

Здравствуйте, ZIrk!
Я не думаю, что такое можно сделать. В таблице векторов прерываний на месте вектора может оказаться какой-нибудь мусор и после инструкции int x управление уйдет неизвестно куда, а предсказать, что там находится код, или, опять же, мусор какой-нибудь (и к чему приведет выполнение этого мусора), невозможно.


Ответ отправлен: 30.04.2003, 21:22
Отправитель: Hangatyr


Отвечает Ramzes

Приветствую Вас, ZIrk!
По моему нет.
Если оно уже перехвачено, то в таблице прерываний будет записан его новый адрес, и никак нельзя определить, оригинальный это адрес или нет


Ответ отправлен: 02.05.2003, 13:57
Отправитель: Ramzes


 Вопрос № 3091

Доброго времени суток уважаемые экперты!
У меня к вам такой вопрос:
Вы наверное читали стать Станислава Ивлеева "The Real Hello World".Так вот там (см. Приложение) происходит перевод процессора в защищенный режим коммандой lmsw. Этот метод позаимствован у загрузчика в Linuxе. Траббол в том что у меня (Pentium III) не катит перевод в защищенный режим.Пробовал на Pentium II, Celeron, Athlon Xp, там все нормально работает. Не подскажите в чем дело?(использутся ассемблер as86).


Приложение:


Вопрос отправлен: 30.04.2003, 22:07
Отправитель: GringoMan

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

Отвечает Bob Johnson

Доброе время суток, GringoMan!
Попробуй так:
mov eax, cr0
or eax, 1
mov cr0, eax


Ответ отправлен: 01.05.2003, 16:28
Отправитель: Bob Johnson


Отвечает Broken Sword

Здравствуйте, GringoMan!
дело в Pentium III

Ответ отправлен: 01.05.2003, 01:31
Отправитель: Broken Sword


 Вопрос № 3093

Доброе время суток.
Хотел бы узнать: как используется сегментная и страничная адресация вместе
КАК В СТРАНИЧНОЙ указиваются GTD или LDT если они привязаны к физическим в отличии от страничной адресации.
ИЛИ Я ЧТО-ТО НЕПРАВИЛЬНО ПОНЯЛ????????????



Вопрос отправлен: 01.05.2003, 00:02
Отправитель: SWI (SWI2002@TUT.BY)

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

Отвечает Bob Johnson

Доброе время суток, SWI!
Страничная адресация является завершающим этапом внутреннего преобразования адреса процессором. Процесс преобразования адреса начинается с работы механизма сегментации, где адресное смещение внутри сегмента складывается с его базой для получения так называемого линейного адреса памяти. Линейный адрес однозначно идентифицирует ячейку памяти внутри виртуального адресного пространства процессора, которое создается за счет системы страничного преобразования. Виртуальное адресное пространство процессоров ix86 в общем случае составляет 4 Гб (2 в 32 степени). За счет механизма страничного преобразования виртуальное адресное пространство отображается множественным образом на физическую память компьютера (т.е. физическое адресное пространство, объем которого полностью определяется объемом ОЗУ) блоками по 4Кб (размер одной страницы). Множественность отображения позволяет настроить страничное преобразование так, чтобы нескольким различным виртуальным адресам соответствовал один едиственный физический адрес, т.е. разные участки виртуальной памяти на самом деле будут представлять собой один и тот же участок физической памяти.
В любом доступном месте процессор использует смещения внтури какого-либо сегмента, максимально задействуя таким образом систему сегментации. Но для этого необходимо также иметь и собственно этот сегмент, чтобы сложить это смещение с его базой и получить виртуальный (линейный) адрес. В тех местах, где это невозможно (например, при описании глобальных таблиц GDT и IDT, доступ к которым осуществляется вне зависимости от какого-либо сегмента, т.к. первая именно их и определяет, а вторая вообще предназначена для обработки прерываний, которые могут прийти абсолютно асинхронно) процессор используей линейные адреса непосредственно. В такой ситуации к ним применяется только механизм страничного преобразования.
В тех же местах, где и это невозможно (например, при описании каталога страниц, адрес которого находится в CR3) никакого преобразования не используется вообще.
Итак, подведем итог: везде используются смещения и механизм сегментации вместе со страничным преобразованием, кроме регистров IDT и GDT, в которых хранятся линейные адреса (т.е. к ним применяется только механизм страничного преобразования) и регистра CR3, который содержит физический адрес каталога страниц.


Ответ отправлен: 01.05.2003, 16:29
Отправитель: Bob Johnson


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

Приветствую Вас, SWI!
Сначала процессор преобразует сегментный адрес в линейный с помощью
дескрипторов сегмента, а уже затем, если включена страничная адресация,
линейный адрес преобразуется с помощью таблиц страниц в физический
адрес.
PS. А таблицы GTD и LDT привязаны не к физическим адресам, а к линейным.


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


Отвечает Ramzes

Доброе время суток, SWI!
При страничной адресации в таблицах GDT и LDT написаны не физические адреса. При обращении к какому-либо адресу, он сначала проходит через GDT/LDT, потом через таблицу страниц, после чего уже получается физический адрес.


Ответ отправлен: 02.05.2003, 14:00
Отправитель: Ramzes


Отвечает Hangatyr

Доброе время суток, SWI!
Не могу понять откуда ты взял, что GDT или LDT привязаны к физическим адресам - GTDR содержит линейный адрес и лимит. С помощью таблиц преобразования из него будет получен физический адрес. К тому же говорить "страничная адресация" немного неправильно.

Ответ отправлен: 02.05.2003, 09:32
Отправитель: Hangatyr


 Вопрос № 3095

Приветствую всех ассемблерщиков!
Требуется ваша квалифицированная помощь.
Я как-то работал с одной утилиткой, создающей партиции, и указал ей
создать образ диска C и сохранить его на диске D (винт у меня один -
рабит на логические C и D: 2 Гб и 6 Гб с FAT32). Прога же стала писать на D ПОВЕРХ всех данных!
Этот процесс я успел остановить в самом же начале, но было уже поздно: диск D был на 1%
копией C. Произошло это все несколько месяцев назад и , решив во чтобы-то не стало восстановить
утерянные данные, я и занялся изучением ассемблера (как же это все изменило мою жизнь!!!).
Роясь дисковыми редакторами в структуре диска, Я установил, что все утерянные данные
лежат на своих прежних местах (они даже как удаленные не помечены). Но добраться до них не так уж просто.
Дело в том, что программа что-то ещё изменила в структуре диска D, в результате чего отсчет кластеров
стал начинаться на два физ.сектора дальше: если раньше, например, 1 кластер начинался
на физ.секторе 4 121 504, то сейчас - на секторе 4 121 506. Данные как-бы располагаются на прежних
секторах, но уже в других кластерах.
При всем при этом я научился выуживать оттуда данные, используя тандем из трёх программ.
Но, т.к дело это достаточно утомительное, Я хотел бы у вас узнать - где(в каком месте) необходимо подправить
структуру диска, чтоб изменить отсчет кластеров на прежний.
Спасибо за внимание.
Александр.
t24691[DOG]mail.ru



Вопрос отправлен: 01.05.2003, 01:34
Отправитель: Александр

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

Отвечает Александр

Приветствую Вас, Александр!
Лучше, чем руками копаться в MBR и править Partition table - используй утилиту ptedit из partition magic.


Ответ отправлен: 04.05.2003, 22:41
Отправитель: Александр


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

Добрый день, Александр!
А ты уверен, что это программа изменила?
Насколько я помню в FAT нумерация начиналась со второго кластера,
а нулевой и первый отводились для идентификации FAT.


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


 Вопрос № 3096

Уважаемые Эксперты!
Мне требуется в программе работать сразу с несколькими немодальными
диалогами. MSDN говорит, что надо вызывать функцию IsDialogMessage
в цикле обработки сообщений приложения. А нельзя ли вставить
IsDialogMessage в оконные процедуры этих диалогов?
И ещё я хочу в этих диалогах использовать таблицы акселераторов
(у каждого диалога свою), так вот, можно ли TranslateAccelerator
вставить в оконную процедуру диалога, а не в основной цикл обработки
сообщений?



Вопрос отправлен: 01.05.2003, 07:07
Отправитель: Странные Игры

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

Отвечает Ramzes

Доброе время суток, Странные Игры!
А почему бы просто не использовать функцию CreateDialog, которая создает немодальный Dialog ?


Ответ отправлен: 02.05.2003, 14:01
Отправитель: Ramzes


 Вопрос № 3097

Здравствуйте!
У меня программка переваливает за 64Kb
Соответственно model tiny (которую я использовал) не пойдет. Использую flat - то же, что и tiny, но используются 32-битные сегменты, так что максимальный размер сегмента, содержащего и данные, и код, и стек, — 4 Мб.
Но вот проблема tlink выдает:
Fatal: 32-bit record encountered in module xxx.asm
Что делать?



Вопрос отправлен: 01.05.2003, 09:47
Отправитель: niikita (ntgu2002@mail.ru)

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

Отвечает Igoryk

Добрый день, niikita!
Максимальный размер сегмента в flat 4 Гб!
А так, ты наверное не поставил .386 в начале файла. А почему не пользуешься моделью small?

Ответ отправлен: 01.05.2003, 19:05
Отправитель: Igoryk


Отвечает Hangatyr

Здравствуйте, niikita!
1. 32 бита и 4 Мб? Это что, шутка?
2. Разумеется ни flat, ни tiny тут не прокатят - используй small или large.


Ответ отправлен: 01.05.2003, 17:42
Отправитель: Hangatyr


Отвечает keleb-glin

Здравствуйте, niikita!
Для tlink'a надо указать ключ /3, тогда будут компилироваться 32-разрядные файлы.
Хотя, если ты под ДОС, лучше юзать .ехе файлы.

Ответ отправлен: 01.05.2003, 15:05
Отправитель: keleb-glin


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

Доброе время суток, niikita!
Во-первых TLINK здесь не подойдет, попробуй TLINK32.
А во-вторых ты уверен, что у тебя этот файл будет работать?
ДОС не сможет с ним работать - это 100%, а Windows по-моему
понимает только EXE.


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


Отвечает Ramzes

Приветствую Вас, niikita!
Вообще-то про model flat максимальный размер сегмента не 4MB, a 4 GB !!!
Прислал бы хоть код в приложеннии...


Ответ отправлен: 02.05.2003, 14:04
Отправитель: Ramzes



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




 Администрирование *** Чат *** Форумы *** Регистрация эксперта *** Задать вопрос *** Поиск в базе ***
Проект экспертов RusFAQ.ru *** Фотоальбом *** Virus.RusFAQ.ru


Яндекс цитирования

© 2003 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное