Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 549
от 23.05.2003, 22:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3260 Отправлено ответов: 9522 Активность: 292.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 150.48 URL: Программирование [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 119.17 [Подробней >>] |
Knignick Статус: Доверительный Общий рейтинг: 113.42 [Подробней >>] |
_vt Статус: Доверительный Общий рейтинг: 120.33 [Подробней >>] |
Hayk Статус: Начальный Общий рейтинг: 111.62 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 120.42 [Подробней >>] |
Tigran K. Kalaidjian Статус: Опытный Общий рейтинг: 116.37 URL: Методы оптимизации работы ПК [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 122.78 URL: моя рассылка по Protected Mode [Подробней >>] |
Дмитрий Статус: Начальный Общий рейтинг: 134.78 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 139.06 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.1 URL: Страничка обо мне и моих друзьях Телефон: +7 902 168 02 65 [Подробней >>] |
Ramzes Статус: Опытный Общий рейтинг: 128.15 URL: Microsoft homepage [Подробней >>] |
Lynx Статус: Опытный Общий рейтинг: 132.35 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3228. К вопросу 3165. Не надо так грузить чела, у него по твоим рекомендациям не получится, эт тебе не рус... (ответов: 1)
Вопрос № 3229. Доброго времени суток :) На собственном опыте убедился :) (см. Приложение), что перехватом 0 канала ... (ответов: 2)
Вопрос № 3230. Здравствуйте, уважаемые господа эксперты! У меня к вам сразу несколько просьб… Если не вас не затруд... (ответов: 1)
Вопрос № 3232. Привет всем. 1. Праильно ли я понял принцип Плюг-энд-Плэй PCI-шины? На матери, в чипсете находится к... (ответов: 1)
Вопрос № 3234. Уважаемые господа Эксперты! Пишу резидент, запрашивающий пароль при открытии каталога. Как его, это ... (ответов: 4)
Вопрос № 3235. Доброго времени суток ! Спасибо Bob'у Johnson'у за ответ на вопрос №3229 (перепрограммирование та... (ответов: 2)
Вопрос № 3236. Здравствуйте, уважаемый Ayl ! Пишу через рассылку, т.к. не знаю Вашего e-mail, а Аси не имею :) ... (ответов: 1)
Вопрос № 3237. Всех кому не жалко прошу дать мне примео проги на АСМЕ работы с потрами асинхронного интерфейса (COM... (ответов: 2)
Вопрос № 3238. Привет, Broken Sword! Я хотел бы узнать существует ли такой отладчик с помощь которого можно исследо... (ответов: 1)
Вопрос № 3239. Привет всем. Пришлось к вам вопрос отсылать, т.к. в winNT был один ответ. Помогите дельным советом. ... (ответов: 1)
Вопрос № 3240. Здравствуйте Эксперты! Подскажите, плиз, пару инструкций: MMX SSE SSE2 3DNow! ... Т.е. мне нужна хот... (ответов: 4)
Вопрос № 3241. Test... Test...... (ответов: 2)
Вопрос № 3244. Доброе время суток! К вопросу №3240: Вижу некоторые халтурят, cpuid предлагают. Не покатит!... (ответов: 1)
Вопрос № 3245. Доброго времени суток, эксперты!! Свою тестовую программу привожу в приложении. Вопросы: Почему прог... (ответов: 3)
Вопросов: 14, ответов: 26
Вопрос № 3228 |
К вопросу 3165. Не надо так грузить чела, у него по твоим рекомендациям не получится, эт тебе не русская техника.
P.S. да я тут собственную ось делаю, а как коснулось крутых вопросов так и нек то не ответил.
Может поможешь, дай линки на спецов.
А ядро win2k я знаю ну мне нельзя говорить как работает, и поэтому хочу предложить src свои которые не отличаются от нормальных.
Вопрос отправлен: 17.05.2003, 00:54
Отправитель: Swi (Swi2002@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Swi!
Я так понимаю, этот вопрос предназначается только мне...
> К вопросу 3165. Не надо так грузить чела, у него по твоим рекомендациям не получится, эт тебе не русская техника
Ну и что, если не русская техника??? Что в русской технике диод проще выпаять и проверить? Если у него не получится по моим рекомендациям - возьми его электронный адрес и напиши ему свои, чтобы получилось. Ведь это главное.
> P.S. да я тут собственную ось делаю, а как коснулось крутых вопросов так и нек то не ответил
Wow... А ты уверен, что именно ось делаешь, а не вал? Вал отличается от оси тем, что вал передает полезный крутящий момент, а ось - нет. А не ответили тебе ничего видно потому, что надо было к профессору по сопромату обращаться, а не к программистам... Я вот, например, сопромат уже давно забыл...
> Может поможешь, дай линки на спецов
Ну даже не знаю... Я с осями особо не заморачивался, ведь уже все давно есть...
> А ядро win2k я знаю ну мне нельзя говорить как работает
- What's your name, baby?
- Bond, James Bond...
> хочу предложить src свои которые не отличаются от нормальных
Что значит "от нормальных"? Если они не отличаются, значит они и есть "нормальные", т.е. от Win2K чтоли? Предлагай, я только за.
P.S. Если вздумаешь мне письма писать, заведи себе ящик не на tut.by, т.к. туда я с NewMail отправить не могу ничего...
Ответ отправлен: 17.05.2003, 15:31
Отправитель: Bob Johnson
Вопрос № 3229 |
Доброго времени суток :)
На собственном опыте убедился :) (см. Приложение), что перехватом 0 канала таймера заниматься бесполезно, т.к. всё виснет намертво... Вопрос : а возможно ли каким-то образом либо выполнить перехват канала 0, чтобы оно всё не висло, либо отследить состояние "0" канала 2, т.е. когда он обнулил счётчик ?
Спасибо :)
S/
P.S. Нужно именно отследить время с точностью до 0.001, а каким образом... :)
Приложение:
Вопрос отправлен: 17.05.2003, 00:59
Отправитель: Sslash (assem@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Sslash!
Да все можно под ДОС делать! Только писать нужно не кривыми ручками. Посмотри на свой обработчик 8-го прерывания. Про одну ошибку - изменение регистра di тебе уже написали. Я еще вижу по крайней мере 2. Во-первых, нет возврата из процедуры, во-вторых, не сбрасывается контроллер прерываний. Объясняю по порядку.
Предположим, сработало прерывание от таймера. Контроллер прерываний получил сигнал от микросхемы таймера по входу IRQ0. После чего он блокирует обработку прерываний по всем линиям (прерывание от таймера имеет наивысший приоритет) и вызывает обработчик 8-го прерывания.
В обработчике ты увеличиваешь значение регистра di. Допустим, ты учел свою ошибку и вместо этого увеличиваешь значение переменной в памяти (inc cs:[tik_count]). Но дальше у тебя опять ничего работать не будет. Во-первых, у тебя закомментирован вызов старого обработчика (и это абсолютно правильно - нечего его вызывать, когда не нужно). Программа выполняется и следующей командой за увеличением счетчика идет... адрес старого обработчика прерываний. Опа! Тут и повиснем! Т.е.причина повисона даже не столько в изменении регистра, сколько в некорректном выполнении процедуры обработки прерывания (нельзя даже точно сказать, что за команды у тебя будут в этом месте).
Соответственно, после команды inc нужно написать код возврата из аппаратного прерывания. А он состоит из следующего набора команд:
push ax
mov al, 20h
out 20h, al
pop ax
iret
Ну и еще раз обращаю внимание на то, что такая работа возможна только под ЧИСТЫМ DOS'ом.
Ответ отправлен: 18.05.2003, 23:01
Отправитель: Ayl
Отвечает Bob Johnson
Здравствуйте, Sslash!
> что перехватом 0 канала таймера заниматься бесполезно, т.к. всё виснет намертво...
Так у тебя прога криво написана... Что это за обработчик такой с inc di??? У тебя ведь выполняется int 16h, а ты в это время ему "в подарок" изменяешь значение di... Если все писать правильно, то будет работать ок - так делали все, абсолютно все... Даже можешь посмотреть предыдущие выпуски рассылки - там есть программы, которые перехватывают int 8.
И частоту таймера тоже можно менять! (но это ТОЛЬКО под чистый ДОС) Я сам когда-то давно такое делал. Еще был музыкальный редактор FastTracker2, который изменял частоту прерываний от таймера для синтезирования музыки на PC-speaker'е.
Ответ отправлен: 17.05.2003, 15:31
Отправитель: Bob Johnson
Вопрос № 3230 |
Здравствуйте, уважаемые господа эксперты! У меня к вам сразу несколько просьб… Если не вас не затруднит, вышлите мне, пожалуйста, ставшие культовыми книги Касперского и Зубкова на мэйл – где ни искал эти книжки, везде в сокращенном варианте. И еще, что вы посоветуете из литературы для ознакомления на тему программирования микроконтроллеров, микропроцессорных комплектов… Заранее благодарен, с наилучшими пожеланиями, Владислав aka Gofai.
Вопрос отправлен: 17.05.2003, 13:25
Отправитель: Gofai (full_access@bk.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Gofai!
Ну книгу Зубкова можно найти на моей странице. Говорят, что она тоже не полная, но более полной вроде как и нет. bobjohnson.nm.ru
Ответ отправлен: 17.05.2003, 15:31
Отправитель: Bob Johnson
Вопрос № 3232 |
Привет всем.
1. Праильно ли я понял принцип Плюг-энд-Плэй PCI-шины?
На матери, в чипсете находится контроллер PCI-шины.
Он имеет 256 восьмибитных регистра конфигурационного пространства
для каждого PCI-устройства (слота). Устройств можно подрубать к PCI 4,
значит всего в контроллере для этого 1К памяти.
После POST, БИОС каким-то макаром тестит все PCI-устройства и записывает
в регистры контроллера инфу об устройствах.
2. Значит ли вышесказанное, что в PCI-устройствах тоже где-то занято 256 байт
под конфигурационные данные, которые потом и копируются в регистры контроллера?
3. Я понимаю что для чт/зп конфигурации есть свои циклы шины.
Только я не понял, ведь это чт/зп из/в контроллер(а). А какими сигналами/циклами/командами происходит
тот самый опрос устройств.? И кто это делает, процессор или аппаратно?
4.В конф-м простр-ве по адресам 0х10-0х24 лежат базовые адреса вв/выв и памяти. (так написано в одной статейке). Это адреса портов устройства получается?.
А по смещению 0х30 - адрес ПЗУ устр-ва. Это типа адрес порта для обращения к ПЗУ?
5. Кто определяет адреса портов? То есть вот я цепляю новое своё изобретение на PCI, так порты ему назначаться так, как я сам прошью в конфигурации? То есть, в таком случае важно не назначить адрес уже существующий, например, там порт клавы 0х60 и порч.?
З.Ы.
В общем звеняйте за сумбур, но это пока соответствует моему уровню понимания.
Так я и не понял кто, кого и когда опрашивает. Подробно нигде не нашёл.
Спасибо за инфу.
Вопрос отправлен: 17.05.2003, 23:54
Отправитель: Папа (rezervx@ezmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Мама!
> Устройств можно подрубать к PCI 4
А не 8? Не, ну я сам не знаю... Но 4 - это мало! У меня слотов-то только 6...
> что в PCI-устройствах тоже где-то занято 256 байт
Есть там ПЗУ-шка малая для этого. Но тока в PNP.
> какими сигналами/циклами/командами происходит
Ну видимо через порты или просто адреса мапятся на память.
> так порты ему назначаться так, как я сам прошью в конфигурации
порты выделяются исходя из свободных ресурсов.
....
в принципе достаточно бесполезный ответ, да?.... Но отказать читателю с таким именем...
Ответ отправлен: 19.05.2003, 02:21
Отправитель: Bob Johnson
Вопрос № 3234 |
Уважаемые господа Эксперты!
Пишу резидент, запрашивающий пароль при открытии каталога. Как его, это самое имя, можно перехватить под винду и под ДОС?
Вопрос отправлен: 18.05.2003, 22:06
Отправитель: Graff
[Следующий вопрос >>] [Список вопросов]
Отвечает Knignick
Приветствую Вас, Graff!
Есть такая прога filemon Марка Русиновича (http://www.sysinternals.com/) как раз перехватом обращений к файловой системе занимается. Я точно не помню с исходником она или без. Во вском случае на этом сайте можно найти ссылки на подходящую информацию, на английском правда.
Ответ отправлен: 18.05.2003, 23:11
Отправитель: Knignick
Отвечает Bob Johnson
Доброе время суток, Graff!
Под дос - int 21h. Поиск файла, открытие и создание файла.
Под win - драйвер, хук файловой системы (под 98 - IFSMgr_InstallFileSystemApiHook), то же самое - поиск файла, открытие и создание файла.
Ответ отправлен: 19.05.2003, 02:22
Отправитель: Bob Johnson
Отвечает _vt
Приветствую Вас, Graff!
Если для DOS, то необходимо перехватить обращения к функциям DOS для работы с файлами(открытие, поиск и т.д.)и отслеживать обращения к конкретному файлу или каталогу...
Ответ отправлен: 19.05.2003, 02:22
Отправитель: _vt
Отвечает Hayk
Приветствую Вас, Graff!
Pod Win32 nado napisat' File System driver.
Ответ отправлен: 19.05.2003, 11:00
Отправитель: Hayk
Вопрос № 3235 |
Доброго времени суток !
Спасибо Bob'у Johnson'у за ответ на вопрос №3229 (перепрограммирование таймера)!
1. С моей программой теперь всё ясно, но неясным остался вопрос относительно канала 2. Я не совсем точно описал ситуацию : система - ДОС, программа перепрограммировала канал 2 таймера. Может ли она поймать состояние "0" иначе, чем опрашивать в цикле таймер на предмет его текущего значения ?
2. Можно ли запретить перехват прерывания в ДОСе?
Допустим, если мой обработчик не может отдавать управление оригинальному, но и не может после отработки программы, его установившей, оставаться в памяти (случай, когда прерывание перехватили после нас, т.е. мы не можем восстановить первоначальное значение вектора, чтобы не нарушать работу второй программы, т.к. она хранит в кач-ве оригинального адрес нашего обработчика, и поэтому вынуждены остаться)?
Пример : обработчик 08h прерывания при перепрограммированном на очень малое значение таймере, чтобы не "ускорять" ОС, не отдаёт управление оригиналу, но и после отработки программы не может висеть в памяти, т.к. оригинал тогда всё ещё не будет получать управление...
Можно перехватить ещё и ah=35 int 21h, но ведь и прямую запись в таблицу векторов никто не отменял... :(
3. Каким образом Вин умудрился начхать на то, что мой обработчик 08h НЕ посылал EoI (End-of-Interrupt), при этом никакого оригинала не вызывая ? И что происходит, если контроллер прерываний не получает EoI ?
Извините, что настолько подробно, это для исключения разночтений :)
Спасибо ! :)
S/
Вопрос отправлен: 18.05.2003, 23:39
Отправитель: Sslash (assem@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Sslash!
2. Нет, запретить в DOS'е перехват прерывания нельзя, потому что действительно остается возможность прямой записи в таблицу векторов. Можно только усложнить жизнь таким попыткам. Во-первых, блокируешь установку через функцию 35h. Во-вторых, потому же таймеру проверяешь текущее значение в таблице векторов и, если нужно, восстанавливаешь предыдущее значение. Именно так действует большинство антивирусных мониторов. Они не позволяют после себя перехватывать важные прерывания (типа 21-го, 13-го и т.п.).
В-третьих, тебе никто не мешает в случае выгрузки своей программы при условии невозможности восстановления вектора просто заменить свой обработчик прерывания от таймера на заглушку, которая будет вызывать старый обработчик. Состояние же 0-го канал ты уже должен был восстановить.
3. Каким образом? Потому что защищенный режим. Все прерывания винда получает до твоей программы. Именно поэтому нельзя перехватить сочетания клавиш Ctrl+Alt+Del, Ctrl+Tab и т.п.
Ответ отправлен: 19.05.2003, 11:13
Отправитель: Ayl
Отвечает Bob Johnson
Добрый день, Sslash!
2. Нет нет нет ну и т.д.
Перехват того же прерывания после запуска твоей программы другой - это обычное дело для ДОС. Его никак нельзя избежать (ты правильно заметил, что прямую запись в таблицу прерываний никто не отменял). Поэтому любой резидент, перед тем как "уйти" проверяет, установлены ли вектора перехваченных им прерываний на его процедуры. Если нет, то он пишет сообщение, что выгрузка невозможна... В таком случае можешь оставлять в памяти децельный кусочек кода, который просто будет передавать управление предыдущему обработчику так часто, как это нужно и не делать больше ничего.
3. Вин забивает не на это. Ты думаешь, что передаешь 20h (или 60h) в порт 20h??? Так и хочется вспомнить фильм "The Matrix":
- "You think that's air you're breathing?" (Ты думаешь, воздухом дышишь?)
...
- What's the "windows"? (Что такое Windows?)
- Windows is around you. (Windows вокруг тебя...)
Вин давно сам поставил свой обработчик на прерывания от нулевого канала таймера (в 98, например, 0-й канал таймера вызывает int 50h, а все младшие номера - это обработка исключений...). Причем частота его выше, чем в ДОС. При этом уже он вызывает твои обработчики прерывания 8 во всех виртуальных машинах дос (для 98) с той частотой, с которой считает нужным (ну там это супер заморочено - каждая ВМ имеет свою таблицу прерываний, и, как следствие, свой обработчик каждого из них...). Он же и посылает 60h в порт 20h. А то что ты думаешь, что выполняешь свой долг посылая контроллеру прерываний в дос задаче EOI, давно под виндами превратилось в онанизм (ой, sorry)... :)
А вот если перехватить прерывания в винде, не вызвать старый обработчик и не послать EOI... Вот это будет "Стандартная процедура взаимодействия с пользователем в ОС Windows №1" (Windows Standard User Interaction Procedure #1 - WSUIP1) - зависание...
> Извините, что настолько подробно, это для исключения разночтений :)
Да нет, это ништяк, все бы так писали... Половина вопросов бы у них отпала в момент их задавания...
Ответ отправлен: 19.05.2003, 02:22
Отправитель: Bob Johnson
Вопрос № 3236 |
Здравствуйте, уважаемый Ayl !
Пишу через рассылку, т.к. не знаю Вашего e-mail, а Аси не имею :)
Возможно, Вам будет интересно узнать, что моя программа (ну, ессно, в рабочем варианте :) ) чудненько отработала под Win98SЕ, а не только под чистым ДОСом :)
Также спасибо за ответ :) А про iret и конец прерывания я нашёл, когда полез разбираться, причём тут inc di :)
Спасибо :)
S/
Приложение:
Вопрос отправлен: 19.05.2003, 00:38
Отправитель: Sslash (assem@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Sslash!
Ну да, насчет винды я немного погорячился. Только, если не ошибаюсь, под виндой нельзя гарантировать точные промежутки времени между срабатыванием 8-го прерывания в DOS-сессии.
Ответ отправлен: 19.05.2003, 15:30
Отправитель: Ayl
Вопрос № 3237 |
Всех кому не жалко прошу дать мне примео проги на АСМЕ работы с потрами асинхронного интерфейса (COM-порты). Т.е прога для передатчика и приёмника или два в одном. Сам пробовал ничего не выходит. После генерации прерывания от порта от приёме данных процедура обработки управления не получает а пересылка работает через раз.
Спасибо!!!!!
Вопрос отправлен: 19.05.2003, 00:59
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Доброе время суток, Александр!
Посмотри этот фрагмент - вроде должен работать...
Приложение:
Ответ отправлен: 19.05.2003, 13:11
Отправитель: Hangatyr
Отвечает Tigran K. Kalaidjian
Добрый день, Александр!
Пишите на kalaidjian@pochtamt.ru - вышлю примеры программ и файллист своей BBS для ознакомления с тем, что есть.
Ответ отправлен: 22.05.2003, 11:20
Отправитель: Tigran K. Kalaidjian
Вопрос № 3238 |
Привет, Broken Sword!
Я хотел бы узнать существует ли такой отладчик с помощь которого можно исследовать защищенный режим?
Вопрос отправлен: 19.05.2003, 12:24
Отправитель: Alex
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, Alex!
конечно: SoftICE, TRW2000
но они все привязаны под конкретную ОСЬ.
Так чтоб голый PM потестить после перехода из реального - такого нет, хотя конечно есть, но я не знаю
Ответ отправлен: 19.05.2003, 18:30
Отправитель: Broken Sword
Вопрос № 3239 |
Привет всем.
Пришлось к вам вопрос отсылать, т.к. в winNT был один ответ.
Помогите дельным советом.
Есть у меня винт WD10Gb, разбит он на два раздела, один NTFS с win2k sp1, второй FAT32(без оси). Решил я создать ещё один для Дос, делал всё это я в win2k PQ Partition Magic 6 или 7 версии. С раздела NTFS взял немного свободного места для нового. При перезагрузке винды PQPM начал разбивку, я ушел, прихожу... окно то-же, и ошибка(и) я их, к сожалению, не запомнил. рестарт... win loading... синий экран с ошибкой INACCESSABLE_BOOT_DEVICE и такое всё время. Проверил я раздел тем же PQ под Дос, пишет ошибку
44-Seek error, на сайт я не ходил, что за ошибка не знаю.
Отнёс винт к знакомому, у него winXP, по его словам при открытии винда в винде, винда пишет: "диск неотфотматирован, произвести его формат?". В с-вах винта его размер ноль, файловая система RAW(по-моему так).
На этом винте, как раз в разделе NTFS, жизнено важные для меня данные. Я думаю, что раздел NTFS был с ошибками до переразбивки. Второй раздел FAT32 я создал без проблем, той-же прогой и тем же способом. Я не знаю можно ли добраться до моих данных их там около 7Gb, и восстановть винт.
Очень надеюсь на ваши ответы.
Вопрос отправлен: 19.05.2003, 13:20
Отправитель: Дима Мусиенко (musienko@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Дмитрий
Добрый день, Дима Мусиенко!
1) Что-бы тебе не посоветовали. Ты должен осознать, что применение тобой программ для автоматического восстановления данных может еще более запутать ситуацию. Поэтому прежде чем предпринять что-либо подумай несколько раз. Если эти данные действительно для тебя жизненно важные, то на твоем месте я бы попытался сделать посекторную копию винта и извращался бы с копией. Возможно-ли такое в твоей ситуации сказать сложно.
2) Тут я чего-то недопонял: "... win loading ... синий экран с ошибкой ... и такое все время". С покоцанного раздела все-таки чего-то грузится? Может я опишу все немного не научным языком, но это всего-лишь выдержки из опыта работы с PQPM. PQPM перераспределяет разделы следующим образом:если на месте формируемого раздела есть данные, то он копирует эти данные в неиспользуемую часть старого раздела (это естественно, т. к. данные в старом разделе не должны быть потеряны). Так, что данные твои сохранились в любом случае. Другой вопрос - сможешь ли ты получить к ним досту средствами ОС (а не ручным прочесыванием секторов). Можно попробовать следующий трюк. Загрузись с дискетки Win98 с поддержкой CD-ROM. Возьми загрузочный диск Red Hat Linux и начни установку (директория dosutils, запусти autoboot.bat). Ответь на стандартные вопросы про клаву, сидюк и т. д. Когда дойдешь до разбивки разделов выбирай не Disk Druid а FDisk. Выбери HDD и нужную тебе партицию с NTFS и нажми Edit. Прога вывалится в командную строку (типа Доса). Данная версия FDisk не портит файлы в партициях после внесения изменений, в отличие от fdisk для Windows/DOS. ВНИМАНИЕ! Это проверено лично мной для FAT32 разделов и дистрибутива Red Hat Linux 5 (Black Cat Linux 6.2). Как ситуация складывается для NTFS и других дистрибутивов я не знаю. По команде p на экран выведутся данные о партициях для текущего HDD. Перепиши все на листок. А так-же проверь: у тебя разница между конечным и начальным адресами NTFS партиции должна быть больше нуля, а partition system id для NTFS должна быть равна 7. Если это так, то переходи сразу к пункту 3), здесь я тебе больше не помощник. Если нет - установи командой t partition system id = 7. Ну и возможно придется подобрать длину раздела. Упражняйся до посинения. Если в чем-то не уверен, то жми q (выход без сохранения). Команда w запишет на диск все внесенные изменения.
3) Если ничего не помогло, то иди на DerStein.ru. Там куча программ для восстановления данных (в том числе и для WD). Еще по-моему есть DataRecovery.ru. Короче - удачи! Если что - пиши мылом.
Ответ отправлен: 20.05.2003, 09:41
Отправитель: Дмитрий
Вопрос № 3240 |
Здравствуйте Эксперты!
Подскажите, плиз, пару инструкций:
MMX
SSE
SSE2
3DNow!
...
Т.е. мне нужна хотя-бы одна инструкция каждого довольно нового рассширения. В 10 раз лучше будет, если с опкодами инструкции будут их 16-ричные коды. Пояснения, что делают инструкции не нужны, т.к. вся эта инфа нужна для определения поддерживает ли проц. данные расширения.
Вопрос отправлен: 19.05.2003, 15:23
Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Илья!
Во сто раз лучше будет, если ты используешь инструкцию cpuid. Она тебе всю информацию выдаст.
Ответ отправлен: 19.05.2003, 17:37
Отправитель: masquer
Отвечает _vt
Добрый день, Илья!
emms ;инструкция MMX (код инструкции 0F 77)
femms ; инструкция 3dNow! (0F 0E)
orps xmm1,xmm2 ; инструкция SSE (0F 56 CA)
paddq xmm1,xmm2 ; инструкция SSE2 (0F D4 CA)
P.S. Определять расширения, поддерживаемые процессором, лучше через cpuid с разными параметрами. Помимо набора команд можно узнать много других подробностей. Подробно всё описано у производителей (Intel,AMD и др.)
Ответ отправлен: 19.05.2003, 22:05
Отправитель: _vt
Отвечает Bob Johnson
Здравствуйте, Илья!
Ну-ну...
> 10 раз лучше будет, если с опкодами инструкции будут их 16-ричные коды
В 100 раз лучше будет тебе скачать доку от насма... http://sourceforge.net/projects/nasm кажется. Там есть это.
> вся эта инфа нужна для определения поддерживает ли проц. данные расширения
За тебя уже давно поработали и придумали команду cpuid - она вернет тебе достаточно информации о проце.
Ответ отправлен: 20.05.2003, 00:18
Отправитель: Bob Johnson
Отвечает Gibbel
Добрый день, Илья!
Скажу более - все эти наборы инструкций можно найти на сайтах AMD и Intel.
Ответ отправлен: 22.05.2003, 13:43
Отправитель: Gibbel
Вопрос № 3241 |
Test...
Test...
Приложение:
Вопрос отправлен: 19.05.2003, 17:31
Отправитель: Test
[Следующий вопрос >>] [Список вопросов]
Отвечает Ramzes
Добрый день, Test!
Весело :))
Только почему именно в рассылку Ассемблера ?
Ответ отправлен: 19.05.2003, 17:55
Отправитель: Ramzes
Отвечает Bob Johnson
Добрый день, Test!
По ходу нам скоро будет всем очень хорошо, если кто-то пишет автоматический отправник вопросов... песики...
Ответ отправлен: 20.05.2003, 00:18
Отправитель: Bob Johnson
Вопрос № 3244 |
Доброе время суток!
К вопросу №3240:
Вижу некоторые халтурят, cpuid предлагают. Не покатит!
Вопрос отправлен: 19.05.2003, 20:29
Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Илья!
Согласно твоих условий - покатит. Если ты собираешься по эксепшену ловить некорректный опкод - дело твое, на улицу тоже можно не через дверь, а через окно выходить...
Ответ отправлен: 20.05.2003, 13:06
Отправитель: masquer
Вопрос № 3245 |
Доброго времени суток, эксперты!!
Свою тестовую программу привожу в приложении.
Вопросы:
Почему программа отказывается работать в таком исходном варианте,и начинает работать только когда изменяется одна строчка, а именно call dword ptr [old_08]на call cs:old_08?Как программа правильно передаёт управление,если переменная old_08 объявлена в data segment, а префикс перед командой call стоит cs?
Приложение:
Вопрос отправлен: 19.05.2003, 22:03
Отправитель: Nafanja
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Nafanja!
Не, ну ты молодец - объявляешь переменную в сегменте дата, а в обработчике прерывания не инициализировав ничем сегмент ds обращаешься через него к памяти. В таком случае адрес старого обработчика необходимо запоминать в сегменте кода и обращаться к нему через cs, или писать как в начале
mov ax, data
mov ds, ax
Ответ отправлен: 20.05.2003, 14:20
Отправитель: Bob Johnson
Отвечает Lynx
Добрый день, Nafanja!
В данном контексте cs указывает на сегмент в который надо передавать управление, а остальное - указывает на адрес в этом сегменте. Поэтому, что бы выполнить переход тебе надо сначала указать сегмент в котором находиться вызываемая процедура. Отсюда и cs требует.
Ответ отправлен: 20.05.2003, 17:52
Отправитель: Lynx
Отвечает Дмитрий
Добрый день, Nafanja!
Не знаю, как у других, но у меня Masm 5.01 обрабатывая call dword ptr [old_08] и call old_08 породил одинаковые байтики FF 1E 0000. Здесь 0000 - это смещение, по которому находится old_08. При компиляции call cs:old_08 рождается 2E FF 1E 0000. Здесь 2E уже явно указывает, что смещение берется относительно адреса, указанного в cs. Почему прога правильно передает управление? По чистой случайности! Просто к моменту исполнения инструкции call cs:old_08 в регистрах ds и cs находятся одинаковые значения. Так происходит по многим причинам. Во-первых: модель памяти и группировка сегментов у тебя явным образом не указаны. То, что ты объявил с помощью assume три разных сегмента еще не означает, что их в твоей программе появится ровно три. Ввиду особой группировки сегментов (а точнее ее отсутствии - см. приложение) у тебя в момент исполнения ds == cs. Вообще получился какой-то винигрет из assume, segment и begin: end begin (кстати у меня при явном определении модели памяти Masm начинает ругаться на такое расположение assume/begin). Лучше использовать упрощенные директивы определения сегментов (.data .code и т. д.). Алгоритм на правильность не проверял. Ковырял программку под CV.
Приложение:
Ответ отправлен: 21.05.2003, 06:44
Отправитель: Дмитрий
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (40) C / C++ (32) Perl (7) Builder / Delphi (18) Pascal (31) Basic / VBA (15) Java / JavaScript (12) PHP (7) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (44) Windows NT/2000/XP (33) "Железо" (32) Поиск информации (16) |
Администратору Windows NT/2000/XP (21) Linux / Unix (10) |
Юристу Гражданское право (5) Семейное право (3) Трудовое право (4) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
© 2003 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||