Л а б о р а т о р н а я р а б о т а N 7

АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ 1: ОБРАБОТКА ДВОИЧНЫХ ДАННЫХ

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

1. 2 0Для выполнения лабораторной работы вы должны войти в каталог группы из панели NORTON. Каждый студент должен иметь в каталоге группы свой личный каталог. Все программы должны создаваться и записываться в личном каталоге студента.

2. Команда JMP для перехода в пределах от -128 до +127 байт имеет тип SHORT. Ассемблер генерирует в этом случае однобайтовый операнд в пределах от 00 до FF.

3. Вычитание осуществляется в компьютере по методу сложения с дополнительным кодом. Для получения дополнительного кода для вычитаемого числа устанавливаются обратные значения битов и прибавляется 1, а затем происходит сложение с первым числом (все отрицательные числа представляются в дополнительном коде признаком

которого является 1 в знаковом разряде).

4. При выполнении операций с байтовыми числами в регистрах микропроцессора старший бит байта является знаковым остальные семь битов числовыми данными, т.е. значения от -128 до +127. Если результат арифметической операции превышает эти пределы то возникает переполнение и этот результат нельзя считать правильным. Например:

 

Двоичный код Знаковое число

0111 1001 +121

0000 1011 +11

---------------------

1000 0100 -124

 

Для расширения диапазона арифметического результата применяется команда CBW, которая преобразует байт в слово. При этом в регистре будет старший знаковый разряд и 15 бит числовых данных.

Диапазон арифметического результата в этом случае будет в пределах от -32768 до +32767.

5. Перенос возникает если 1 вытесняется из байта. В этом случае результат операции со знаковыми данными также будет неправильным. Например:

 

Двоичный код Знаковое число

1111 0110 -10

1000 1001 -119

---------------------

0111 1111 +127

 

6. Если происходит и перемещение 1 в знаковый разряд и вытеснение 1 из байта, то при операции со знаковыми данными результат получается правильный. Например:

 

Двоичный код Знаковое число

1111 1100 -4

0000 0101 +5

----------------------

0000 0001 +1

 

7. Двоичный байт можно рассматривать как беззнаковые данные, считая старший бит не знаковым разрядом, а старшим разрядом двоичного числа. Тогда диапазон возможных чисел для байта будет от 0 до +255, а для двухбайтового регистра микропроцессора от 0 до +65535.

8. Если при операции с беззнаковыми данными происходит переполнение, то результат получается правильным:

 

Двоичный код Беззнаковое число

0111 1001 121

0000 1011 11

---------------------

1000 0100 132

 

9. Если при операции с беззнаковыми данными происходит перенос, то результат получается неправильным:

 

Двоичный код Беззнаковое число

1111 0110 246

1000 1001 137

---------------------

0111 1111 127

 

10. Если при операции с беззнаковыми данными происходит и перенос и переполнение, то результат будет неправильным:

 

Двоичное число Беззнаковое число

1111 1100 252

0000 0101 5

---------------------

0000 0001 1

 

11. Операция умножения для беззнаковых данных выполняется командой MUL, а для знаковых - IMUL. В случае умножения байта на байт множимое находится в регистре AL, множитель в памяти или в каком-либо регистре, а результат помещается в регистр АХ. В случае умножения двух слов множимое находится в регистре АХ, множитель в памяти или в другом регистре, а результат, состоящий из двух слов помещается: младшая (правая) часть в регистр АХ, а

старшая (левая) часть в регистр DX.

12. Операция деления для беззнаковых данных выполняется командой DIV, а для знаковых - IDIV.

13. При делении слова на байт делимое находится в регистре АХ, а делитель - в байте памяти или в однобайтовом регистре. После деления остаток получается в регистре АН, а частное - в AL.

14. При делении двойного слова на слово делимое находится в регистровой паре DX:AX, а делитель - в слове памяти или в регистре. После деления остаток получается в регистре DX, а частное – в регистре AX.

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ: