
- •Вопросы к контрольной работе №3 Тема: «Цепочки, структуры, bcd»
- •Команды сканирование цепочки, формат, принцип работы.
- •Команды загрузки элемента из цепочки, формат, принцип работы.
- •Команды сохранения элемента в цепочке, формат, принцип работы.
- •Неупакованные bcd-числа, команда коррекции вычитания, принцип работы.
Неупакованные bcd-числа, команда коррекции вычитания, принцип работы.
aas (ASCII Adjust for Substraction) — коррекция результата вычитания для представления в символьном виде.
Команда aas также не имеет операндов и работает с регистром al, анализируя его младшую тетраду следующим образом: если ее значение меньше 9, то флаг cf сбрасывается в 0, и управление передается следующей команде. Если значение тетрады в al больше 9, то команда aas выполняет следующие действия:
− из содержимого младшей тетрады регистра аl (заметьте — не из содержимого всего регистра) вычитает 6;
− обнуляет старшую тетраду регистра al;
− устанавливает флаг cf в 1, тем самым фиксируя воображаемый заем из старшего разряда.
Неупакованные BCD-числа, команда коррекции умножения, принцип работы.
aam (ASCII Adjust for Multiplication) — коррекция результата умножения для представления в символьном виде. Она не имеет операндов и работает с регистром ах следующим образом:
− делит al на 10;
− результат деления записывается так; частное — в al, остаток — в ah.
В результате после выполнения команды aam в регистрах al и ah находятся правильные двоично-десятичные цифры произведения двух цифр.
Неупакованные BCD-числа, команда коррекции деления, принцип работы.
aad (ASCII Adjust, for Division) — коррекция деления для представления в символьном виде.
Команда не имеет операндов и преобразует двузначное неупакованное BCD-число в регистре ах в двоичное число. Это двоичное число впоследствии будет играть роль делимого в операции деления. Кроме преобразования, команда aad помещает полученное двоичное число в регистр al. Делимое, естественно, будет двоичным числом из диапазона 0...99. Алгоритм, по которому команда aad осуществляет это преобразование, состоит в следующем:
− умножить старшую цифру исходного BCD-числа в ах (содержимое ah) на 10;
− выполнить сложение ah + al, результат которого (двоичное число) занести в al;
− обнулить содержимое ah.
Далее программисту нужно выдать обычную команду деления div для выполнения деления содержимого ах на одну BCD-цифру, находящуюся и байтовом регистре или байтовой ячейке памяти.
Упакованные BCD-числа, команда коррекции сложения, принцип работы.
daa (Decimal Adjust for Addition) — коррекция результата сложения для представления в десятичном виде.
Команда daa преобразует содержимое регистра al в две упакованные десятичные цифры. Получившаяся в результате сложения единица (если результат сложения больше 99) запоминается в флаге cf, тем самым учитывается перенос в старший разряд.
Упакованные BCD-числа, команда коррекции вычитания, принцип работы.
das (Decimal Adjust for Substraction) — коррекция результата вычитания для представления в десятичном виде.
1. Если AF = 1 или значение младшей тетрады AL > 9, то (AL) = (AL) - б; AF « 1; в случае заема при вычитании установить флаг CF. Иначе — AF = 0.
2. Если CF = 1 или значение старшей тетрады AL > 9, то (AL) = (AL) -60; CF = 1. Иначе — CF = 0.