Хелпикс

Главная

Контакты

Случайная статья





Арифметические операции 4 страница



Ответ: 0010 01012 = 0000 0000 0010 01012.

Ответ:

1. Целочисленный результат:

1.1. В восьмиразрядной сетке 0010 01012.

1.2. В шестнадцатиразрядной сетке 0000 0000 0010 01012.

       2. Дробный результат:

       2.1. С фиксированной точкой 10 0101,12.

2.2. Нормализованное 1, 0010 112 ∙ 25.

2.3. С плавающей точкой 0 10000100 0010 1100 0000 0000 0000 000.

 

Пример: Выполнить деление целых чисел 11110 : 210 = 11011112 : 102 в двоичной системе счисления.

Результат представить:

- в целочисленном формате в восьмиразрядной и шестнадцатиразрядной сетках;

- в формате с плавающей точкой (32 бита).

Порядок выполнения арифметического деления двоичных чисел приведен в таблице 2.23.2.

 

Табл.2.23.2       Арифметическое деление двух двоичных чисел 11110 : 210

 
 

 

 

   
     
     

 

 

     
       

 

     

 

     
         
           

 

11110 : 210 = 55,510; 11011112 : 102 = 11 01112 (остаток равен 1); 11 01112  = 5510

Ответ:

1. Целочисленный результат:

1.1. В восьмиразрядной сетке 0011 01112.

1.2. В шестнадцатиразрядной сетке 0000 0000 0011 01112.

       2. Дробный результат:

       2.1. С фиксированной точкой 11 0111,12.

2.2. Нормализованное 1,1011 112 ∙ 25.

2.3. С плавающей точкой 0 10000100 1011 1100 0000 0000 0000 000.

 

2.5. Проверка результатов выполнения арифметических операций

 

Флаги состояния отражают признаки результат выполнения арифметических инструкций, таких как сложение ADD, вычитание SUB, умножение MUL, деление DIV.

Флаги состояния:

- CF — устанавливается при переносе из старшего значащего бита результата при сложении (или заёме в старший значащий бит результата при вычитании). Флаг CF показывает наличие переполнения в беззнаковой целочисленной арифметике.

- PF — устанавливается, если младший значащий байт результата содержит чётное число единичных (ненулевых) битов. Флаг ориентирован на проверку целостности данных при хранении и передаче.

- AF — устанавливается при переносе из третьего бита 3 результата при сложении (или при заёме в третий  бит результата при вычитании). Этот флаг ориентирован на использование в двоично-десятичной арифметике (BCD - binary coded decimal) .

- ZF — устанавливается, если результат равен нулю. Флаг ориентирован на проверку результата на ноль при организации циклов.

- SF — равен значению старшего значащего бита результата. Флаг SF используется для определения знака результата в знаковой арифметике.

- OF — устанавливается, если есть наличие переполнения в дополнительном коде (при переносе в старший значащий бит результата). Флаг OF показывает наличие переполнения в знаковой целочисленной арифметике.

 

Пример 1

#make_BIN#

;СЛОЖЕНИЕ 8000h + 7FFFh

;+++++++++++++++++++++++

MOV AX, 08000h

MOV BX, 07FFFh

ADD AX, BX

 HLT

 

Результат

FFFFh

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=1 Отрицательный
CF=0 Нет переполнения OF=0 Нет переполнения
Операция 32768+32767=65535 Операция -32768+32767=-1
Вывод Результат 65535 верный Вывод Результат -1 верный

 

Пример 2

#make_BIN#

;СЛОЖЕНИЕ FFFFh + 0001h

;+++++++++++++++++++++++

MOV AX, 0FFFFh

MOV BX, 00001h

ADD AX, BX

 

Результат

0000h

Флаги CF ZF SF OF PF AF
Значение флага

Анализ результата

UNSIGNED

SIGNED

    SF=0 Положительный
CF=1 Есть переполнение OF=0 Нет переполнения
Операция 65535 + 1 = 0 Операция -1+1=0
Вывод Результат 0 неверный, т.к. 65535 + 1 = 65536 Вывод Результат 0 верный

 

Пример 3

#make_BIN#

;СЛОЖЕНИЕ 07FFFh + 00001h

;+++++++++++++++++++++++

MOV AX, 07FFFh

MOV BX, 00001h

ADD AX, BX

 

Результат

8000h

Флаги CF ZF SF OF PF AF
Значение флага

Анализ результата

UNSIGNED

SIGNED

    SF=1 Отрицательный
CF=0 Нет переполнения OF=1 Есть переполнение
Операция 32767 + 1 = 32768 Операция 32767 + 1 = -32768
Вывод Результат 32768 верный. Вывод Результат -32768 неверный, т.к. 32767 + 1 = 32768

 

Пример 4

#make_BIN#

;СЛОЖЕНИЕ 8000h + 8000h

;+++++++++++++++++++++++

MOV AX, 08000h

MOV BX, 08000h

ADD AX, BX

 

Результат

0000h

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=0 Положительный
CF=1 Есть переполнение OF=1 Есть переполнение
Операция 32768 + 32768 = 0 Операция -32768 + -32768 = 0
Вывод Результат 0 неверный, т.к. 32768 + 32768 = 65536 Вывод Результат 0 неверный, т.к. -32768 + -32768 = -65536

 

;+++++++++++++++++++++++

Пример 5

#make_BIN#

;ВЫЧИТАНИЕ 8000h - 8000h

;-----------------------

MOV AX, 08000h

MOV BX, 08000h

SUB AX, BX

 

Результат

0000h

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=0 Положительный
CF=0 Нет переполнения OF=0 Нет переполнения
Операция 32768 - 32768 = 0 Операция 32768 - (-32768) = 0
Вывод Результат 0 верный. Вывод Результат 0 верный

 

Пример 6

#make_BIN#

;ВЫЧИТАНИЕ 8000h - 8001h

;-----------------------

MOV AX, 08000h

MOV BX, 08001h

SUB AX, BX

 

Результат

FFFFh

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=1 Отрицательный
CF=1 Есть переполнение OF=0 Нет переполнения
Операция 32768 – 32769 = 65535 Операция -32768 - (-32767) = -1
Вывод Результат 65535 неверный, т.к. 32768 – 32769 = -1 Вывод Результат -1 верный

 

Пример 7

#make_BIN#

;ВЫЧИТАНИЕ 8000h - 7FFF h

;-----------------------

MOV AX, 08000h

MOV BX, 07FFFh

SUB AX, BX

 

Результат

0001h

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=0 Положительный
CF=0 Нет переполнения OF=1 Есть переполнение
Операция 32768 – 32767 = 1 Операция -32768 – 32767 = 1
Вывод Результат 1 верный. Вывод Результат 1 неверный, т.к. -32768 – 32767 = -65535

 

Пример 8

#make_BIN#

;ВЫЧИТАНИЕ 7FFFh  - 8000h

;-----------------------

MOV AX, 07FFFh

MOV BX, 08000h

SUB AX, BX

 

Результат

FFFFh

Флаги CF ZF SF OF PF AF
Значение флага

 

Анализ результата

UNSIGNED

SIGNED

    SF=1 Отрицательный
CF=1 Есть переполнение OF=1 Есть переполнение
Операция 32767 – 32768 = 65535 Операция 32767 - (-32768) = -1
Вывод Результат 65535 неверный, т.к. 32767 – 32768 = -1 Вывод Результат -1 неверный, т.к. 32767 - (-32768) = 65535

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.