- •I. Основные функциональные регистры: регистры общего назначения, указатель команд, регистр флагов, регистр сегментов
- •Регистры состояния и управления
- •II. Опции транслятора tasm и редактора связей tlink
- •III. Типы данных
- •IV. Директивы управления листингом
- •V. Структура программы на ассемблере
- •VI. Изучение форматов команд
- •Пересылка операнда
- •Add (сложение)
- •Вычитание
- •Увеличить операнд на 1
- •Уменьшение операнда на единицу
- •Умножение целочисленное без учета знака
- •Деление беззнаковое
- •And (Логическое и)
- •Логическое включающее или
- •Инвертирование операнда
- •Логическое исключающее или ascii-коррекция после сложения
- •Размещение операнда в стеке
- •Извлечение операнда из стека
- •Команды организации циклов
- •Управление циклом по cx
- •VII Макросредства языка ассемблера
VI. Изучение форматов команд
Команды пересылки данных
MOV (MOVe operand)
Пересылка операнда
Схема команды: mov приемник,источник
Назначение: пересылка данных между регистрами или регистрами и памятью.
Алгоритм работы: копирование второго операнда в первый операнд. Применение: Команда mov применяется для различного рода пересылок данных, при этом, несмотря на всю простоту этого действия, необходимо помнить о некоторых ограничениях и особенностях выполнения данной операции:
направление пересылки в команде mov всегда справа налево, то есть из второго операнда в первый;
значение второго операнда не изменяется;
оба операнда не могут быть из памяти (при необходимости можно использовать цепочечную команду movs);
лишь один из операндов может быть сегментным регистром;
желательно использовать в качестве одного из операндов регистр al/ax/eax, так как в этом случае TASM генерирует более быструю форму команды mov.
Команда xchg (exchange)
Команда для двунаправленной пересылки данных.
Эта команда меняет местами значения своих операндов, т.е. содержимое операнда_2 копируется в операнд_1, а старое содержимое операнда_1 - в операнд_2.
xchg <операнд_1>,<операнд_2>
Операнды должны иметь один тип. Команда xchg можно выполнять над двумя регистрами или регистром и переменной. Не допускается обменивать между собой содержимое двух ячеек памяти.
Арифметические команды
Add (сложение)
Схема команды: add приемник,источник
Назначение: сложение двух операндов источник и приемник размерностью байт, слово или двойное слово.
Алгоритм работы:
сложить операнды источник и приемник;
записать результат сложения в приемник;
Применение: Команда add используется для сложения двух целочисленных операндов. Результат сложения помещается по адресу первого операнда. Если результат сложения выходит за границы операнда приемник (возникает переполнение), то учесть эту ситуацию следует путем анализа флага cf и последующего возможного применения команды adc. Например, сложим значения в регистре ax и области памяти ch. При сложении следует учесть возможность переполнения.
chiclo dw 2015 rez dd 0 ... add ax,chislo ;(ax)=(ax)+ch mov word ptr rez,ax jnc dop_sum ;переход, если результат не вышел за разрядную сетку adc word ptr rez+2,0 ;расширить результат, для учета переноса ;в старший разряд dop_sum: ...
|
SUB (SUBtract)
Вычитание
Схема команды: sub операнд_1,операнд_2
Назначение: целочисленное вычитание.
Алгоритм работы:
выполнить вычитание операнд_1=операнд_2-операнд_1;
установить флаги.
Применение: Команда sub используется для выполнения вычитания целочисленных операндов или для вычитания младших частей значений многобайтных операндов.
;выполнить вычитание 64-битных значений: vich_1-vich_2 vich_1 dd 2 dup (0) vich_2 dd 2 dup (0) rez dd 2 dup (0) ... ;ввести значения в поля vich_1 и vich_2: ;младший байт по младшему адресу ... mov eax,vich_1 sub eax,vich_2 ;вычесть младшие половинки чисел mov rez,eax ;младшая часть результата mov eax,vich_1+4 sbb eax,vich_2+4 ;вычесть старшие половинки чисел mov rez+4,eax ;старшая часть результата
|
INC (INCrement operand by 1)
