Jump to content

Флаг полупереноса

(Перенаправлено с вспомогательного флага )

Флаг полупереноса (также известный как вспомогательный флаг ) — это бит флага состояния в регистре состояния многих семейств процессоров , таких как Intel 8080 , Zilog Z80 , x86 , [ 1 ] и серия Atmel AVR , среди других. Он указывает, что инструкции был сгенерирован перенос или заимствование из четырех младших битов аккумуляторного после выполнения арифметической регистра . В основном он используется в десятичных ( BCD ) арифметических инструкциях.

Использование

[ редактировать ]

Обычно процессор, использующий двоичную арифметику (к которому относятся почти все современные процессоры), складывает два 8-битных байтовых значения в соответствии с правилами простого двоичного сложения. Например, сложив 25 16 и 48 16, получим 6D 16 . Однако для двоично-десятичных значений (BCD), где каждый 4-битный полубайт представляет десятичную цифру, сложение более сложное. Например, при добавлении десятичных значений 25 и 48, которые закодированы как значения BCD 25 16 и 48 16 , двоичное сложение двух значений дает 6D 16 . Поскольку младший полубайт этого значения представляет собой недесятичную цифру (D), его необходимо скорректировать, добавив 06 16, чтобы получить правильный результат BCD 73 16 , который представляет десятичное значение 73.

  0010 0101   25
+ 0100 1000   48
-----------
  0110 1101   6D, intermediate result
+      0110   06, adjustment
-----------
  0111 0011   73, adjusted result

Аналогично, сложение значений BCD 39 16 и 48 16 дает 81 16 . Этот результат не имеет недесятичного младшего полубайта, но он вызывает перенос младшей значащей цифры (четыре младших бита) в старшую цифру (четыре старших бита). Об этом свидетельствует установка процессором флага полупереноса. Это значение также необходимо исправить, добавив 06 16 к 81 16, чтобы получить скорректированный результат BCD 87 16 .

  0011 1001   39
+ 0100 1000   48
-----------
  1000 0001   81, intermediate result
+      0110   06, adjustment
-----------
  1000 0111   87, adjusted result

Наконец, если в результате сложения получается недесятичная старшая цифра, то 60 16 к значению необходимо добавить , чтобы получить правильный результат в формате BCD. Например, сложение 72 16 и 73 16 дает E5 16 . Поскольку самая значимая цифра этой суммы недесятичная (E), прибавление к ней 60 16 дает исправленный результат BCD 145 16 . (Обратите внимание, что первая цифра на самом деле является битом переноса .)

  0111 0010   72
+ 0111 0011   73
-----------
  1110 0101   E5, intermediate result
+ 0110        60, adjustment
-----------
1 0100 0101  145, adjusted result

Подводя итог, если результат двоичного сложения содержит недесятичную младшую цифру или вызывает установку флага полупереноса, результат необходимо исправить, добавив 06 16 к нему ; если результат содержит недесятичную старшую цифру, результат необходимо дополнительно исправить, добавив 60 16 , чтобы получить правильное окончательное значение BCD.

Вспомогательный флаг переноса в x86

[ редактировать ]
Регистр состояния процессора Intel
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (битовая позиция)
- - - - ТО Д я Т С С - А - П - С Флаги

Флаг вспомогательного переноса (AF) — это флаг ЦП в регистре FLAGS всех x86 -совместимых ЦП . [ 2 ] и предыдущее семейство 8080 . Intel иногда называла его флагом настройки. [ 3 ] Бит флага расположен в позиции 4 в регистре флага ЦП. Он указывает, когда арифметический перенос из четырех младших битов или младшего полубайта был сгенерирован или заимствование. Он в основном используется для поддержки двоично-десятичной арифметики (BCD).

Флаг вспомогательного переноса устанавливается (в 1), если во время операции добавления происходит перенос из младшего полубайта (четыре младших бита) в старший полубайт (4 старших бита) или заимствование из старшего полубайта в младший. полубайт в младшей 8-битной части во время вычитания. В противном случае, если такого переноса или заимствования не происходит, флаг очищается или «сбрасывается» (устанавливается в 0). [ 4 ]

См. также

[ редактировать ]
  1. ^ «Руководство разработчика программного обеспечения для архитектуры Intel, том 2: Справочное руководство по набору команд» (PDF) . Проверено 29 мая 2013 г.
  2. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том. 1 . Декабрь 2022. с. 3-16.
  3. ^ Руководство разработчика семейства Pentium Pro: Том 2 (PDF) . Январь 1996 г. с. 3-11.
  4. ^ «Руководство пользователя семейства 8086» (PDF) . Интел. Архивировано из оригинала (PDF) 27 сентября 2020 года . Проверено 2 июля 2020 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6fd5aa32ed6a979052ef5a8476c8ff27__1720800360
URL1:https://arc.ask3.ru/arc/aa/6f/27/6fd5aa32ed6a979052ef5a8476c8ff27.html
Заголовок, (Title) документа по адресу, URL1:
Half-carry flag - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)