Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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 |
Отписаться
Убрать рекламу |
В избранное | ||