
- •Классификация команд процессора Intel.
- •Команды пересылки данных: mov, cmoVcc, xchg, bswap, in, out.
- •Команды пересылки данных: push, pop, pusha, pushad, popa, popad.
- •Команды двоичной арифметики: add, adc, xadd, sub, sbb, inc, dec, neg.
- •Команды двоичной арифметики: imul, mul, idiv, div, cmp, cmpxchg, cmpxchg8b.
- •Команды десятичной арифметики: daa, das, aaa, aas, aam, aad.
- •Команды логических операций: and, or, xor, not, test.
- •Команды сдвиговых операций: sar, sal, shr, shl, shrd, shld.
- •Команды сдвиговых операций: ror, rol, rcr, rcl.
- •Команды операций над битами и байтами: bt, bts, btr, btc, bsf, bsr, seTcc.
- •Команды передачи управления: jmp, Jcc, jcxz, jecxz.
- •Команды передачи управления: loop, loope, loopz, loopne, loopnz.
- •Команды передачи управления: call, ret, retn, retf.
- •Команды передачи управления: int, iret, iretd, int3, into.
- •Префиксы повторения для строковых операций: rep, repe, repne, repz, repnz.
- •Строковые операции: movs, movsb, movsw, movsd, cmps, cmpsb, cmpsw, cmpsd.
- •Строковые операции: stos, stosb, stosw, stosd, ins, insb, insw, insd, outs, outsb, outsw, outsd.
- •Строковые операции: scas, scasb, scasw, scasd, lods, lodsb, lodsw, lodsd.
- •Команды управления флагами: stc, clc, cmc, std, cld, lahf, sahf.
- •Команды управления флагами: pushf, pushfd, popf, popfd, cli, sti, salc.
- •Директивы задания набора допустимых команд. Глобальные объявления.
- •Условное ассемблирование. Выражения. Операторы, используемые в выражениях.
- •Ввод данных с клавиатуры и вывод на экран.
Классификация команд процессора Intel.
Пересылка данных, двоичная арифметика, десятичная арифметика, логические операции, сдвиговые операции, операции над битами, команды передачи управления, строковые операции, команды управления флагами.
Команды пересылки данных: mov, cmoVcc, xchg, bswap, in, out.
Команда: |
MOV приемник, источник |
Назначение: |
Пересылка данных |
Процессор: |
8086 |
В качестве источника для MOV могут использоваться: число (непосредственный операнд), регистр общего назначения, сегментный регистр или переменная (то есть операнд, находящийся в памяти). В качестве приемника — регистр общего назначения, сегментный регистр (кроме CS) или переменная. Оба операнда должны быть одного и того же размера — байт, слово или двойное слово.
Нельзя выполнять пересылку данных с помощью MOV из одной переменной в другую, из одного сегментного регистра в другой и нельзя помещать в сегментный регистр непосредственный операнд — эти операции выполняют двумя командами MOV (из сегментного регистра в обычный и уже из него в другой сегментный) или парой команд PUSH/POP.
Команда: |
CMOVcc приемник, источник |
Назначение: |
Условная пересылка данных |
Процессор: |
P6 |
Это набор команд, которые копируют содержимое источника в приемник, если удовлетворяется то или иное условие (см. табл. 5). Источником может быть регистр общего назначения или переменная, а приемником — только регистр. Условие, которое должно удовлетворяться, — просто равенство нулю или единице тех или иных флагов из регистра FLAGS, но, если использовать команды CMOVcc сразу после команды СМР (сравнение) с теми же операндами, условия приобретают особый смысл, например:
cmp ах,bх ; сравнить ах и bх
cmovl ax,bx ; если ах < bх, скопировать bх в ах
Слова «выше» и «ниже» в таблице 5 относятся к сравнению чисел без знака, слова «больше» и «меньше» учитывают знак.
Команда: |
XCHG операнд1, операнд2 |
Назначение: |
Обмен операндов между собой |
Процессор: |
8086 |
Содержимое операнда 2 копируется в операнд 1, а старое содержимое операнда 1 — в операнд 2. XCHG можно выполнять над двумя регистрами или над регистром и переменной.
xchg eax,ebx ; то же, что три команды на языке С:
; temp = eax; eax = ebx; ebx = temp;
xchg al,al ; а эта команда не делает ничего
Команда: |
BSWAP регистр32 |
Назначение: |
Обмен байт внутри регистра |
Процессор: |
80486 |
Обращает порядок байт в 32-битном регистре. Биты 0 – 7 (младший байт младшего слова) меняются местами с битами 24 – 31 (старший байт старшего слова), а биты 8 – 15 (старший байт младшего слова) меняются местами с битами 16 – 23 (младший байт старшего слова).
mov eax,12345678h
bswap eax ; теперь в еах находится 78563412h
Чтобы обратить порядок байт в 16-битном регистре, следует использовать команду XCHG:
xchg al,ah ; обратить порядок байт в АХ
В процессорах Intel команду BSWAP можно использовать и для обращения порядка байт в 16-битных регистрах, но в некоторых совместимых процессорах других фирм этот вариант BSWAP не реализован.
Команда: |
IN приемник, источник |
Назначение: |
Считать данные из порта |
Процессор: |
8086 |
Копирует число из порта ввода-вывода, номер которого указан в источнике, в приемник. Приемником может быть только AL, АХ или ЕАХ. Источник — или непосредственный операнд, или DX, причем можно указывать только номера портов не больше 255.
Команда: |
OUT приемник, источник |
Назначение: |
Записать данные в порт |
Процессор: |
8086 |
Копирует число из источника (AL, АХ или ЕАХ) в порт ввода-вывода, номер которого указан в приемнике. Приемник может быть либо непосредственным номером порта, либо регистром DX. На командах IN и OUT строится все общение процессора с устройствами ввода-вывода — клавиатурой, жесткими дисками, различными контроллерами, и используются они, в первую очередь, в драйверах устройств. Например, чтобы включить динамик PC, достаточно выполнить команды:
in al,61h
or al,3
out 61h,al