Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает

Вид материалаКонспект
Схема команды
Алгоритм работы
Схема команды
Состояние флагов после выполнения команды
См. также
Состояние флагов после выполнения команды
См. также
Схема команды
Состояние флагов после выполнения команды
См. также
Подобный материал:
1   ...   24   25   26   27   28   29   30   31   ...   57

NOP


(No OPeration)

Нет операции

 

Схема команды: 

nop 

Назначение: пустая команда.

Синтаксис

Алгоритм работы:

не производит никаких действий.

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:

Команда nop, занимая один байт, может использоваться для резервирования места в сегменте кода или организации программной задержки. В качестве иллюстрации можно обратиться к примеру, приведенному в описании команды hlt. В этом примере команду nop можно использовать вместо jmp $+2. Назначение jmp $+2 в этом фрагменте — задержка для синхронизации работы микропроцессора и аппаратуры компьютера.

NOT


(NOT operand)

Инвертирование операнда

 

Схема команды: 

not источник 

Назначение: инвертирование всех битов операнда источник.

Синтаксис

Алгоритм работы:

инвертировать все биты операнда источника: из 1 в 0, из 0 в 1.

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:

Команду not можно использовать для изменения байта, выполняющего роль некоторого флага, с целью отслеживания некоторых логических условий в программе. Но такой способ не оптимален, эту ситуацию мы обсуждали в книге на уроках 9 и 12.

flag    db      0ffh ;значение флага — истина

...

cycl:

...

        cmp     flag,0

        je      m1

...

m1:     not     flag    ;установить флаг в истину

        

См. также: уроки 9, 12 и команду neg

OR


(logical OR)

Логическое включающее ИЛИ

 

Схема команды: 

or приемник,маска 

Назначение: операция логического ИЛИ над битами операнда назначения.

Синтаксис

Алгоритм работы:
  • выполнить операцию логического ИЛИ над битами операнда назначения, используя в качестве маски второй операнд — маска. При этом бит результата равен 0, если соответствующие биты операндов маска и назначения равны 0, в противном случае бит равен 1;
  • записать результат операции в источник (операнд маска остается неизменным);
  • установить флаги.

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

0

r

r

?



0

Применение:

Команду or можно использовать для работы с операндами на уровне битов. Типичное использование команды — установка определенных разрядов первого операнда в единицу.

        mov     al,01h

        or      bl,al   ;установить нулевой бит в 1

        

См. также: урок 9 и команды and, xor, not

OUT


(OUT operand to port)

Вывод операнда в порт

 

Схема команды: 

out ном_порта,аккумулятор 

Назначение: вывод значения в порт ввода-вывода.

Синтаксис

Алгоритм работы:

Передать байт, слово, двойное слово из регистра al/ax/eax в порт, номер которого определяется первым операндом.

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:

Команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается первым операндом в виде непосредственного значения или значения в регистре dx. Непосредственным значением можно задать порт с номером в диапазоне 0...255. Для указания порта с большим номером используется регистр dx. Размер данных определяется размерностью второго операнда и может быть байтом, словом или двойным словом.

        out     64h,al

        

См. также: уроки 2, 7, 16, 17 и команды in, ins/insb/insw/insd, outs