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

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


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

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

Выпуск № 314
от 11.07.2002, 02:20

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 161.11
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 115.63
[Подробней >>]
Alex
Статус: Опытный
Общий рейтинг: 113.08
URL: За здравие замолвите словечко и БУДЬТЕ ЗДОРОВЫ!
Телефон: (0332) 77-08-56
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 123.33
URL: Пристанище неодинокого программиста
[Подробней >>]
Monkey_Logic
Статус: Доверительный
Общий рейтинг: 156
[Подробней >>]
AnSim
Статус: Опытный
Общий рейтинг: 110.65
[Подробней >>]
 
Gibbel
Статус: Опытный
Общий рейтинг: 108.93
URL: Страничка обо мне и моих друзьях
[Подробней >>]
kvINT
Статус: Опытный
Общий рейтинг: 113.76
[Подробней >>]
Александр
Статус: Опытный
Общий рейтинг: 115.28
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 139.15
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Spike
Статус: Доверительный
Общий рейтинг: 120.75
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 142.58
[Подробней >>]
 
GL
Статус: Опытный
Общий рейтинг: 107.94
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 119.28
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


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

Вопрос № 661. Конкурс... На сайте beeblebrox-а (если он положит) можна скачать файлик 414.com сразу предупреждаю -... (ответов: 1)
Вопрос № 662. Уважаемые господа! Отправлял вопрос (тематика - ООП, №586). Вообще-то не столько нужен был ответ, с... (ответов: 6)
Вопрос № 663. Уважаемые эксперты! Что такое такт микропроцессора?... (ответов: 7)
Вопрос № 664. Здравствуйте эксперты! У меня к вам два вопроса: 1) В видео режиме 13h, 256 цветов: R-55h G-55h B-55... (ответов: 5)
Вопрос № 665. Пытаюсь написать собственный загрузчик к ОС Как он выглядет смотри в приложении. Трабл такой: он воз... (ответов: 2)
Вопрос № 667. Пришло сообщение о недоставке данного письма, отправляю его повторно Ответ для masquer (вопрос №66... (ответов: 1)
Вопрос № 668. Здравствуйте, эксперты! У меня чисто теоретический вопрос! Допустим я написал обработчик прерывания,... (ответов: 3)
Вопрос № 669. Я разобрал bin файл своего биоса и нашел там файл AwardBmp.bmp. Но почему-то никакой это не обычный ... (ответов: 4)

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


 Вопрос № 661

Конкурс...
На сайте beeblebrox-а (если он положит) можна скачать файлик 414.com
сразу предупреждаю - это творение двух ночей, есть одна интересная идейка, ранее нигде мною не виданная... если ее развить...
Лучше всего запускать в WinXP НЕ(!!!) в full screen
На др. системах не тестировался. В RМ вообще чето глючил...
p.s. beebl, когда выложишь - дай знать в рассылку



Вопрос отправлен: 06.07.2002, 03:39
Отправитель: Broken Sword (brokensword@mail.ru)

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

Отвечает masquer

Добрый день, Broken Sword!
Хоть линк кинь или в мыло, а то все на сайте перерыл - нет ничего

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


 Вопрос № 662

Уважаемые господа!
Отправлял вопрос (тематика - ООП, №586). Вообще-то не столько нужен был ответ, сколько интересна реакция на него. Получил один ответ - "Я вообще отрицательно отношусь к ООП, не говоря уже о применении его в ассемблере..... ". Неужели мнение экспертов таково? Кому как не мастерам ассемблера известна вся прелесть ООП? Кому, как не Вам, должно быть известно о существовании задач, реализовать которые без применения методик ООП просто невозможно? Я уже год слежу за подпиской. Неужели до сих пор не надоели неквалифицированные вопросы, неужели Вам интересно отвечать на них?
Какова альтернатива? Чем должен заниматься клуб? Чего я ожидал от клуба весь предыдущий год? Уважаемые господа, интересных вопросов для клуба очень много. К примеру
обсуждение моделей построения СУБД, WEB
обсуждение моделей WINDOWS,DOS (достоинства и недостатки)
в том числе и ООП (это огромная тема)
Все эти вопросы можно обсуждать в виде изложения тематики, а затем дискуссии. Тематика должна задаваться произвольно, но излагаться последовательно. Т.е. автор рассылки (изложения темы) должен быть.
Самое главное, что хотелось бы отметить ,- ассемблер, как Вы понимаете, это искусство. Искусство не по знанию команд языка, не по знанию свойств и недокументированных функции операционных систем, не по умению взламывать программы и работать с портами ввода- вывода. Это всего лишь первая ступень, которую дает ассемблер. Ассемблер – это искусство по моделированию процессов, по составлению сложных систем работающих в реальном времени. Об этом можно писать достаточно долго, но, все же, возвращаясь к ООП, - хотелось бы выслушать экспертов об отношении к нему.
С уважением, Виктор.




Вопрос отправлен: 06.07.2002, 11:21
Отправитель: Виктор (sfkvant@tuapse.ru)

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

Отвечает masquer

Доброе время суток, Виктор!
Так как это мой ответ упомянут, отвечу.
Цитата
Кому, как не Вам, должно быть известно о существовании задач, реализовать которые без применения методик ООП просто невозможно

Хоть одну в студию. После этой цитаты дальше серьезно все воспринимать достаточно сложно.
После последнего предложения: ты прошел эту первую ступень, ты знаешь все команды процессора, и самое главное - умеешь их применять в нужном месте, ты взламывал программы.
А применение ООП оправдано, имхо, только при реализации больших проектов, и никто меня не убедит в том, что без ООП этого реализовать нельзя

Ответ отправлен: 06.07.2002, 13:43
Отправитель: masquer


Отвечает vitya

Добрый день, Виктор!

Я с большим уважением отношусь к ООП, но к сожалению опыта работы на ассемблере с ООП нету... чтож поделать, но другой стороны, прелестей работы с ООП на нем я не вижу, мне даже кажется, что делать то же самое на C++ и проще и удобней, и что главнее компактней.

Ответ отправлен: 08.07.2002, 08:41
Отправитель: vitya


Отвечает Alex

Здравствуйте, Виктор!
Предлагаю Вам написать Калашникову и договориться о ведении рассылки. Думаю, что высказанные предложения выглядят очень заманчиво и будут интересны большому кругу читателей. Кстати, у нас сейчас тоже стоит вопрос об установке РадиоЭзернет, а пока только оптоволокно...

Ответ отправлен: 09.07.2002, 08:13
Отправитель: Alex


Отвечает Артём Шегеда

Приветствую Вас, Виктор!
Категорически не согласен. ООП преследует только две задачи. Первая - это моделирование объектов (реальных или вымышленных). Вторая - это упрощение написания кода (что мы видим в различных RAD-системах программирования: Delphi, VB, VC, ...). И какое отношение имеет программист, занимающийся написанием драйверов для ОС (причём таких ОС, которые никто никогда вживую не увидит) к ООП?
Я изумился, когда прочитал: "ассемблер - это искусство не по знанию команд языка, не по знанию свойств и недокументированных функции операционных систем, не по умению взламывать программы и работать с портами ввода- вывода". Ассемблер - это в первую очередь знание команд процессора, с которым работаешь.
Я тебе предложу написать код ОС, над которой на работе бьюсь уже 1.5 года. Процессор TMS320C203 (DSP), ОЗУ - 32кслова. А функций эта ОС выполняет побольше, чем какай-то ".NET Terrarium" (надеюсь ты слышал про него). Никакое ООП мне в разработке не помогло бы.

Ответ отправлен: 06.07.2002, 18:09
Отправитель: Артём Шегеда


Отвечает Monkey_Logic

Добрый день, Виктор!
Сначала о вопросах. Как вы понимаете рассылка создавалась не в расчёте на
одного человека, а на широкий круг читателей, может даже не знакомых
с ассемблером. Поэтому стоит задуматся над тем, почему читатель задаёт
именно этот вопрос, который казалось бы есть в каждом учебнике, и почему
стоит на него ответить. Ведь все мы когда то были такими же новичками как и
они - читатели (не все конечно, некоторые из них). И поэтому понятно их стремление
получить информацию, не прекладывая особых усилий, то есть задать вопрос в рассылку
и спокойно ждать прихода ответов, ничего больше. В общем на эту тему можно
рассуждать до бесконечности.
Теперь об ООП. По моему, не удивительно что на этот вопрос, ответил только 1
эксперт. Так как большинство экспертов используют ассемблер для решения задач
системного программирования и им приходится больше думать об оптимизации и
стабильности программы, нежели о синтаксисе. Да, я согласен, что ООП
при должном понимании - очень удобно, особенно при разработке больших приложений
под 32-разрядную ОС. В остальном, можно обойтись и без него, это уже дело вкуса
программиста.
С уважением Monkey Logic

Ответ отправлен: 07.07.2002, 01:10
Отправитель: Monkey_Logic


Отвечает AnSim

п—пґяЂп°пІяЃя‚пІяѓп№я‚пµ, п’пёпєя‚пѕяЂ!
пћпћпџ - пЅпµ пґп»яЏ п°яЃяЃпµпјп±п»пµяЂп° - я‚пµп±пµ п¶пµ пєп°пє пїяЂпѕпЁяЂп°пјпјпёяЃя‚яѓ пЅпµпѕп±я…пѕпґпёпјпѕ п·пЅп°я‚яЊ пєп°пє яЂпµп°п»яЊпЅпѕ пєпѕпјп°пЅпґя‹ пІ пїяЂпѕя†пµ пІя‹пїпѕп»пЅяЏяЋя‚яЃяЏ.
п—п°пґп°я‡, пєпѕя‚пѕяЂя‹пµ пЅпµп»яЊп·яЏ яЂпµя€пёя‚яЊ пјпµя‚пѕпґп°пјпё пєп»п°яЃяЃпёя‡пµяЃпєпѕпЁпѕ пїяЂпѕпЁяЂп°пјпјпёяЂпѕпІп°пЅпёяЏ, пЅпµ яЃяѓя‰пµяЃя‚пІяѓпµя‚.


Ответ отправлен: 08.07.2002, 13:08
Отправитель: AnSim


 Вопрос № 663

Уважаемые эксперты!
Что такое такт микропроцессора?



Вопрос отправлен: 06.07.2002, 11:51
Отправитель: igorr

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

Отвечает masquer

Доброе время суток, igorr!
Ну это минимальный цикл процессора, каждая команда требует для выполнения как минимум 1 такт, специфична для каждого процессора

Ответ отправлен: 06.07.2002, 13:18
Отправитель: masquer


Отвечает Gibbel

Добрый день, igorr!
Импульс, поступающий на вход CLK микропроцессора называется тактовым импульсом. Используется для синхронизации. Минимальное время выполнения любой комманды - 1 такт. Соответственно, любая команда может исполняться за целое число тактов, т.е. 1,2,3,4... Правда, внутри процессора она может выполняться и быстрее, но остальное время процессор просто простаивает.


Ответ отправлен: 10.07.2002, 10:58
Отправитель: Gibbel


Отвечает Артём Шегеда

Приветствую Вас, igorr!
"Такт процессора" - это неправильно сказано. Существует "такт частоты" и "цикл процессора".
Такт частоты - это переход сигнала из уровня 0 в уровень 1 и обратно. Чем быстрее выполняется этот переход, тем выше тактовая частота, тем (как правило) быстрее работает процессор.
Цикл процессора состоит из нескольких (или одного) тактов частоты. За один цикл процессор выполняет одну базовую операцию (как правило, в один цикл укладывается чтение инструкции, дешифрация инструкции, модификация какого-либо регистра). Сложные операции состоят из нескольких базовых операций.
Для процессоров, построеных по суперскалярной технологии (в серии 80x86 - это те, что старше 80486: Pentium, PentiumMMX, AMD K5, ...), цикл процессора - понятие более размытое, поскольку процессор умудряется выполнять несколько инструкций одновременно. В этом случае имеет смысл говорить только о циклах каких-либо блоков процессора: цикл шины, цикл АЛУ, ...

Ответ отправлен: 06.07.2002, 18:21
Отправитель: Артём Шегеда


Отвечает Monkey_Logic

Приветствую Вас, igorr!
Хороший вопрос, тем более что я, за всю свою кодерскую карьеру (2 года),
ни разу не задумывался что такое такт. Хотя в литературе это понятие
встречается очень часто. В моём понимании (надеюсь что оно правильно),
такт - это величина связанная с временем выполнения микропроцессором
какой либо задачи. Например команда mul(умножение)
выполняется за 118 тактов, а команда арифметического сдвига sal за 2 такта.

Ответ отправлен: 07.07.2002, 01:12
Отправитель: Monkey_Logic


Отвечает kvINT

Доброе время суток, igorr!
Если у тебя проц на 1000 МГц, к примеру, то это и есть тактовая частота процессора. На опр. вход процессора подаются тактирующие импульсы, и именно по их приходу производятся все остальные действия. Внутри проца имеются всяческие регистры (в техническом смысле, а не в смысле регистровой модели процессора), например регистры-защелки, и они не отправят ничего дальше, пока на вход тактовый импульс не поступит. Поскольку микрокоманды разные, например с адресной шины надо что-то забрать, или, наоборот, все происходит внутри проца, они выполняются за разное число тактов. Минимальная команда длится 1 такт. Т.е. вышеуказанный проц на 1000 МГц за секунду может выполнить миллиард нопов, реальных команд, естественно, меньше, трудно, наверно, написать сколько-нибудь полезную программу, состоящую лишь из однотактовых команд. Ну все, ответил, можно сказать - перекурил. Спасибо - отвлек, разгрузил мозги.

Ответ отправлен: 08.07.2002, 12:21
Отправитель: kvINT


Отвечает AnSim

п”пѕп±яЂпѕпµ пІяЂпµпјяЏ яЃяѓя‚пѕпє, igorr!
яЌя‚пѕ яЃп°пјп°яЏ пјп°п»пµпЅяЊпєп°яЏ пµпґпёпЅпёя†п°

Ответ отправлен: 08.07.2002, 13:09
Отправитель: AnSim


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

Доброе время суток, igorr!
Какой бестактный вопрос :-)))) Поскольку современные компьютеры довольно сложные системы, то все их компоненты нуждаются в какой-либо синхронизации. Даже процессор. Так вот такт это минимально различимый промежуток времени, т.е. та частота на которой процессор работает и говорит о том сколько тактов в секунду различает процессор.


Ответ отправлен: 09.07.2002, 18:09
Отправитель: Александр


 Вопрос № 664

Здравствуйте эксперты!
У меня к вам два вопроса:
1) В видео режиме 13h, 256 цветов:
R-55h
G-55h
B-55h
На один бит где-то больше:)), где...? И вообще я правильно поделил?
2) Если шина на n байт, то можно адресовать 2^n байт памяти и для ускорения работы надо размешать адресуемый участок памяти с границы n (т.е. адресуемый сегмент памяти должен быть кратен n). Написал то что знал...:)) А вопрос такой: правильно ли я это написал...? (а то я чувствую что что-то не так понял или напутал)!



Вопрос отправлен: 06.07.2002, 12:27
Отправитель: kuper

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

Отвечает Gibbel

Доброе время суток, kuper!
В 256-цветном режиме используется палитра, т.е.
R-FFh
G-FFh
B-FFh
Однако, одновременно на экране отображается не более 256 комбинаций этих составляющих.

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


Отвечает Артём Шегеда

Здравствуйте, kuper!
Два вопроса - две ошибки.
1. В видеорежиме VGA 13h используются не цвета, а индексы цветов из палитры. Палитра задаётся программистом или используется по умолчанию. Палитра состоит из трёхбайтнызх элементов. Всего таких элементов - 256. Почитай документацию (можно на моём сайте взять TechHelp и найти раздел "EGA/VGA palette functions").
2. Если шина на n байт, то можно адресовать 2^n байт памяти - это правильно. Дальше - не так.
Ускорение работы может быть только для тех процессоров, которые могут вычитывать данные и инструкции с адресов, кратных только какой-либо величине Q, при этом предполагается, что процессор обратится сразу к Q байтам. Для 80386 и более новых Q=4 байта, и если 16-битное слово начинается с адреса 3, то процессору придётся обратиться два раза: чтобы прочитать младший байт - по адресу 0, чтобы прочитать старший байт - по адресу 4.

Ответ отправлен: 06.07.2002, 18:35
Отправитель: Артём Шегеда


Отвечает Sensey

Добрый день, kuper!
1) Нет. В этом режиме выделяется байт на цвет. Этот байт служит ИНДЕКСОМ в массиве палитры. А в палитре задается цвет с помощью 3 байт(размер палитры 300h байт)
Есть режим в 32 тыщи цветов, там на точку выделяется 2 байта, по 5 бит на каждый, последний(старший) бит не используется. Так же есть режим в 64 тыщи цветов, там на точку выделяется 2 байта, RRRRRGGGGGGBBBBB биты, то есть на зеленый цвет 6 бит. В этих режимах палитры нет.


Ответ отправлен: 08.07.2002, 13:43
Отправитель: Sensey


Отвечает Spike

Доброе время суток, kuper!
Нет не правильно. 256 - это не кол-во цветов кол-во регистров палитры. В видяхе есть 256 регистров палитры, информацию в которых можно менять, так вот все они 3-байтные, соответственно R,G,B. Короче всего 16млн. цветов, но одновременно можно использовать только 256.
Spike.


Ответ отправлен: 08.07.2002, 21:23
Отправитель: Spike


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

Добрый утро, kuper!
1) Очнись от сна. Режим 13h палитровый. Для записи каждого цвета палитры отводится три байта, причём каждый цвет получает поровну. Правда значения компонент при этом ограничены не байтом, а его младшими 6-ю битами. Вот.
2) На самом деле это так, но выравнивание лучше делать не по разрядности оперативной памяти, а по длине строки кеш-памяти процессора.


Ответ отправлен: 09.07.2002, 18:09
Отправитель: Александр


 Вопрос № 665

Пытаюсь написать собственный загрузчик к ОС
Как он выглядет смотри в приложении.
Трабл такой: он возврящяет ошибку 1: неправильный запрос к контроллеру. Почему? Замена функции чтения на 02h ничего не дает!
Ответ-те плиз!
PS. Чтей ответ попадет в точку, тому перешлю 10 кредитов NOP!


Приложение:


Вопрос отправлен: 06.07.2002, 17:10
Отправитель: pinman

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

Отвечает Broken Sword

Приветствую Вас, pinman!
Первая ошибка -
MOV DL,0H
MOV AH,0DH
INT 13H ;выполняем сброс диска A
0Dh относится только к хардам, и в dl должно быть значение 80-FF но никак не ноль! Ты просто попутал 00h ф-цию с 0Dh ф-цией.
при чтении та же ошибка (0Eh - это ТОЛЬКО К ХАРДАМ!!!!), в dl ДОЛЖНО БЫТЬ (!!) значение от 80 до FF (80-первый диск, 81- второй и т.д.), а нолик в DL - это к 02h ф-ции (чтение сектора гибкого диска)
так что выкладывай ноп-ы. Кстати, а чего это?

Ответ отправлен: 06.07.2002, 17:54
Отправитель: Broken Sword


Отвечает masquer

Приветствую Вас, pinman!
А последние 2 байта в бутсекторе у тебя равны 55AA?
И что такое "10 кредитов NOP"?

Ответ отправлен: 06.07.2002, 18:21
Отправитель: masquer


 Вопрос № 667

Пришло сообщение о недоставке данного письма, отправляю его повторно

Ответ для masquer (вопрос №662)
На ассемблере (в общем-то, как и на других языках) можно реализовать практически все (не воспринимайте все буквально).

Под словами "реализовать которые без применения методик ООП просто невозможно" имелось в виду следующее:
Отлаженная и работающая библиотека (на asm или на чем угодно) в совокупности с другими модулями, также отлаженными и не имеющими ошибок, может просто не работать, работать неправильно, вести себя непредсказуемо. Причем вызовы процедур и инициализация данной библиотеки осуществляется корректно и в соответствии с документацией.
К примеру:
Имеем библиотеку графического вывода. В ней реализованы процедуры для графического вывода текста, линий, заливки области и прочее другое. Данная библиотека отлажена и по определению ошибок не содержит. Используется она в какой-либо задаче для создания интерфейса с пользователем (меню, диалоговые окна и прочее). В задаче также имеется асинхронный процесс получения данных с устройства и вывода их на экран. В общем-то, асинхронность здесь не важна, можно было бы предположить наличие в задаче процесса (подзадачи), также использующей функции данной библиотеки (важно лишь то, что процесс этот стационарен и существует все время существования задачи). Т.е. вывод данных, к примеру, может быть осуществлен не из прерывания устройства, а используя методику, аналогичную получению клавиш из буфера клавиатуры. Основной цикл задачи может проверять наличие данных в буфере устройства и, при наличии таковых, - осуществлять их вывод. Затем, проверять наличие клавишных команд, и при их наличии осуществлять отработку (вывод необходимых диалоговых окон управляющих параметрами устройства, и прочее).
При последовательном использовании функций библиотеки проблем не возникает. Перед выводом осуществляются необходимые инициализации (цвета, шрифта, типа заливки и другое ) затем осуществляется вывод. Однако при наличии нескольких активных процессов (не воспринимайте буквально - к мультизадачности это не имеет отношения) необходимые инициализации (настройки вывода) для одного процесса сбивают настройки, на которые рассчитывает другой процесс, который операцию инициализации вывода уже осуществил. Попробую сказать подробней:
- перед инициализацией устройства, осуществляем инициализацию данных графического вывода
- запускаем устройство, механизм съема информации и вывода его на экран
- наблюдаем за сигналом (сигнал отражается на экране)
- начинаем управлять процессом, нажимая клавиши выводим диалоговые окна с параметрами устройства (графические параметры уже изменились)
- закрываем диалоговые окна
- наблюдаем сигнал (вывод идет другим цветом, другой тип линии и т.д.)

Можно было бы предложить осуществлять настройки всякий раз перед выводом (надеюсь Вы не порекомендуете этот вариант). Помимо вопросов, связанных с громоздкостью, сложностью данного решения возникает принципиальный вопрос - как далеко необходимо идти по установке параметров. Скажем, для вывода линии можем установить цвет линии. Нужно ли устанавливать тип ее штриховки, толщину, ...номер видеорежима. В данном контексте это решение рождает еще больше вопросов. Причем договорится в этом случае (какие настройки устанавливать перед выводом) также невозможно. Все равно при длительной эксплуатации продукта эти проблемы выходят наружу.
Здесь, в общем-то и возникает понятие "контекста устройства". Можно было бы предложить наличие операции сохранения и восстановления "контекста устройства". Причем данная операция должна быть реализована именно в графической библиотеке, только там она определена и имеет смысл. Однако и это решение таковым не является. Проблем также становится еще больше (Где и как сохранять - ведь может так быть, что сохранять необходимо не только переменные библиотеки, а например открытые файлы, блоки памяти и прочее, проблемы реентрабельности). Причем библиотек в задаче может быть несколько, и они могут быть зависимыми друг от друга.

Единственным решением может быть наличие "контекста устройства" для каждого активного процесса. Но это уже методика ООП.

С Уважением, Виктор.



Вопрос отправлен: 06.07.2002, 22:59
Отправитель: Виктор (sfkvant@tuapse.ru)

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

Отвечает masquer

Здравствуйте, Виктор!
Попробую резюмировать все вышеизложеное.
1. Меня лично это не убедило, возраст уже наверное не тот :)
2. ООП придумали для сокрытия ошибок при проработке алгоритма работы программы.
3. Мое мнение - при программировании на ассемблере - ООП НЕ НУЖЕН, лишнее это, доказательство - напиши любую программу с сипользованием ООП и дизассемблируй - из, скажем, 100 Кб кода - 80 Кб - мусор, структруры ссылаються на структуры, а те еще куда-то, короче бред.
ООП имеет смысл при разработке громоздкого проекта несколькими (или одним) разработчиками на _высокоуровневом_ языке.
Итого: все остаются при своем мнении

Ответ отправлен: 07.07.2002, 09:48
Отправитель: masquer


 Вопрос № 668

Здравствуйте, эксперты!
У меня чисто теоретический вопрос! Допустим я написал обработчик прерывания, ошибки. При возникновении этой ошибки, управление передается моему обработчику, а затем снова возвращается обратно программе, но т.к. адрес возврата указывает на ту же команду, которая вызвала эту ошибку, то получаем зацикливание. Следовательно, если я
затем хочу вернуть управление программе(допустим, чтоб восстановить старый обработчик(программа не резидентная)), то мне надо возвращаться на команду следующую за той что вызвала ошибку. Вопрос, как узнать какое кол-во байт занимает команда, вызвавшая ошибку и как правильно изменить адрес возврата.
P.S.: Можно без примера, хотя бы чистую теорию.
P.P.S.: Извините, если я где-то, чего-то не понимаю.
С уважением, ILYA D.



Вопрос отправлен: 06.07.2002, 23:19
Отправитель: ILYA D.

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

Отвечает Monkey_Logic

Здравствуйте, ILYA D.!
Обработка прерывания происходит в 3 этапа:
1. Прекращение текущего выполнения программы
2. Переход к обработке прерывания
3. Возврат в основную программу
На 1 этапе нужно обеспечить остановку выполнения программы, так,
чтобы после обработки прерывания она выполнялась как будто
никакого прерывания не было. Для этого нужно сохранить в стеке
следующие регистры: cs, ip, flags. Что автоматически делает за тебя
микропроцессор, сохраняя в cs:ip адрес следующей команды.
Со вторым этапом всё ясно. На третьем нужно восстановить стек.
Это делается командой iret, которая извлекает последовательно
из стека ip, cs, flags.
Отсюда вывод: зацикливание происходит в программе, посему
чтобы разобратся - нужен исходник проги.

Ответ отправлен: 07.07.2002, 01:13
Отправитель: Monkey_Logic


Отвечает Broken Sword

Здравствуйте, ILYA D.!
Ну допустим, прерывания ты зря примахнул - выход из прерывания ВСЕГДА осущ. на след. команду (при вызове в стек ложится адрес СЛЕДУЮЩЕЙ команды).
Насчет исключений (ошибка - это лишь вид исключения) уже интереснее...
fault (ошибка) - вид исключения, которое после обработки позволяет проге продолжить свой execution ) как ни в чем не бывало. В официальном мануале написано, что при вызове в стек кладется адрес этой самой инструкции, вызвавшей ошибку, а не на следующую за ней (это происходит аппаратно). Вообще говоря, в обработчике ошибки ты ВСЕГДА можешь сделать так, чтобы при повторном исполнении этой инструкции (вызвавшей данную ошибку) по крайней мере ТА ЖЕ САМАЯ ошибка не повторилась.
trap (ловушка) - вид исключения, похож на fault, но возврат из обработчика происходит уже на СЛЕДУЮЩУЮ инструкцию.
Интересное замечание - если этот вид ислючения произошел при исполнении инструкции, передающей управление (например, jmp), то в стек ложится адрес этой самой инструкции jmp.
(опять же, все происходит аппаратно, ничего отслеживать не надо)
abort (выкидыш :) - вид исключения, не похож в принципе ни на один другой, т.к. не позволяет продолжить или рестартнуть текущую задачу (по-моему даже в стек IP не ложится), и призвано оно лишь для того, чтобы собрать информацию о состоянии процессора после abort-а и "выключить" все текущие приложения и систему в целом, короче, "завершить работу настолько грациозно, насколько это возможно" :))) - почему смешно, потому что так и написано в официальном мануале.
Например, один из абортов - DF (double fault) если он вдруг возникает, и ты уже в его обработчике, и вдруг возникает еще какой нить abort - то все, проц без разговоров вырубается, и в чувства его можно привести только ресетом.

Ответ отправлен: 07.07.2002, 10:10
Отправитель: Broken Sword


Отвечает AnSim

п”пѕп±яЂпѕпµ пІяЂпµпјяЏ яЃяѓя‚пѕпє, ILYA D.!
я‚я‹ п¶пµ пїпёя€пµя€яЊ пѕп±яЂп°п±пѕя‚я‡пёпє пїяЂпµяЂя‹пІп°пЅпёяЏ...

Ответ отправлен: 08.07.2002, 14:44
Отправитель: AnSim


 Вопрос № 669

Я разобрал bin файл своего биоса и нашел там файл AwardBmp.bmp. Но почему-то никакой это не обычный bmp. Никакой сигнатуры, кроме первых байт - 41 57 42 4D-88 00 54
Может кто сталкивался с такими файлами? Как его можно просмотреть? Чем? Может у кого-то описание формата этого найдеться?



Вопрос отправлен: 06.07.2002, 23:32
Отправитель: Bobbbbik

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

Отвечает GL

Здравствуйте, Bobbbbik!
Попробуй тут посмотреть: http://www.ixbt.com/mainboard/enstar.html
Там вроде были какие-то программки для просмотра.

Ответ отправлен: 07.07.2002, 13:06
Отправитель: GL


Отвечает baldr

Доброе время суток, Bobbbbik!
Это как же, интересно, ты нашел в BIOS'е файл?? Да еще и .bmp? :)
Вообще говоря, bmp-файлы - это изначально стандарт фирмы Microsoft. И производители материнских
плат класть на нее хотели. Сигнатуру эту тоже непонятно где ты нашел... С чего ты вообще взял,
что это bmp-то? Какая-нибудь программа "сказала"? Ну-ну...
Изображения в BIOS хранятся, правильно, скорее всего в виде битовых матриц. Хотя, возможно и
пожаты чем-нибудь для экономии. Но найти его в слепке BIOS - задачка нетривиальная.


Ответ отправлен: 08.07.2002, 00:47
Отправитель: baldr


Отвечает kvINT

Доброе время суток, Bobbbbik!
Это и не может быть обычным bmp, ведь ос никакая еще не загружена. Рисунки биоса выводятся напрямую на экран с помощью псевдографики или битовых полей.

Ответ отправлен: 08.07.2002, 12:20
Отправитель: kvINT


Отвечает AnSim

пџяЂпёпІпµя‚яЃя‚пІяѓяЋ п’п°яЃ, Bobbbbik!
п±пјпї - яЌя‚пѕ пїяЂпѕяЃя‚пѕ пЅп°п±пѕяЂ я†пІпµя‚пѕпІ я‚пѕя‡пµпє

Ответ отправлен: 08.07.2002, 14:45
Отправитель: AnSim



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

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

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




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

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


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

В избранное