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

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


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

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

Выпуск № 463
от 10.01.2003, 03:30

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.32
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.19
URL: Страничка обо мне и моих друзьях
[Подробней >>]
Igoryk
Статус: Доверительный
Общий рейтинг: 135.52
[Подробней >>]
 
Александр
Статус: Доверительный
Общий рейтинг: 108.04
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 146.93
[Подробней >>]
Traish
Статус: Опытный
Общий рейтинг: 126.25
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 117.35
[Подробней >>]
VicSimon
Статус: Начальный
Общий рейтинг: 103.92
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 139.48
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 113.81
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 110.82
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 127.38
URL: моя рассылка по Protected Mode
[Подробней >>]


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

Вопрос № 2335. Bob Johnson! Я бы тоже хотел посмотреть на то, что пользуется таким спросом - курсовую, лабы и чижик... (ответов: 1)
Вопрос № 2336. Здравствуйте! Что-то давно не мучал Вас вопросами! Вот появился один. Сразу предупреждаю, вопрос не ... (ответов: 2)
Вопрос № 2337. Если у кого есть алгоритмы сжатия изображений с потерями, реализованные на асме - прошу не стеснятьс... (ответов: 1)
Вопрос № 2338. Забыл поздравить с наступаюшим... . -------------------- Всех с ниступившим!!!... (ответов: 2)
Вопрос № 2339. Приветствю всех,всех с наступивим 2003. В новый год со старым вопросом. Диск IBM 80 g Deskstar. Был ... (ответов: 2)
Вопрос № 2340. Такие вопросы: Возможно ли приостановить на неопределённый срок выполнение чужого процесса? Возможн... (ответов: 2)
Вопрос № 2341. Здравствуйте, ув. Эксперты! У меня к вам такой вопрос - какие особенности существую при написании об... (ответов: 4)
Вопрос № 2343. Здравствуйте уважаемые эксперты!!! Подскажите как делается прокрутка текста при прямом доступе к вид... (ответов: 5)
Вопрос № 2344. Здравствуйте, эксперты Извините, что вопрос не по ассемблеру, но зато по Windows :) как в Windows 20... (ответов: 1)
Вопрос № 2345. Здравствуйте уважаемые Эксперты и подписчики! С Новым Годом! Извиняюсь за немного оффтопик. Вчера на... (ответов: 4)
Вопрос № 2346. Во время отладки Софтайсом прог иногда встречается непонятная мне однобайтовая инструкция APRL (63h... (ответов: 4)

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


 Вопрос № 2335

Bob Johnson! Я бы тоже хотел посмотреть на то, что пользуется таким спросом - курсовую, лабы и чижика. Кроме того, могу разместить все это на своем сайте - не понимаю почему это еще не сделали эксперты, имеющие свои сайты.
зы: Копирайт, разумеется, сохраню.



Вопрос отправлен: 04.01.2003, 20:06
Отправитель: Евгений (other@mail.kz)

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

Отвечает Bob Johnson

Здравствуйте, Евгений!
К сожалению, ты чуть-чуть опоздал! :-)
Теперь я все это выложил на свою страницу:
http://bobjohnson.nm.ru
Так что все там!


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


 Вопрос № 2336

Здравствуйте!
Что-то давно не мучал Вас вопросами!
Вот появился один. Сразу предупреждаю, вопрос не совсем по теме рассылки, но т.к. спец. рассылки по данной области нет - пишу в самую многоэкспертную.
Как можно определить FPS в OpenGL приложении. Т.е. я что-то рендерю и мне надо знать и выводить FPS. На мануалы и туториалы просьба не посылать, а если посылать, то прямо на то, что мне надо. Бало бы не плохо получить исходних, в котором рендерится что-то очень простое и счтитается FPS.
З.Ы. Делаю я все это на VC 6.0.
ПИШИТЕ на мыло, если можно.



Вопрос отправлен: 04.01.2003, 21:50
Отправитель: Илья (b.i@date.by)

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

Отвечает Bob Johnson

Добрый день, Илья!
Итак, для начала - что такое FPS? Это "Frames Per Second", т.е. количество кадров в секунду. Вот тебе и весь алгоритм измерения...
В любой момент времени считываешь текущее время (GetTickCount), и обнуляешь свой счетчик. Далее, после отрисовки каждого кадра увеличиваешь счетчик на 1 и проверяешь разность времени, начиная с момента начала отсчета. Когда эта разность станет достаточной для более менее точного изменения (т.е. например, больше 1 сек), ты делишь количество отрисованных кадров на время, которое заняла эта отрисовка и получаешь свое волшебное число. После этого все повторяется.


Ответ отправлен: 06.01.2003, 14:48
Отправитель: Bob Johnson


Отвечает Gibbel

Добрый день, Илья!
Вот тебе прекрасный примерчик

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


 Вопрос № 2337

Если у кого есть алгоритмы сжатия изображений с потерями, реализованные на асме - прошу не стесняться и высылать



Вопрос отправлен: 05.01.2003, 00:54
Отправитель: JPEG (brokensword@mail.ru)

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

Отвечает Igoryk

Приветствую Вас, JPEG!
Что-то подобное было на CodeNet.RU

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


 Вопрос № 2338

Забыл поздравить с наступаюшим... .
--------------------
Всех с ниступившим!!!



Вопрос отправлен: 05.01.2003, 01:51
Отправитель: kuper

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

Отвечает Igoryk

Добрый день, kuper!
Ура, товарищи!!!

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


Отвечает Bob Johnson

Доброе время суток, kuper!
Спасибо, и тебя тоже!


Ответ отправлен: 06.01.2003, 14:48
Отправитель: Bob Johnson


 Вопрос № 2339

Приветствю всех,всех с наступивим 2003.
В новый год со старым вопросом.
Диск IBM 80 g Deskstar.
Был разбит Патришен Меджиком на
C D E F
На нем хранилась информация.
На C стояла 98 на D NT5 и XP.
Файловая система - FAT32
Затем, установив винт на другой копьютер
(мама на 480 чипе) видели E и F но доступа
к ним не было.
Тогда Фдиском соединили D E F и получили
одну партицию на 75 гиг.
ЕЕ формтанули и положили сверху файлов,
крупноблочных.
Итого С 5 гиг и D 75 гиг.
-------------
Мне необходимо было востановить F.
-------------
Я с этого и начал.
Но сам по себе диск Виндовс не видит, не видит
и ДоС, только Биос и проги вотсановления
EasyRecivery Pro 5.12a и GetDataBack 2.12
В винде они видят диск, две партиции 5 и 75 гиг.
В это же время Фдиск видит две партиции по 5 и 7 гиг.
Предлагает 12 гиг мне.
----------
Отчего?
Отчего не соответствие?
----------
Партишен Меджик говорит , что таблица разделов еррор.
Из под доса, так как в ивнде он диска не видит
Утилита от IBM Drive Fitness Test v3.0 ни чего не видит,
говорит все окей, я только не делал Еrase загрузочному,
боюсь потерять инфу вновь написаную- не прпадать же
за заря.
Инфу я востанавливаю помаленьку.
(можно сказать через задницу :-)) )
-----------------
А вот как винт востановить, как его заставить работать?
Что необходимо сделать, что бы его виндовс увидела?
-----------------
Fdisk MBR делал.
Утилиты чегото делали.
Вычитал, что для исправления загрузочного сектора, нужно
забить нулями 512 байт.с 0 0 1 сектора.
В дОСе, какими прогами и подробно не описано.

Жду массу предложений и советов.
Дык винт все равно убитый, можно эксперемнты проводить.
Правда инфа пока не полностью востнаовлена.
И на эту тему вопросы.
GetDataBack 2.12 что то востанавливает, но сохранить не могу,
ввиду отсутствия лицензии и безуспешных поисков.
EasyRecivery Pro 5.12a эта прога не востанавливает дерево,
а кидает файлики пронумерованые по папкам соответствующим типам.
Только вот ни одного текстового файла не востановлено.
----------------
Как настроить на текстовые файлы?
Есть ли такая возможность?
--------------
И какие вообше из данных настроек рекомендуется покрутить?
И почему то если выбрать в опциях Fat для востановления, то вотсанавливает,
то что после формата туда было положено?
А если игнорировать, то очень много всякой гадости.
НО, почему то преобладают(среди востановленых) удаленные файлы.
ТО есть те которые я удалял при нормальной работе.
А вот папки которые лежали себе и лежали, те я не вижу
и файлов из них.
Может кто обьяснит в чем причину искать можно.
EasyRecivery Pro 6.0 еще не скачал, сервер медленный
поэтому ни чего сказать не могу.
Спасибо, что выслушали.
Жду море советов.



Вопрос отправлен: 05.01.2003, 03:24
Отправитель: Oleg (quench@mail.ru)

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

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

Доброе время суток, Oleg!
Не ты первый столкнулся с проблемой разбиения IBM-овских 80-к. Разбиваются они коряво, это ещё мягко сказано. Дело в том, что fdisk почему-то никак не может определить его правильный размер. А если Partition Magic говорит Error, то скорее всего это error или раздел Linux. Скажи ему OK - пусть исправит. Easy Recovery пытается найти последовательности байт, характерные для FAT и записей каталогов. Если записи катаогов не испорчены, то стёртые файлы не должны восстанавливаться. К тому же, если ты ещё не знаешь, ВСЕ программы для восстановления информации хотят записывать спасённые файлы на другой диск. Т.е. на месте они ничего не восстанавливают, а только ПЕРЕПИСЫВАЮТ найденную информацию на другой диск. Просят другой физический, но можно обойтись и другим логическим(в твоём случае пиши только самое нужное на С). А Drive Fitness Test только для тестирования вещей, касающихся механики, да и то не всегда определяет то, что слышит человеческое ухо.


Приложение:

Ответ отправлен: 07.01.2003, 10:52
Отправитель: Александр


Отвечает Bob Johnson

Здравствуйте, Oleg!
1. Что такое 480 чипсет?
2. Очень странно - видели диски, но доступа не было. Обычно с FAT32 такого не бывает.
3. У FDISK есть некоторые проблемы с запуском из-под доса. Не делай этого - большие винты лучше размечать Partition Magic.
4. IBM Fitness test вообще не для этого предназначена - это физическая проверка и исправления диска.
5. Easy Recovery по идее должна найти старый FAT32 диска F (старого), т.к. форматирование обычно представляет собой только проверку и запись системной информации. Создание разделов - то же самое. Тут еще зависит от того - чем форматировал - если Full Format делал - то все, забей. Если же обычным format.com - и он писал Verifying 1..100%, то значит возможность есть.


Ответ отправлен: 06.01.2003, 14:48
Отправитель: Bob Johnson


 Вопрос № 2340

Такие вопросы:
Возможно ли приостановить на неопределённый срок выполнение чужого процесса?
Возможно ли временно запретьть системе переключаться с выполнения моего процесса на другие ( типа cli в ДОСе )?
Если возможно, то где можно достать по этому вопросу инфу?
Заранее спасибо.



Вопрос отправлен: 05.01.2003, 15:45
Отправитель: keleb-glin (keleb-glin@xakep.ru)

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

Отвечает masquer

Добрый день, keleb-glin!
Можно, только не процесса, а потока/(ов) внутри него.
Информация - как и всегда MSDN - SuspendThread/ResumeThread, а лучше Рихтер+MSDN

Ответ отправлен: 05.01.2003, 15:57
Отправитель: masquer


Отвечает Bob Johnson

Добрый день, keleb-glin!
1. В Windows 2000, XP, ME - да. Для этого необходимо выполнить SuspendThread для каждого потока процесса. В Windows 95 и 98 - в принципе, также, только там нет функции OpenThread, чтобы получить handle и вызвать SuspendThread. Как это реализовать там - см. на www.wasm.ru - я там видел статью, как сделать OpenThread в Win 95 - 98.
2. В Win9x - да - также пишешь cli.
В NT - только драйвер (или приоритет себе ставь супер большой, тогда твой процесс будет доминировать над остальными, и, если он занимает 100% времени, остальные практически повиснут (но не совсем!!!)).


Ответ отправлен: 06.01.2003, 14:48
Отправитель: Bob Johnson


 Вопрос № 2341

Здравствуйте, ув. Эксперты!
У меня к вам такой вопрос - какие особенности существую при написании обработчиков аппаратных прерываний?
Что значит "команда EOI"? И почему нельзя использовать функции DOS и BIOS?
Спасибо.
ЗЫ Извините, если вопрос глупый.



Вопрос отправлен: 05.01.2003, 16:09
Отправитель: Davv

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

Отвечает Traish

Приветствую Вас, Davv!
1. Да, конечно, определенная специфика при работе с аппаратными прерываниями существует. Аппаратное
прерывание может возникнуть в любой момент времени, в частности, во время выполнения функций DOS. Вообще,
считается, что в обработчиках апп. прерываний нельзя пользоваться никакими системными средствами.
2. При возникновении
прерывания контроллер прерываний блокирует внутри себя все линии, начиная с той, по которой пришел сигнал прерывания. Поэтому
по окончании обработки нужно послать в контроллер команду снятия блокировки (EOI - End Of Interrupt), которая представляет собой
последовательность:
mov al, 20h
out 20h (a0), al
Кроме того, процессор, приняв сигнал прерывания, сбрасывает флаг IF, что блокирует все маскируемые прерывания. Поэтому иногда в обработчике
устанавливают IF, чтобы разблокировать прерывания более высокого уровня IRQ и сбрасывают его перед EOI. Затем выполнение iret
вызовет восстановление регистра флагов, в котором флаг IF был установлен.


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


Отвечает Ayl

Добрый день, Davv!
Ну, вообще-то про это куча книжек написана. Если по-простому, то особенности следующие:
1. Аппаратное прерывание возникает асинхронно по отношению к прерванной программе, соответственно, может возникнуть и в момент выполнения какого-либо прерывания.
2. Для предотвращения повторного вызова этого же прерывания (и всех прерываний с низшим приоритетом) контроллер прерываний блокируется. Обработка прерываний с более высоким приоритетом все еще возможна.
В соответствии с вышеизложенным, особенности написания обработчика следующие:
1. В обработчике аппаратного прерывания нельзя вызывать функции BIOS или DOS без специальных проверок. Т.е. вначале необходимо убедиться, что прерывание не произошло во время работы обработчика прерывания BIOS или DOS. А лучше всего вообще избегать этого. Все эти ограничения связаны с нереентерабельностью функций BIOS и DOS.
2. В конце обработчика аппаратного прерывания (в том случае, если не вызывается старый обработчик по каскадной схеме) необходимо послать контроллеру прерываний команду EOI - End Of Interrupt. Эта команда переведет контроллер в состояние, позволяющее обрабатывать прерывания с меньшим приоритетом.
Чтобы послать команду EOI контроллеру прерываний нужно записать значение 20h в порт 20h.
Вроде все.
Ну, еще можно сказать, что для каждого устройства нужно выполнять соответствующие действия, чтобы указать ему, что данные приняты. Например, при обработки прерываний от клавиатуры после приема кода символа нужно сообщить контроллеру клавиатуры, что код принят. Для того, чтобы КК мог дальше обрабатывать нажатия.


Ответ отправлен: 05.01.2003, 17:56
Отправитель: Ayl


Отвечает Bob Johnson

Добрый день, Davv!
Обработчик-то под ДОС? Assume yes...
Особенности: должен сохранять все регистры, кроме флагов, т.к. флаги за тебя сохранит проц. Должен будешь работать с контроллером прерываний, т.к. он запрещает повторный вызов прерывания, пока ты сам ему не разрешишь (чтобы прерывания не вкладывались друг в друга). Ну может понадобится вызвать предыдущий обработчик. Да, еще, при вызове обработчика достоверным является только регистровая пара cs:ip, остальные регистры могут содержать всякую фигню, так что инициализируй их исходя из cs.
Нельзя использовать функции DOS и BIOS только лишь потому, что они не являются реентрантными, т.е. если вдруг прерывание прервет выполнение кода DOS или BIOS, а ты в обработчике вызовешь его еще раз - будет пипец.


Ответ отправлен: 06.01.2003, 14:48
Отправитель: Bob Johnson


Отвечает VicSimon

Здравствуйте, Davv!
1. EOI - End Of Interrupt (в один из портов контроллера прерываний отправляем значение 20h):
mov al, 20h
out PIC, al ; PIC = 20h для IRQ0-7, = 0A0h для IRQ8-15
Говорит контроллеру прерываний (PIC) о том, что обработка прерывания завершена.
2. Так как обработчики программных прерываний DOS и BIOS не реентерабельны (не повторно входимы). Т. е. DOS/BIOS имеют ряд критичных ресурсов (флаги, стек и т. д.), совместное использование которых недопустимо. Возможна ситуация, когда аппаратное прерывание происходит ВО ВРЕМЯ обработки программного (при этом критичные ресурсы DOS/BIOS уже заняты), при этом если вызвать из обработчика функцию DOS/BIOS, использующую занятые ресурсы, получим крах системы.

Ответ отправлен: 08.01.2003, 06:57
Отправитель: VicSimon


 Вопрос № 2343

Здравствуйте уважаемые эксперты!!!
Подскажите как делается
прокрутка текста
при прямом доступе к видеопамяти
в текстовом режиме?
Если можно с примером
Спасибо.



Вопрос отправлен: 05.01.2003, 17:41
Отправитель: And

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

Отвечает Bob Johnson

Доброе время суток, And!
Копированием данных из видеобуфера в него же с определенным смещением. Т.е. если тебе нужно поднять все на 1 строку вверх, ты копируешь из [videobuffer + width*2] в [videobuffer] (width*2*(height - 1) байт).


Ответ отправлен: 07.01.2003, 19:36
Отправитель: Bob Johnson


Отвечает Maverick

Добрый день, And!
Давай мыло, я тебе вышлю код с комментариями.
Почему все думают, что рассылка резиновая....
Maverick@nightmail.ru

Ответ отправлен: 07.01.2003, 08:39
Отправитель: Maverick


Отвечает Ayl

Доброе время суток, And!
При прямом доступе к видеопамяти все делается ручками. Т.е.
сдвигаешь или на одну строку вверх/вниз, или на один символ влево/вправо и заполняешь освободившуюся строчку тем, что тебе нужно.
Если напишешь адрес, то после праздников могу и пример заслать.

Ответ отправлен: 05.01.2003, 18:12
Отправитель: Ayl


Отвечает baldr

Приветствую Вас, And!
mov ax, 0B800h
mov es, ax ; В es - адрес видеопамяти
mov di, 0h ; di - с верхней строки
mov si, 80*2 ; si - вторую строку
mov cx, 24*80 ; 24 строки
rep movsw ; копируем cx раз слово из es:[si] в es:[di]
mov ax, 720h
mov cx, 80
rep stosw ; заполняем последнюю строку пробелами


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


Отвечает Traish

Доброе время суток, And!
При прямом доступе все придется делать вручную. Например, если сдвигаешь содержимое видеобуфера вверх по памяти на 160 байт, то произойдет сдвиг экрана на одну строку вниз. Горизонтальный сдвиг делается почти также, например так (в приложении). Потом очищаешь правые столбцы.


Приложение:

Ответ отправлен: 06.01.2003, 07:14
Отправитель: Traish


 Вопрос № 2344

Здравствуйте, эксперты
Извините, что вопрос не по ассемблеру, но зато по Windows :)
как в Windows 2000 (или XP) запустить из моей программы другой
процесс, но так, чтобы все, что он выводит на экран перенаправить
в файл.
Пробовал делать так: создал файл
CreateFile("my.lst", GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
записал его хэндл в структуру STARTUPINFO в hStdOutput, создал процесс
CreateProcess(NULL, str, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
дождался его завершения, закрыл файл.
В Windows 98 все это работает без проблем, а вот в 2000 и XP файл
создается и процесс запускается, но ничего не пишет в файл.
Может мне что-то нужно в SECURITY_ATTRIBUTES писать?



Вопрос отправлен: 05.01.2003, 18:09
Отправитель: Eugene

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

Отвечает Bob Johnson

Приветствую Вас, Eugene!
Да, смотрим MSDN:
lpSecurityAttributes
[in] Pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If lpSecurityAttributes is NULL, the handle cannot be inherited.
Тебе, скорее всего, нужно будет в этой структуре установить lpSecurityDescriptor = 0, bInheritHandle = true и все...


Ответ отправлен: 07.01.2003, 19:36
Отправитель: Bob Johnson


 Вопрос № 2345

Здравствуйте уважаемые Эксперты и подписчики!
С Новым Годом!
Извиняюсь за немного оффтопик. Вчера нашел у себя на винте допотопную игрушку (Skyroads). :) 320x240x256!!! И я понял, что ДОС еще не умерла. Я вспомнил сколько хороших вещей было мною (да и не только) написано и не написано под эту прекрасную ОС.
Припомнился и Life, и Тетрис, и Дигер. Так вот, на этой волне я наваял старый добрый Life (тот, который Дж. Конуей, или как его, придумал) на 153 байта. Причем, если поубирать некоторые не совсем нужные участки кода, то получится еще меньше. Самое главное, что я напирал не на размер, а на скорость. Получилось довольно-таки неплохо.
А теперь собсно вопросы.
Как организовать комбо по Life. Думаю, не такая уж это и скучная задача оптимизировать энтот алгоритм.
В приложении небольшой код. Хотелось бы узнать можно ли его оптимизировать по размеру. По скорости? Если не совсем очевидно, что я там понаписал, то пожалуйста:
Для режима 13h реализовать ефект размытия для одного цвета. Тоесть имеется как-бы монохромное изображение (цвет 0 и POINT_COLOR). Понятно, что палитра подобрана соответствующим образом для цветов из диапазона 0..POINT_COLOR, и ES настроен на начало буфера с картинкой.
Благодарю, всех откликнувшихся.



Приложение:


Вопрос отправлен: 06.01.2003, 02:50
Отправитель: Бадян (sba@litech.net)

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

Отвечает Beeblebrox

Здравствуйте, Бадян!
Life все равно никто не сделает короче и быстрее, чем сделал INT-E из hugi compo

Ответ отправлен: 08.01.2003, 11:29
Отправитель: Beeblebrox


Отвечает Igoryk

Доброе время суток, Бадян!
Если не заберет себе это задание WASM.RU, то могу организовать я в "Задачах по ассемблеру". Я просто решил перейти на другой уровень сложности и "интересности" задач. А то, я думаю, уже надоела толкотня вокруг 4 байт подписчикам этой рассылки.
ЗЫ. Насколько я помню где-то уже проводилось что-то подобное.

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


Отвечает baldr

Здравствуйте, Бадян!
Насчет DOS - так это большое спасибо... :)) Заходите при случае... :)
А насчет life... С.В.Зубков в своей книге это подробно рассматривает... У него четыре страницы
занято рассмотрением этой проги и ее обсуждение...
"... В 1997 году проводился конкурс на самую короткую и на самую быструю программу ["жизнь"] ... .
Самой короткой тогда оказалась программа размером в 72 байта, которая с тех пор была
усовершенствована до 64 байт (ее скорость 52 такта на точку), а самая быстрая из 16-битных
программ тратит на каждую точку в среднем всего 6 тактов процессора Pentium и имеет
размер 689 байт. ... Применение 32-битных команд с тем же алгоритмом позволяет ускорить
программу до 4,5 такта на точку."

// С.В.Зубков. "Assembler для DOS, Windows и Unix". стр. 155.


Ответ отправлен: 07.01.2003, 01:16
Отправитель: baldr


Отвечает Broken Sword

Приветствую Вас, Бадян!
Думаю, можно провести такой компо (и по размеру и по скорости), организовать можно у Igoryk-а или на wasm.compo (или и там и там).
Единтсвенное что - игра Life является рекордсменом по проведению издевательств над ее кодом. Самый маленький на сегодняшний день вариант - 64 байт. Самый быстрый - 4,5 тактов на точку. Побить этот рекорд - можно даже не мечтать, но вообще то любой может найти исходники Life и чуть их переделать, выдав за свои, но если все участники ручаются за свою порядочность :), то почему бы и нет?
Только с одним условием: нужно определить ВСЕ возможные и невозможные правила, со всеми тонкостями и ньюансами, а не "написать самую короткий код Life"
p.s. посмотрел вчера фильм "Игры разума", интересный фильмец, но там весь фильм он вроде криптоаналитик и математик, а потом ему дают в конце ноб. премию за достижения в экономике... (наверно потому, что в математике она не выдается :), а вообще советую всем любителям криптографии посмотреть, есть смешные моменты :)
тот код что ты написал явно можно упростить (слишком много jmp подряд), как - сейчас нет времени, потом посмотрю

Ответ отправлен: 06.01.2003, 14:16
Отправитель: Broken Sword


 Вопрос № 2346

Во время отладки Софтайсом прог иногда встречается непонятная мне однобайтовая инструкция APRL (63h).
Будьте добры пояснить её назначение.



Вопрос отправлен: 06.01.2003, 03:27
Отправитель: Speedy Gonsalez

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

Отвечает Bob Johnson

Доброе время суток, Speedy Gonsalez!
Из книги:

ARPL - Adjust RPL field of selector
Команда имеет 2 операнда. Первым является 16-битная переменная в памяти или словный регистр, содержащие значения селектора. Вторым операндом служит словный регистр. Если поле RPL (запрашиваемый уровень привелегий - два младших бита) первого операнда меньше поля RPL второго операнда, флаг ZF устанавливается (1) и поле RPL первого операнда увеличивается до равенства в солем RPL второго операнда. В противном случа флаг ZF сбрасывается (0) и первый операнд не изменяется.
Команда применяется в программах ОС. Она обеспечивает, что параметр-селектор подпрограммы не более привелигирован, чем разрешено вызывающей программе. Обычно вторым операндом команды является регистр, содержащий значение селектора CS вызывающей программы.



Ответ отправлен: 07.01.2003, 19:37
Отправитель: Bob Johnson


Отвечает Igoryk

Здравствуйте, Speedy Gonsalez!
Может ARPL? Так у Зубкова есть описание этой команды:
Команды корректирует поля RPL селектора. Выполняется только в защищенном режиме.

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


Отвечает Traish

Доброе время суток, Speedy Gonsalez!
Может, ARPL? Если да, то она сравнивает RPL (Requested Privilege Level) одного селектора с RPL другого и устанавливает флаг ZF соответствующим образом. А если все же APRL, то извини - ничем помочь не могу - справочника под рукой нет.


Ответ отправлен: 06.01.2003, 06:59
Отправитель: Traish


Отвечает Broken Sword

Здравствуйте, Speedy Gonsalez!
интересно, как часто?
эта инструкция "поднимает" RPL селектора проги до приоритета ядра (если он меньше), и устанавливает флаг ZF. Используется в основном ОС, для поднятия этого самого RPL приложениям, которым это надо
кстати, насчет того что ты ее часто встречаешь... помойму ты намного чаще отлаживаешь то, что скорее является кодом буквы "С". Кстати, тебе часто встречаются инструкции
add byte ptr [BX+SI],AL

Ответ отправлен: 06.01.2003, 14:35
Отправитель: Broken Sword



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

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

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




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

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


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

В избранное