Автор работы: Пользователь скрыл имя, 17 Декабря 2010 в 22:13, доклад
В работе описываються такие команды как:
AND Логическое И
TEST Логическое сравнение
OR Логическое ВКЛЮЧАЮЩЕЕ ИЛИ
XOR Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
NOT Инверсия, дополнение до 1, логическое отрицание
SAR Арифметический сдвиг вправо
RCL Циклический сдвиг влево через бит переноса
ROL Циклический сдвиг влево
AND
Логическое И
Команда and
осуществляет логическое (побитовое) умножение
первого операнда на второй. Исходное
значение первого операнда (приемника)
теряется, замещаясь результатом умножения.
В качестве первого операнда команды and
можно указывать РОН или ячейку памяти,
в качестве второго - РОН, ячейку памяти
или непосредственное значение, однако
не допускается определять оба операнда
одновременно как ячейки памяти. Операнды
могут быть байтами или словами. Команда
воздействует на флаги OF, SF, ZF, PF и CF, при
этом флаги CF и OF всегда сбрасываются в
0.
TEST
Логическое сравнение
Команда test выполняет операцию логического умножения И над двумя операндами и, в зависимости от результата, устанавливает флаги SF, ZF и PF. Флаги OF и CF сбрасываются, a AF имеет неопределенное значение. Состояние флагов можно затем проанализировать командами условных переходов. Команда test не изменяет ни один из операндов.
В качестве первого
операнда команды test можно указывать РОН
или ячейку памяти, в качестве второго
- РОН, ячейку памяти или непосредственное
значение, однако не допускается определять
оба операнда одновременно как ячейки
памяти. Операнды могут быть байтами или
словами.
OR
Логическое ВКЛЮЧАЮЩЕЕ
ИЛИ
Команда or
выполняет операцию логического (побитового)
сложения двух операндов. Результат замещает
первый операнд (приемник); второй операнд
(источник) не изменяется. В качестве первого
операнда можно указывать РОН или ячейку
памяти, в качестве второго - РОН, ячейку
памяти или непосредственное значение,
однако не допускается определять оба
операнда одновременно как ячейки памяти.
Операнды команды or могут быть байтами
или словами. Команда воздействует на
флаги OF, SF, ZF, PF и CF, при этом флаги CF и OF
всегда сбрасываются в 0.
XOR
Логическое ИСКЛЮЧАЮЩЕЕ
ИЛИ
Команда хог выполняет операцию логического (побитового) исключающего или над своими двумя операндами. Результат операции замещает первый операнд; второй операнд не изменяется. Каждый бит результата устанавливается в 1, если соответствующие биты операндов различны, и сбрасывается в 0, если соответствующие биты операндов совпадают.
В качестве первого
операнда команды хог можно указывать РОН
или ячейку памяти, в качестве второго
- РОН, ячейку памяти или непосредственное
значение, однако не допускается определять
оба операнда одновременно как ячейки
памяти. Операнды могут быть байтами или
словами. Команда воздействует на флаги
OF, SF, ZF, PF и CF, причем флаги OF и CF всегда
сбрасываются, а остальные флаги устанавливаются
в зависимости от результата.
NOT
Инверсия, дополнение
до 1, логическое отрицание
Команда not выполняет инверсию битов указанного операнда, заменяя 0 на 1 и наоборот. В качестве операнда можно указывать РОН или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда не воздействует на флаги процессора.
SAL
Арифметический сдвиг
влево
Команда sal осуществляет сдвиг влево всех битов операнда. Старший бит операнда поступает в флаг CF. Если команда записана в формате
sal операнд, 1
сдвиг осуществляется на 1 бит. В младший бит операнда загружается 0. Если команда записана в формате
sal операнд, CL
сдвиг осуществляется на число битов, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда, пройдя через флаг CF, теряются, а младшие заполняются нулями (рис. 1).
Рис. 1. Действие
команды sal.
В качестве операнда
команды sal можно указывать РОН
или ячейку памяти размером как в байт,
так и в слово. Не допускается использовать
в качестве операнда непосредственное
значение.
SAR
Арифметический сдвиг
вправо
Команда sar осуществляет сдвиг вправо всех битов операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате
sar операнд, 1
сдвиг осуществляется на 1 бит. Старший бит операнда сохраняет свое значение. Если команда записана в формате
sar операнд, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда, пройдя через флаг CF, теряются, а старший бит расширяется вправо (рис. 2).
Рис. 2. Действие
команды sar.
В качестве операнда можно указывать РОН или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение.
Каждый сдвиг
вправо эквивалентен делению знакового
числа на 2, поэтому команду sar
удобно использовать для деления операнда
на целые степени 2. Команда воздействует
на флаги OF, SF, ZF, PF и CF.
SHL
Логический сдвиг
влево
Команда полностью
эквивалентна команде sal (арифметический сдвиг
влево). См. описание команды sal.
SHR
Логический сдвиг
вправо
Команда shr осуществляет сдвиг вправо всех битов операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате
shr операнд, 1
сдвиг осуществляется на 1 бит. В старший бит операнда загружается 0, а младший теряется. Если команда записана в формате
shr onepand, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда заполняются нулями, а младшие, пройдя через флаг CF, теряются (рис. 3).
Рис. 3. Действие
команды shr.
В качестве операнда
можно указывать РОН или ячейку
памяти размером как в байт, так
и в слово. Не допускается использовать
в качестве операнда непосредственное
значение. Команда воздействует на флаги
CF, OF, PF, SF и ZF.
RCL
Циклический сдвиг
влево через бит
переноса
Команда rсl осуществляет сдвиг влево всех битов операнда. Если команда записана в формате
rcl операнд, 1
сдвиг осуществляется на 1 бит. В младший бит операнда заносится значение флага CF; старший бит операнда загружается в CF. Если команда записана в формате
rcl операнд, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда поступают сначала в CF, а оттуда - в младшие биты операнда (рис. 4).
Рис. 4. Действие
команды rcl.
В качестве операнда
команды rcl можно указывать РОН
или ячейку памяти размером как в байт,
так и в слово. Не допускается использовать
в качестве операнда непосредственное
значение. Команда воздействует на флаги
OF и CF.
RCR
Циклический сдвиг вправо
через бит переноса
Команда rсr осуществляет сдвиг вправо всех битов операнда. Если команда записана в формате
rcr операнд, 1
сдвиг осуществляется на 1 бит. В старший бит операнда заносится значение флага CF; младший бит операнда загружается в CF. Если команда записана в формате
rcr операнд, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда поступают сначала в CF, а оттуда - в старшие биты операнда (рис. 5).
Рис. 5. Действие
команды rcl.
В качестве операнда
можно указывать РОН или ячейку
памяти размером как в байт, так
и в слово. Не допускается использовать
в качестве операнда непосредственное
значение. Команда воздействует на флаги
OF и CF.
ROL
Циклический сдвиг
влево
Команда rol осуществляет сдвиг влево всех битов операнда. Если команда записана в формате
rol операнд, 1
сдвиг осуществляется на 1 бит. Старший бит операнда загружается в его младший разряд и одновременно заносится в флаг CF (рис. 6). Если команда записана в формате
rol операнд, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда перемещаются в его младшие разряды. Последний перенесенный бит одновременно заносится в флаг CF.
Рис. 6. Действие
команды rol.
В качестве операнда
можно указывать РОН или ячейку
памяти размером как в байт, так
и в слово. Не допускается использовать
в качестве операнда непосредственное
значение. Команда воздействует на флаги
OF и CF.
ROR
Циклический сдвиг вправо
Команда ror осуществляет циклический сдвиг вправо всех битов операнда. Если команда записана в формате
ror операнд, 1
сдвиг осуществляется на 1 бит. Младший бит операнда записывается в его старший разряд и одновременно поступает в флаг CF (рис. 7). Если команда записана в формате
ror операнд, CL
сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда перемещаются в его старшие разряды. Последний перенесенный бит одновременно заносится в флаг CF.
Рис. 7. Действие
команды ror.
В качестве операнда можно указывать РОН или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги OF и CF.