Л а б о р а т о р н а я р а б о т а 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.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ: