Формат предложения ассемблера
[имя метки:] КОП [операнд1] [,операнд2] [;комментарии] Команды пересылки данных
xchg <операнд1>,<операнд2>; двунаправленный обмен данными а:=в; в:=с; с:=а xchg dl,dh; меняет местами данные Команды ввода-вывода в порт in аккумулятор,номер_порта — ввод в аккумулятор из порта out порт,аккумулятор — вывод содержимого аккумулятора в порт Команды работы с адресами и указателями памяти lea назначение,источник — загрузка эффективного адреса источника в регистр-назначение; lea dx, x; аналогично команде mov dx,offset x lds назначение,источник — загрузка эффективного адреса источника в регистр назначения и загрузка указателя (адрес сегмента где содержится источник) в регистр сегмента данных ds; les назначение,источник —-//-регистр дополнительного сегмента данных es; lgs назначение,источник — -//- регистр дополнительного сегмента данных gs; lfs назначение,источник — -//- регистр дополнительного сегмента данных fs; lss назначение,источник — -//- регистр сегмента стека ss. les dx,per1;полный указатель на per1 в пару es:dx Команды работы со стеком Для работы со стеком предназначены три регистра: ss — сегментный регистр стека; sp/esp — регистр указателя стека; bp/ebp — регистр указателя базы кадра стека. push источник — запись значения источник в вершину стека. Алгоритм работы: · уменьшить значение указателя стека esp/sp на 4/2 (в зависимости от значения атрибута размера адреса — use16 или use32);
· записать источник в вершину стека (адресуемую парой ss:esp/sp). Размер записываемых значений — слово или двойное слово. Также в стек можно записывать непосредственные значения. В стек можно класть значение сегментного регистра cs. Другой интересный момент связан с регистром sp. Команда push esp/sp записывает в стек значение esp/sp по состоянию до выдачи этой команды Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека pop назначение — запись значения из вершины стека по месту, указанному операндом назначение. Значение при этом “снимается” с вершины стека. Push ax Push bx push cx …
pop bx pop ax push ax pop bx ; аналогично команде mov bx,ax
push a - размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di push ad - размещение в стеке регистров общего назначения в следующей последовательности: eax, ecx, edx, ebx, esp, ebp, esi, edi pushf - размещение в вершине стека (ss:sp) содержимого регистра флагов flags pushfd - размещение в стеке содержимого регистра флагов eflags.
p opa - извлечение из стека регистров общего назначения di, si, bp, sp, bx, dx, cx, ax p opad - извлечение из стека регистров общего назначения edi, esi, ebp, esp, ebx, edx, ecx, eax p opf - извлечение из стека слова и восстановление его в регистр флагов flags p opfd - извлечение из стека двойного слова и восстановление его в регистр флагов eflags Организация вычислений Логические команды Любая логическая команда меняет значение следующих флагов of, sf,zf,pf,cf (переполнение, знак, нуля, паритет, перенос) and операнд_1,операнд_2 — операция логического умножения (И - конъюнкция). оп1:=оп1 ٧ оп2 and ah, 0a1h; ah:=ah٧0ah and bx, cx; bx:=bx٧cx and dx, x1; dx:=dx٧x1 or операнд_1,операнд_2 — операция логического сложения (ИЛИ - дизъюнкцию) or al, x1; оп1:=оп1 & оп2 or eax,edx or dx, x1 xor операнд_1,операнд_2 — операция логического исключающего сложения (исключающего ИЛИ ИЛИ-НЕ)
test операнд_1,операнд_2 — операция “проверить” (способом логического умножения). Команда выполняет поразрядно логическую операцию И над битами операндов операнд_1 и операнд_2. Состояние операндов остается прежним, изменяются только флаги zf, sf, и pf, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния. not операнд — операция логического отрицания. Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда. Результат записывается на место операнда. Пример программы логического сложения двух однобайтных чисел. model small.stack 100h.data x1 db 0c2hx2 db 022hy db ? .code start: mov ax,@data mov ds,ax mov al, x1or al, x2mov y, al mov ax,4c00h int 21 hEnd start
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|