Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.пос.для ПЗ OKO-2016.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
9 Мб
Скачать
☆

2.3 Контрольные вопросы

1. Какие флаги в регистре флагов, отвечают за корректность выполнения арифметических операций сложения и вычитания.

2. Сформулируйте правила сложения и вычитания двоичных чисел.

3. Как представляются двоичные числа в прямом, обратном и дополнительном коде.

4. Назовите свойства прямого, обратного и дополнительного кодов.

5. Объясните принцип работы флага .

6. Объясните принцип работы флага .

7. Объясните принцип работы флага .

8. Объясните принцип работы флага .

9. Назовите случаи, которые могут возникнуть при выполнении арифметических операций знакового сложения и вычитания.

2.4 Примеры аудиторных заданий

Задание №1. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой, записанных в десятичной системе счисления: .

Решение. Необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде.

Для удобства возьмем длину разрядной сетки равную четырем битам.

Формат суммы представлен на рис. 2.12, а вычисление суммы и значения флагов на рис.2.13.

0,

1

1

1

D3

D2

D1

D0

Рисунок 2.12 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(+5)(10)

0,101(2)

СF=0

(+2)(10)

0,010(2)

SF=0

(+7)(10)

0,111(2)

ZF=0

OF=0

Рисунок 2.13 - Пример вычисления суммы двух двоичных чисел с фиксированной точкой

Значение флагов:

-  , потому, что нет перехода ( ) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки.

-  , потому, что значение знакового бита D3= .

-  , потому, что сумма не равняется ( ).

-  , потому, что результат правильный и переполнение разрядной сетки нет.

Задание №2. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой записанных в десятичной системе счисления: .

Решение. Необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде.

Для удобства возьмем длину разрядной сетки равную четырем битам.

Формат суммы представлен на рис. 2.14, а вычисление суммы и значения флагов на рис.2.15.

1,

1

1

0

D3

D2

D1

D0

Рисунок 2.14 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(+7)(10)

0,111(2)

CF=1

(+7)(10)

0,111(2)

SF=1

(+14)(10)

1,110(2)

ZF=0

OF=1

Рисунок 2.15 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

-  , т.к. есть переход ( ) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки.

-  , потому что значение знакового бита D3= , а это не правильно, так как оба слагаемых положительные числа, значит и сумма должна быть положительной, а в данном случае сумма получается отрицательной, так как знаковый бит равен ( ).

-  , потому что сумма не равняется ( ).

-  , потому что результат не правильный и переполнение разрядной сетки есть.

Задание №3. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой, записанных в десятичной системе счисления: ).

Решение. Необходимо оба числа перевести в двоичную систему счисления.Для удобства возьмем длину разрядной сетки равную четырем битам. Формат суммы представлен на рис. 2.16, а вычисление суммы и значения флагов на рис.2.17.

1

0,

0

1

1

D3

D2

D1

D0

Рисунок 2.16 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(+5)(10)

0,101(2)

CF=0

(-2)(10)

1,110(2)

SF=0

(+3)(10)

10,011(2)

ZF=0

OF=0

Рисунок 2.17 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

-  , потому что есть перехода ( ) из разряда D2 в знаковый разряд D3 и есть перехода из знакового разряда D3 за пределы разрядной сетки.

-  , потому что значение знакового бита D3= .

-  , потому что сумма не равняется ( ).

-  , потому что результат правильный и переполнение разрядной сетки нет.

Единица, которая вышла за пределы разрядной сетки, не учитывается.

Задание №4. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой записанных в десятичной системе счисления: .

Решение. Необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде.

Для удобства возьмем длину разрядной сетки равную четырем битам.

Формат суммы представлен на рис. 2.18, а вычисление суммы и значения флагов на рис.2.19.

1

0,

0

1

1

D3

D2

D1

D0

Рисунок 2.18 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(+2)(10)

0,010(2)

CF=0

(-5)(10)

1,011(2)

SF=1

(-3)(10)

1,101(2)

ZF=0

OF=0

Рисунок 2.19 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

-  , потому что нет перехода ( ) из разряда D2 в знаковый разряд D3 и нет перехода из знакового разряда D3 за пределы разрядной сетки.

-  , потому что значение знакового бита D3= .

-  , потому что сумма не равняется ( ).

-  , потому что результат правильный и переполнение разрядной сетки нет. Число и есть ( ).

Для того, чтобы перейти к прямому коду, необходимо все биты проинвертировать, а затем к младшему биту прибавить ( ), рис.2.20:

1,101(2)

(-3)

0,010(2)

инверсия

1(2)

+1

0,011(2)

(+3)

Рисунок 2.20 - Пример перехода от отрицательной записи числа в дополнительном коде к положительной записи числа

Задание №5. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой, записанных в десятичной системе счисления: ).

Решение. Необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде. Для удобства возьмем длину разрядной сетки равную четырем битам.

Формат суммы представлен на рис. 2.21, а вычисление суммы и значения флагов на рис.2.22.

1

1,

0

0

1

D3

D2

D1

D0

Рисунок 2.21 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(-5)(10)

1,011(2)

CF=0

(-2)(10)

1,110(2)

SF=1

(-7)(10)

11,001(2)

ZF=0

OF=0

Рисунок 2.22 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

-  , потому что есть переход ( ) из разряда D2 в знаковый разряд D3 и есть перехода из знакового разряда D3 за пределы разрядной сетки.

-  , потому что значение знакового бита D3= .

-  , потому что сумма не равняется ( ).

-  , потому что результат правильный и переполнение разрядной сетки нет. Единица, которая вышла за пределы разрядной сетки не учитывается.

Число и есть . Для того, чтобы перейти к прямому коду, необходимо все биты проинвертировать, а затем к младшему биту прибавить ( ), рис.2.23.

1,001(2)

(-7)

0,110(2)

инверсия

1(2)

(+1)

0,111(2)

(+7)

Рисунок 2.23 - Пример перехода от отрицательной записи числа в дополнительном коде к положительной записи числа

Задание №6. Необходимо выполнить арифметическую операцию сложения двух чисел с фиксированной точкой, записанных в десятичной системе счисления: .

Решение. Необходимо оба числа перевести в двоичную систему счисления, а затем представить в дополнительном коде. Для удобства возьмем длину разрядной сетки равную четырем битам. Формат суммы представлен на рис. 2.24, а вычисление суммы и значения флагов на рис.2.25.

0,

0

1

0

D3

D2

D1

D0

Рисунок 2.24 - Формат суммы

Десятичное

число

Двоичное

число

Значения

флагов

(-7)(10)

1,001(2)

CF=1

(-7)(10)

1,001(2)

SF=0

(-14)(10)

10,010(2)

ZF=0

OF=1

Рисунок 2.25 - Пример вычисления суммы двух чисел и значение флагов после получения результата

Значение флагов:

-  , потому что нет перехода ( ) из разряда D2 в знаковый разряд D3 и есть переход из знакового разряда D3 за пределы разрядной сетки.

-  , потому что значение знакового бита D3= , а это не правильно так как оба слагаемых отрицательные числа, значит и сумма должна быть отрицательной, а в данном случае сумма получается положительной, так как знаковый бит равен ( ).

-  , потому что сумма не равняется ( ).

-  , потому что результат не правильный и переполнение разрядной сетки есть.