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

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


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

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

Выпуск № 461
от 07.01.2003, 00:10

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.72
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 138.55
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 146.93
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 118.2
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.39
[Подробней >>]
Traish
Статус: Опытный
Общий рейтинг: 126.85
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 113.75
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 108.07
URL: мощный файловый архив
[Подробней >>]
Igoryk
Статус: Начальный
Общий рейтинг: 125.49
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 121.6
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 д.
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 114.56
URL: Мой сайтик...
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 127.45
URL: моя рассылка по Protected Mode
[Подробней >>]


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

Вопрос № 2313. Поздравляю Всех с Новым годом!Нужна Ваша помощь!Я решил апгрейдитьVIDEO BIOS-Intel740(8mb),чтобы-зар... (ответов: 3)
Вопрос № 2314. Здравствуйте УВ. эксперты!!! Наверное следует этот вопрос задать в Поиск Информации, но там вряд ли... (ответов: 2)
Вопрос № 2315. Здравствыйте. У меня вопрос: Хотел поставить себе 2 видео карты одна PCI (ATI Tec.) 2M памяти, моя о... (ответов: 1)
Вопрос № 2316. Доброго времени суток, уважаемые эксперты! Заранее прошу прощения за оффтопик. Возможно ли средствам... (ответов: 6)
Вопрос № 2317. Доброе время суток, уважаемые эсперты! Как осуществяется перепрошивка BIOS'а? Это мне преп. навеси... (ответов: 1)
Вопрос № 2318. plz help!! est igra red alert 2 yuri, nado crack dla dopolnitelnih deneg, i kartu otkrit, chtob legc... (ответов: 4)
Вопрос № 2319. Доброе время суток, уважаемые Эксперты! Не поделитесь ли вы алгоритмом вычисления или докой по CRC32... (ответов: 5)
Вопрос № 2320. Вот решил написать програмку, которая выводила на экран командную строку, с которой её запустили, вр... (ответов: 6)

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


 Вопрос № 2313

Поздравляю Всех с Новым годом!Нужна Ваша помощь!Я решил апгрейдитьVIDEO BIOS-Intel740(8mb),чтобы-заработала-3D-DirectX8.Однако-после этого-исчезBIOS,который выводиься на экран-при-загрузке-компа,а-затем-при включении-компа-стал-выключаться-монитор.Как-с-помощью-АСМа-устранить-этот-дефект-и-вернуть-BIOS?
мать-SE440BX,BIOS-PHOENIX4.0-Relise-6.0,v/c-Intel740(8mb),OS-WinME.
С-уважением-Слава.



Вопрос отправлен: 02.01.2003, 02:46
Отправитель: Slava (toyt@online.sinor.ru)

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

Отвечает Bob Johnson

Добрый день, Slava!
Тебе тут не асм нужен... а программа, которая перешивает BIOS на видеокарте. Попробуй другую версию BIOS или этот же но зашить еще раз. i740 этим болеет.
Есть и еще более альтернативный вариант - вполне логично тебе предложить поменять видеокарту на что-нибудь от NVidia (GF2 - GF4).
P.S. А что у тебя пробел сломался?


Ответ отправлен: 03.01.2003, 18:09
Отправитель: Bob Johnson


Отвечает Maverick

Приветствую Вас, Slava!
Ну ты походу биос глюкнутый воткнул или не родной.
Перешивай заново.
А при чем асм, ты хочешь прошивальщик свой писать?
Есть вирус такой, Чернобыль,(непревзойденная вещь, еще заполиморфить его) он нехило биос перешивает :)))


Ответ отправлен: 02.01.2003, 14:50
Отправитель: Maverick


Отвечает masquer

Здравствуйте, Slava!
С помошью асма? Элементарно! Берешь где-нибудь другой комп, на асме пишешь проги, продаешь, на вырученные деньги покупаешь себе комп.
Меняй карту, одним словом.

Ответ отправлен: 03.01.2003, 12:39
Отправитель: masquer


 Вопрос № 2314

Здравствуйте УВ. эксперты!!!
Наверное следует этот вопрос задать в Поиск Информации, но там вряд ли знают об этом...
Так вот.
Помогите найти подробную информацию о работе прерываний 18h & 19h. (Или вышлите по почте). Т.е. все о них!!!(А то в справочниках ограничиваются только общими сведеньями)
Зарание спасибо!!!



Вопрос отправлен: 02.01.2003, 03:53
Отправитель: R@ptor (Spinosaur@narod.ru)

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

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

Здравствуйте, R@ptor!
А чего о них расказывать? Оба этих прерывания используются для
перезагрузки компьютера. Точнее для перезагрузки вызывается
прерывание INT 19h, причем память при этом не очищается и
переопределенные вектора прерываний не восстанавливаются. Во время
перезагрузки BIOS ищет BOOT-сектор на дискете (если это не запрещено
настройками) и загружает его в память по адресу 0000:7С00.
Если этот сектор не найден, производится поиск сектора MBR по
всем жестким дискам и загрузка его в память по тому же адресу.
Если же и сектор MBR не будет найден, то вызывается прерывание
INT 18h. В оригинальном IBM PC это прерывание включало встроенный
BASIC, а в нынешних реализациях оно просто выводит надпись о том
что загрузочный диск не найден.
PS. Конечно в современных BIOS загрузка не ограничена только дискетой
и HDD, однако принцип остается тем же самым.


Ответ отправлен: 02.01.2003, 12:24
Отправитель: ASMодей


Отвечает Ayl

Приветствую Вас, R@ptor!
А что тебя в них интересует?
int 18h - это адрес интерпретатора BASIC, который поставлялся только с оригинальными IBM PC. Даже в IBM XT его уже не было. Так что, боюсь, ничего с этим прерыванием у тебя не получится.
int 19h - точка входа для программы начальной загрузки системы (сюда передается управление после выполнения POST). Процедура по этому адресу выполняет загрузку boot-сектора дискеты или из активного раздела и передает ему управление.

Ответ отправлен: 04.01.2003, 14:30
Отправитель: Ayl


 Вопрос № 2315

Здравствыйте.
У меня вопрос:
Хотел поставить себе 2 видео карты одна PCI (ATI Tec.) 2M памяти, моя основная и недавно нашёл карту ISA (Trident Tec.) на чипе TVGA9000i-3 с 512k памяти за 20р. отдали хотел из неё сварганить маленький видео передатчик было бы прикольно что нибудь на телек соседям или в соседнюю комнату отправить. Ну вообщем это всё так для введения проблема вот в чём: Когда стоят одновременно две карты при загрузке BIOS включает Trident, ATI вообще не подаёт признаков жизни дальше загружается WinMe в режиме 640*480*16 говорит что видео адаптер настроен не праильно (ATI по прежнему молчит). Про ATI в Система написано что она всё OK(смотрел, выделены вообще левые ресурсы(адреса памяти) и не все), а неполадки имеются с главнм видео адаптером. Драйверов в нете конкретно под этот чипсет(TVGA9000i-3) не нашёл, есть пара универсальных но они практически с ней не работают. Без ATI (её нет в слоте)+.drv удалось добиться 640*480*256 и то с поблемами: режим DOSа вообще не включается т.е не появляется окна и прога экстренно завешается. Смущает то что BIOS включает Trident, а ATI на сколько я смог разобраться не выделяется вообще ни каких ресурсов, копался в настройках BIOSа (он: пни и полетел т.е. Plug and Play) не помогло. У кого есть соображеня по этому поводу или драйвер поделитесь. Кстати чуть не забыл С НОВЫМ ГОДОМ! всех.



Вопрос отправлен: 02.01.2003, 04:36
Отправитель: Mio (rs-str@mail.ru)

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

Отвечает Bob Johnson

Приветствую Вас, Mio!
В современных BIOS есть такая опция - какую карточку инициализировать и использовать, если их несколько - AGP или PCI. Посмотри, может есть и у тебя такая же опция (только ISA/PCI) или вообще что-нибудь типа Primary Videoadapter.


Ответ отправлен: 03.01.2003, 18:09
Отправитель: Bob Johnson


 Вопрос № 2316

Доброго времени суток, уважаемые эксперты!
Заранее прошу прощения за оффтопик. Возможно ли средствами API функций получить на экране монитора эффект 25 кадра?



Вопрос отправлен: 02.01.2003, 12:33
Отправитель: DeMax (maximov_denis@mail.ru)

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

Отвечает Traish

Здравствуйте, DeMax!
Ничего не могу сказать относительно API, а вот по поводу самой идеи реализации 25-го на компе у меня есть некоторые сомнения - ведь изображение на экране монитора (равно как и телевизора) обновляется построчно. Можно конечно, показывать какую-нибудь картинку раз в секунду, но думаю, это будет заметно даже если писать непосредственно в видеобуфер.


Ответ отправлен: 02.01.2003, 16:19
Отправитель: Traish


Отвечает baldr

Доброе время суток, DeMax!
Заявляю тебе - НЕТ!
И не слушай никого! Во-первых, незаметно для пользователя подменять экран несколько раз в
секунду ты не сможешь (во всяком случае на современных компах еще не сможешь - не хватит!),
потому как нынешний пользователь ставит себе 100Hz и все равно умудряется замечать какое-то
мерцание (это еще без твоего кадра!). А во-вторых, экран большой и вовремя и достаточно
точно синхронизировать этот "кадр" с разверткой не получится из-за медленного заполнения
памяти необходимым мусором... У телевизора другой способ приема информации и там это
теоретически возможно. Практически, насколько мне известно, это еще не делали. Все, что
писали в газетах и весь этот шум насчет "25 кадра" - это просто сильно раздутая утка!
Так что дело не в API-функциях, а просто в технически невозможной реализации...


Ответ отправлен: 03.01.2003, 23:19
Отправитель: baldr


Отвечает Eugene

Добрый день, DeMax!
Можно сделать таймер с периодом срабатывания 1с, по которому выводить картинку на весь экран и сразу убирать. Чем не эффект 25-го кадра?

Ответ отправлен: 02.01.2003, 12:48
Отправитель: Eugene


Отвечает Bob Johnson

Добрый день, DeMax!
Средствами API возможно практически все, а что нельзя - то позволяет DDK. Только сдается мне, что 25-й кадр - это просто миф... Т.к. если на 1/25 секунды показать человеку совсем другое изображение (отличное от остального), то все равно он заметит, что что-то мелькнуло. А если показывать одно и тоже каждый 25 кадр - то он сможет и рассмотреть, что это. Тем более, что на мониторе PC частота вертикальной развертки не 25 (как на кинопроекторе), не 50 (как на обычном телевизоре), а 75, 85, 100 и иногда выше Гц. Т.е. если она 85 Гц тебе нужно не 25 кадр, а, по хорошему, 85-й... Ну да ладно.
Вариант может быть таким: ты создаешь невидимое окно, в котором у тебя нарисовано то, что нужно (точнее - сам рисуешь на WM_ERASEBKGND). Далее ты делаешь его WS_EX_TOPMOST (или как там) и делаешь VISIBLE, да еще и FOREGROUND - тогда оно сразу же появляется сверху всего на экране. Спустя нужное время (10 - 20 мс) ты его опять делаешь INVISIBLE. Но вот тут ось попросит все остальные окна перерисоваться... Вот это будет не очень. Кроме того фокус обязательно не туда встанет. Но ты можешь попробовать так сделать, посмотреть, что получится и прийти в выводу, что тебе это не нужно... :-)


Ответ отправлен: 03.01.2003, 18:09
Отправитель: Bob Johnson


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

Приветствую Вас, DeMax!
Все эти разговоры о 25 кадре - полнейшая чушь. Посуди сам:
играя в какую нибудь игру можно добиться быстродействия до сотни
кадров в секунду. И что, каждый 25-й кадр будет откладываться у тебя
в подсознании? А в стандарте телевидения NTSC частота вообще 33 кадра.
Что здесь делать?


Ответ отправлен: 03.01.2003, 09:40
Отправитель: ASMодей


Отвечает masquer

Здравствуйте, DeMax!
Нет, конечно. Это дегенераты-журналисты придумали идею о вирусе-убийце, на этом, якобы, основанном...

Ответ отправлен: 03.01.2003, 12:44
Отправитель: masquer


 Вопрос № 2317

Доброе время суток, уважаемые эсперты!

Как осуществяется перепрошивка BIOS'а? Это мне преп. навесидл в качестве реферата. Идиотизм, конечно, можно подумать я буду писать апдейты для биосов!.. искал в и-нете, но там только СТИРАНИЕ и то куски из каких-то вирусов без всяких комментариев. Это делается чере порты? Или через прерывания? И, пожалуйста, если можно рабочий код. И ещё, если можно, -- информацию (хотя бы в общем) что там должно быть в этом апдейте? Что вообще программа биоса делает.
Извиняюсь, если вопрос дурацкий.



Вопрос отправлен: 02.01.2003, 14:37
Отправитель: Ingrem

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

Отвечает Igoryk

Здравствуйте, Ingrem!
http://www.bios.ru/aboutbios.shtml
По ссылке найдешь много интересного о прошивке BIOS.

Ответ отправлен: 02.01.2003, 15:24
Отправитель: Igoryk


 Вопрос № 2318

plz help!!
est igra red alert 2 yuri, nado crack dla dopolnitelnih deneg, i kartu otkrit, chtob legche zhit.
spasibo



Вопрос отправлен: 02.01.2003, 16:00
Отправитель: sasha (felistovichs@rambler.ru)

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

Отвечает Maverick

Доброе время суток, sasha!
А что обыкновенным взломщиком не можешь деньги сломать?
Поищи взломщик ArtMoney и попробуй им.
Или ты хочешь чтоб тебе патч написали :)


Ответ отправлен: 03.01.2003, 14:38
Отправитель: Maverick


Отвечает Sensey

Доброе время суток, sasha!
>:-(
Ставишь IDA Pro.
Дизасмишь прогу, смотришь где идет проверка на закрытость карты или кол-во денег. Соответственно находишь смещения (адреса) этих переменных. Пишешь прогу, которая изменяет эти данные на лету в процессе работы (игры).
Или просто забиваешь проверки на нехватку например...
ЗЫ Это ответ с позиции программиста-Ассемблерщика. Тему рассылки читал? Вот!


Ответ отправлен: 02.01.2003, 16:56
Отправитель: Sensey


Отвечает masquer

Добрый день, sasha!
Хорошо, ест игра два юрия, приятного ей аппетита. Дальше, надо крак для дополнительных денег - т.е. много денег дополнительных и для них нужен крак, интересно 8-0. Ну, и карту открыть, чтоб легче жить - фигня, если есть куча дополнительных денег - мне и так легче жить будет.
Это я учусь читать транслит, как понял - так и ответил. Намек понял...

Ответ отправлен: 03.01.2003, 12:55
Отправитель: masquer


Отвечает Bob Johnson

Добрый день, sasha!
1. Вариант 1: Magic Trainer Creator.
2. Вариант 2: Internet и поисковый сервер. Найдет обязательно.


Ответ отправлен: 03.01.2003, 18:09
Отправитель: Bob Johnson


 Вопрос № 2319

Доброе время суток, уважаемые Эксперты!
Не поделитесь ли вы алгоритмом вычисления или докой по CRC32, а конкретно, меня интерисует,
как она вычисляется. Я нашел исходник, но не могу выделить из него алгоритм.
Заранее благодарен.



Вопрос отправлен: 02.01.2003, 18:59
Отправитель: Davv (aderadon@mail.ru)

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

Отвечает Traish

Приветствую Вас, Davv!
Тут в двух словах не объяснишь, в общем, доку скинул на мыло.


Ответ отправлен: 02.01.2003, 19:45
Отправитель: Traish


Отвечает Maverick

Доброе время суток, Davv!
Есть куча способов, у Юрова довольно неплохо это описано.


Ответ отправлен: 03.01.2003, 14:38
Отправитель: Maverick


Отвечает Portnov

Добрый день, Davv!
Держите на мыло.

Ответ отправлен: 03.01.2003, 17:08
Отправитель: Portnov


Отвечает Broken Sword

Доброе время суток, Davv!
поделимся.
Целую беззнаковую 32-х битовую переменную инициализируем значением 0FFFFFFFFh. Далее умножаем на 2 аргумент функции и значение CRC. Если старшие биты окажутся не равны, тогда CRC = CRC XOR 0xEDB88320. И так до последнего бита аргумента. Если аргумент строковая (или какая-либо другая последовательность), то операции проводятся над двойными словами. В каноническом варианте в конце цикла требуют инвертировать все биты CRC, но это играет роль исключительно для совместимости результатов, полученного разными функциями, и никак не сказывается на качестве. "Магическое число" 0xEDB88320 есть стандартный полином, менять который не следует, т.к. это ухудшит качество функции.


Приложение:

Ответ отправлен: 02.01.2003, 21:37
Отправитель: Broken Sword


Отвечает masquer

Здравствуйте, Davv!
Сначала проинициализируем таблицу (динамически), а можно и статическую держать
 mov ecx, 256
mov edx, 0EDB88320h ; стандартный полином
@@BL:
mov eax, ecx
push ecx
mov ecx, 8
@@SL:
shr eax, 1
jnc @F
xor eax, edx
@@:
loop @@SL
pop ecx
mov crc32tab[ecx*4], eax
loop @@BL
mov esi, offset teststr
xor eax, eax
dec eax
mov ecx, 9
@@next:
xor edx, edx
mov dl, byte ptr [esi]
xor dl, al
shr eax, 8
xor eax, crc32tab[edx*4]
inc esi
dec ecx
jcxz @@exit
jmp @@next
@@exit:

В принципе, достаточно примитивный алгоритм, из кода все понятно.

Ответ отправлен: 03.01.2003, 12:51
Отправитель: masquer


 Вопрос № 2320

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


Приложение:


Вопрос отправлен: 03.01.2003, 00:01
Отправитель: spaces (s-p-a-c-e-s@narod.ru)

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

Отвечает Maverick

Добрый день, spaces!
А что тебе не нравится в ее работе?
Я не знаю синтаксиса фасма, вот переделал ее под Tasm и вроде все работает.
.model tiny
.386
.code
org 100h
start:

mov di, 80 ;узнаём длину коммандной строки
add di, 81 ;вычисляем её конец
mov ah, [baks] ;записываем в конец символ доллара
mov [di], ah ;чтобы остановить вывод символов
mov dx, 82 ;и выводим командную строку
mov ah,09h ;функцией 9h
int 21h
int 20h
baks db '$'
end start


Ответ отправлен: 03.01.2003, 14:50
Отправитель: Maverick


Отвечает Portnov

Здравствуйте, spaces!
mov di,[80h] - глупость! Положит в DI СЛОВО по CS:[80h]! А надо - байт! Делается это, например, так:
xor di,di
xor ah,ah
mov al,[80h]
mov di, ax
Вот, теперь в DI - длина командной строки... Дальше по тексту.
С уважением, Portnov.

Ответ отправлен: 03.01.2003, 17:18
Отправитель: Portnov


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

Добрый день, spaces!
Дело в том, что первой же командой ты занес в DI неправильное значение.
Из памяти нужно было взять байт, а ты взял слово. Так что сделай
после этой команды AND DI,0xFF или используй 8-разрядный регистр.


Ответ отправлен: 03.01.2003, 09:40
Отправитель: ASMодей


Отвечает Traish

Добрый день, spaces!
Не работает, потому что ты в di загружаешь слово, а надо байт. Короче, исправленный вариант в приложении. Да, и вот еще что - лучше все же выводить строку с 81h, потому что в случае нулевой строки символ '$' окажется в 81h, а ты выведешь строку, начиная с 82h, и получишь мусор.

Приложение:

Ответ отправлен: 03.01.2003, 10:27
Отправитель: Traish


Отвечает Igoryk

Здравствуйте, spaces!
Код в приложении делает то, что Вам надо. Сделан он в TASMe. Ваша ошибка заключалась в том, что вы пытались считать байт (CS:0080h), помещая его в 16-битный регистр (2-х байтный), потому было не точно опредедено начало командной строки и ее длина.

Приложение:

Ответ отправлен: 03.01.2003, 12:03
Отправитель: Igoryk


Отвечает Bob Johnson

Здравствуйте, spaces!
Под длину строки отводится один байт, а не два:
xor ax, ax
mov al, [0x80]
mov di, ax


Ответ отправлен: 04.01.2003, 15:11
Отправитель: Bob Johnson



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (38)
C / C++ (28)
Perl (4)
Delphi (21)
Pascal (23)
Basic / VBA (12)
Java / JavaScript (7)
PHP (3)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (25)
"Железо" (32)
Поиск информации (17)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (15)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (4)
КоАП (3)

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




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

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


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

В избранное