Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2024-02-15 | 82 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Как уже упоминалось, при выполнении сложения микропроцессор 8x86 рассматривает операнды как двоичные числа. Что же произойдет, если они будут двоично-десятичными кодами чисел (кратко десятичными или BCD-числами)? Разберемся в этом на примере. При сложении упакованных BCD-чисел 26 и 55 микропроцессор 8x86 выполнит следующее двоичное сложение:
00100110 (BCD-число 26)
+01010101 (BCD-число 55)
01111011 (??)
Вместо правильного значения (BCD-число 81) мы получим результат, у которого старшая цифра 7, а младшая - шестнадцатеричная цифра В. Означает ли это, что нельзя складывать десятичные числа? Нет, это означает лишь то, что результат должен быть скорректирован для представления в десятичной форме.
Коррекция результата сложения десятичных чисел осуществляется командами ААА (ASCII adjust for addition - скорректировать результат сложения для представления в кодах ASCII) и DAA (Decimal adjust for addition - скорректировать сложение для представления в десятичной форме). В них не требуется наличия операнда: предполагается, что корректируемое значение находится в регистре AL.
Команда ААА преобразует содержимое регистра AL в правильную неупакованную десятичную цифру в младших четырех битах регистра AL (и заполняет нулями старшие четыре бита). Она используется в следующем контексте:
ADD AL,BL ;Сложить неупакованные числа, находящиеся в AL и BL
ААА ; и преобразовать результат в неупакованное число
Если результат превышает 9, то команда ААА добавляет 1 к содержимому регистра АН (чтобы учесть избыточную цифру) и полагает флаг CF равным 1; в противном случае она обнуляет флаг CF. Кроме того, команда ААА изменяет состояние флага AF и оставляет значения флагов PF, ZF, SF и OF неопределенными. Но так как в данном случае только флаг CF имеет смысл, то считайте значения остальных флагов уничтоженными.
|
Команда DAA преобразует содержимое регистра AL в две правильные упакованные десятичные цифры. Она используется в следующем контексте:
ADD AL,BL ;Сложить упакованные BCD-числа в AL и BL
DAA ; и преобразовать результат в упакованное число
Если результат превышает предельное значение для упакованных BCD-чисел (99), то команда DAA добавляет 1 к содержимому регистра АН и полагает флаг CF равным 1. Кроме того, команда DAA изменяет состояния флагов PF, AF, ZF и CF и оставляет значение флага OF неопределенным. Но так как в данном случае только флаг CF имеет смысл, то считайте остальные пять флагов уничтоженными.
Команда приращения значения приемника на единицу
Команда INC (increment - прирастить) добавляет 1 к содержимому регистра или ячейки памяти, но в отличие от команды ADD не воздействует на флаг переноса CF. Команда INC удобна для приращения значений счетчиков в циклах команд. Ее можно использовать и для приращения значения индексного регистра или указателя при доступе к последовательно расположенным ячейкам памяти.
Приведем несколько примеров:
INC CX ;Прирастить значение 16-битового
INC AL ;или 8-битового регистра
INC MEM_ВYТЕ ;Прирастить значение байта
INC MEM_WORD[BX] ;или слова памяти
Как ни странно, приращение значения 8-битового регистра отнимает у микропроцессора 8x86 больше времени, чем приращение значения 16-битового регистра. Это вызвано тем, что разработчики фирмы Intel предполагали, что программисты будут чаще пользоваться счетчиками размером в слово, а не байт, и предусмотрели специальную однобайтовую версию команды INC для 16-битовых регистров.
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!