Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Базовые знания, необходимые для выполнения данной работы





• устройство микропроцессора (арифметико-логическое устройство);

• основные логические операции и таблицу основных логических операций;

• понятие сдвига и виды команд сдвига.

Теоретические основы

Основные логические операции

• логическое отрицание (NOT); результат - ИСТИНА, если аргумент - ЛОЖЬ;

• конъюнкция/логическое умножение (AND); результат - ИСТИНА, если оба аргумента - ИСТИНА;

• дизъюнкция/логическое сложение (OR); результат - ИСТИНА, если хотя бы один аргумент - ИСТИНА;

• исключающее ИЛИ (XOR); результат - ИСТИНА, если только один аргумент - ИСТИНА.

Таблица логических операций

В МП типа i486/Pentium логические команды могут быть 8-ми, 16-ти и 32-х разрядными, т.е. оперировать, соответственно, байтами, словами и двойными словами.

Логические команды

Команда NOT

Форматы команды

NOT r/m8

NOT r/m16

NOT r/m32

Команда выполняет инверсию битов указанного в команде операнда. Команда NOT не влияет на флаги.

Пример:

MOV AL, 00001111b

NOT AL; AL = 11110000b

Команда AND

Форматы команды

AND AL, imm8

AND AX, imm16

AND EAX, imm32

AND r/m8, imm8

AND r/m16, imm16

AND r/m32, imm32

AND r/m16, imm8

AND r/m32, imm8

AND r/m8, r8

AND r/m16, r16

AND r/m32, r32

AND r8, r/m8

AND r16, r/m16

AND r32, r/m32

Команда может быть использована для сброса битов.

Пример:

Mov AL, 11111111b

and AL, 00001111b; AL = 00001111b

Команда OR

Форматы команды

те же, что и у AND.

Команда может быть использована для установки битов.

Пример:

Mov AL, 00001111b

or AL, 11110000b; AL = 11111111b

Команда XOR

Форматы команды

те же, что и у AND.

Команда может быть использована для обнуления регистров, а также для инвертирования битов.

Пример:

xor AX, AX; AX = 0000000000000000b

Mov AL, 00001111b

xor AL, 11111111b; AL = 11110000b

Команда TEST

Форматы команды

те же, что и у AND.

Команда выполняет операцию AND, но не изменяет операнд-приемник. Воздействует на флаги SF, ZF и PF.

Пример вычисления логического выражения

Пусть X = true, Y =false. Нужно вычислить значение выражения:

Z = X or not (Y and not (X xor Y)).

(Очевидно, что ответ-true.)

mov AX, X; X = true

mov BX, Y; Y = false

Mov CX, AX; копия X

Xor CX, BX; X xor Y

Not CX; not(X xor Y)

and CX, BX; Y and...

not CX; not(Y and...)

or CX, AX; X or not(...)

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

X dw 0FFFFh

Y dw 00000h

Виды сдвигов

В зависимости от того, куда переносятся выдвинутые биты и как заполняются освободившиеся биты, команды сдвигов делятся на два вида:

линейный сдвиг;

циклический сдвиг.

По направлению сдвига команды делятся на команды сдвига влево и, соответственно, вправо.

Команды сдвига могут быть 8-ми, 16-ти и 32-х разрядными.

В зависимости от разрядности могут сдвигать, соответственно, на 7, 15 или 31 разряд.

Кол-во сдвигаемых бит может указываться непосредственным значением или в регистре CL. При этом флаг CF содержит значение последнего выдвинутого бита

.

Команды линейных сдвигов

3.5

3.4.1 Команды SHR\SHL (логический сдвиг вправо \влево)

Форматы команд

shr r/m8, 1

shr r/m8, CL

shr r/m8, imm8

shr r/m16, 1

shr r/m16, CL

shr r/m16, imm8

shr r/m32, 1

shr r/m32, CL

shr r/m32, imm8

Команды осуществляют сдвиг битов с потерей выдвинутых битов и обнулением освободившихся.

Могут применяться для умножения \ деления беззнаковых целых чисел на степени числа 2

(2d=10b).

Пример. Необходимо умножить содержимое регистра AX на 8.

Shl AX, 3

 

Считается, что применение команд сдвига вместо команд умножения \деления эффективнее с точки зрения быстродействия. Кроме того, две команды

Shl AX, 1

Shl AX, 1

эффективнее команд

Mov CL, 2

Shl AX, CL

3.4.2 Команды SAR\SAL (команды арифметического сдвига вправо\влево)

Форматы команд

Форматы команд те же, что и у SHR\SHL.

Команды арифметического сдвига оставляют на месте знаковый разряд. А при сдвиге вправо ещё и размножают его. Результат сдвига вправо не совпадает с результатом деления, выполняемого командой idiv.

Сравните:

Sar AX, 3

и

Idiv 8

3.4.3 Команды SHRD\SHLD (команды сдвига вправо\влево с двойной точностью)

Форматы команд

shrd r/m16, r16, imm8

shrd r/m32, r32, imm8

shrd r/m16, r16, CL

shrd r/m32, r32, CL

Приемник сдвигается вправо\влево на число бит указанное в счетчике. Старший (для SHRD) или младший (для SHLD) бит не обнуляется, а считывается из источника, значение которого не изменяется. Например, если приемник содержит 00101001b, источник - 1010b, счетчик - 3, SHRD

даст в результате 01000101b, а SHLD - 01001101b (проверьте это).

Команды циклического сдвига

3.5.1 Команды ROR\ROL (циклический сдвиг вправо\влево)

Форматы команд

ror r/m8, 1

ror r/m8, CL

ror r/m8, imm8

ror r/m16, 1

ror r/m16, CL

ror r/m16, imm8

ror r/m32, 1

ror r/m32, CL

ror r/m32, imm8

Осуществляют сдвиг битов без потери выдвинутых битов. Выдвинутые биты переносятся на место освободившихся.

Можно применять для обмена значениями младшую и старшую половину байта:

Mov AL, 11110000b

ror AL, 4; AL = 00001111b

(проверьте это).

3.5.2 Команда RCR\RCL (циклический сдвиг вправо\влево)

Форматы команд

Форматы команд те же, что и у команд ROR\ROL.

Отличаются от команд ROR\ROL тем, что флаг CF рассматривают как расширение приемника.

Выдвинутый бит помещается в CF, а на следующем такте пересылается в самый младший бит (убедитесь в этом).

Задание

Выполните 5 (пять) упражнений из нижеприведенного списка, выбирая по следующему принципу:

пусть номер студента с списке группы N, тогда выполняются упражнения с номерами N, N+1, N+2, N+3, N+4.

Пусть X = true, Y = false. Нужно вычислить значение выражения:

1. (not(X or Y)) xor (X and Y)

2. (not X) or (X xor (X and Y))

3. Y xor (X and (not(X and Y)))

4. X and (Y xor (not(X or Y)))

5. (not(X and Y)) or (X xor Y)

6. X or (not(X xor (X and Y)))

7. Y and (not(X or (Y xor X)))

8. (not(X xor Y)) or (Y and X)

9. (X or (not Y)) xor (X and Y)

10.(X xor Y) and (X or (not X))

11.(X and (not Y)) or (Y xor X)

12.(X and Y) xor (not(X) or Y)

13.(not(X and Y)) or (X xor Y)

14.not(X) or not(Y) xor X

15.(not X) or (not Y) and (X xor Y)

16.X xor (not (X and Y)) or Y

17.Y and (X or Y) xor Y

18.(not(X and Y)) xor Y or X

19.(X xor Y) or (not(X and Y))

20.(not(X or Y)) xor (X and Y)

21.(Y xor X) and (X or not(X))

22.(not X) xor (not Y) or (X) and (Y)

23.(Y) and (not(X)) or (not(X xor Y))

24.X xor (not X) or (Y and X)

25.(Y) or (Y and X) xor (not X)

26.Y or not(Y) xor (X and Y)

27.X or (X xor Y) and not(Y)

28.Y and not(X) xor (X or Y)

29.(Y) and not(X xor (Y or X))

30.(not X) or (not(X xor (Y and X)))

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

1. Таблица основных логических операций.

2. Примеры применения логических команд.

3. Понятие сдвига и виды сдвига.

4. Как эффективно осуществить умножение \деление на степень числа 2.

5. Как обменять значениями младшую и старшую часть байта \двойного слова.

 

 

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







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.