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

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 129
∙ повысить рейтинг »
quirck
Статус: 1-й класс
Рейтинг: 60
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 5-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1654
Дата выхода:10.08.2017, 14:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:42 / 16
Вопросов / ответов:1 / 1

Консультация # 191266: Здравствуйте! Возник следующий вопрос: В какое состояние перейдет процессор Pentium IA-32, если в результате выполнения арифметической операции с целыми числами со знаком установились следующие признаки регистра состояний: ZF=1, OF=1, SF=1, AF = 1? Известно, что процессор установит флаг IF=1, переключится на программу обработки арифм...

Консультация # 191266:

Здравствуйте!
Возник следующий вопрос:
В какое состояние перейдет процессор Pentium IA-32, если в результате
выполнения арифметической операции с целыми числами со знаком
установились следующие признаки регистра состояний: ZF=1, OF=1, SF=1, AF = 1?
Известно, что процессор установит флаг IF=1, переключится на программу обработки арифметического прерывания. Вопрос почему?

Т.е. на каком основании (из-за чего) произойдет прерывание?

Дата отправки: 05.08.2017, 14:22
Вопрос задал: oldoldspice (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, oldoldspice!

Флаги SF и ZF, противоположности, они не могут быть одновременно равны 1.

Судя по Вашим вопросам и уточнениям Вы сейчас смотрите эти исключения:

© Цитата:
1) #DE (деление на ноль) - INT 0 - ошибка, появляющаяся при переполнении и делении на ноль;
2) #DB (прерывание трассировки) - INT 1 - ловушка, возникающая после выполнения каждой команды, если флаг TF установлен в 1. Используется отладчиками, действующими в реальном режиме;
3) #OF (переполнение) — INT 4 - ловушка, возникающая после выполнения команды INTO, если флаг OF установлен;
4) #BR (переполнение при BOUND) - INT 5 - происходит при выполнении команды BOUND;
5) #UD (недопустимая команда) - INT 6 - ошибка, возникающая при попытке выполнить команду, отсутствующую на данном процессоре;
6) #NM (сопроцессор отсутствует) - INT 7 - ошибка, появляющаяся при по пытке выполнить команду FPU, если FPU отсутствует.

1) прервет работу программы, если делитель будет равен 0 или произойдет переполнение после операций со знаковыми числами;
2) процессор переводится в режим, в котором после выполнения любой команды будет вызван обработчик-ловушка;
3) ещё один обработчик-ловушка, для вызова которой нужно выполнять INT0, это придумано так, чтобы контролировать работу со знаковыми числами. Процессору безразлично с какими числами работать, для него все числа без знака, и он применяет к ним обычную арифметику. Для контроля знаковых чисел есть флаг OF, он устанавливается в 1, если был перенос в знаковый бит, то команда INT0, после арифметической команды вызовет этот обработчик.
4) возникает, когда индекс не попадает в указанный интервал. Обработчик этого исключения должен будет исправить индекс и снова попытается выполнить эту команду;
5 ) ошибка связанная с поколениями процессоров, т.к. от поколения к поколению система к оманд увеличивается, к примеру попытка выполнить код процессора х286, на х86;
6) ошибка тоже связанная с поколениями процессоров, но она актуальна, только для х86, х186, х286, т.к. в последующих процессорах сопроцессор был уже встроен в процессор.

И так, начнем:
5 и 6 - маловероятны, т.к. процессоры уже не те smile ;
4 - это не арифметическая команда - отпадает;
3 - прерывание специально вызывается после арифметической команды - отпадает;
2 - трассировочное прерывание, о состоянии флага TF - ничего не сказано(если его не перепутали с IF) - отпадает;
1 - деление на 0 - самое вероятное событие, т.к. переполнение происходит постоянно и его можно программно отловить с помощью флага CF. Анализируя программно флаги SF и OF можно принять решение о достоверности результата операции.

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 08.08.2017, 19:16
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное