Макроопределение (макрос) – участок программы, которому присвоено имя и который ассемблируется всякий раз, когда ассемблер встречает это имя в тексте программы.
Макроопределение задается с помощью директивы MACRO...ENDM.
Структура макроопределения:
[ИМЯ] macro [список_формальных_параметров]
----------------------
тело_макроопределения
----------------------
Endm
10) Понятие и алгоритм цепочечных команд (не полный)
Цепочечная команда позволяет проводить действия над блоками памяти, представляющими собой последовательности элементов следующего размера:
8 бит — байт;
16 бит — слово;
32 бита — двойное слово.
Команды циклического сдвига
Циклический сдвиг представляет сбой операцию сдвига, при которой выдвинутый бит занимает освободившийся разряд. Существуют следующие команды циклического сдвига:
ROR;Циклический сдвиг вправо
ROL;Циклический сдвиг влево
RCR;Циклический сдвиг вправо с переносом
RCL;Циклический сдвиг влево с переносом
Следующая последовательность команд иллюстрирует операцию циклического сдвига ROR:
|
|
MOV CL,03; BX:
MOV BX,10110111B; 10110111
ROR BX,1; 11011011;Сдвиг вправо на 1
ROR BX,CL; 01111011;Сдвиг вправо на 3
Первая команда ROR при выполнении циклического сдвига переносит правый единичный бит регистра BX в освободившуюся левую позицию. Вторая команда ROR переносит таким образом три правых бита.
Управляющие структуры Else и Case
Пример_1:if (((х > у) && (z < t)) || (a!= b)) c = d;
можно представить на ассемблере как:
; проверка условия
mov ax,A
cmp ах,В
jne then; если а!= b - условие выполнено
mov ах,X
cmp ax,Y
jng endif; если х <= у - условие не выполнено
mov ax,Z
cmp ах,Т
jnl endif; если z >= t - условие не выполнено
then:; условие выполняется
mov ax,D
mov С,ах
endif:
Пример_2:
Пусть переменная I принимает значения от 0 до 2, и в зависимости от значения надо выполнить процедуры case0, case1 и case2:
mov ax,I cmp ax,0; проверка на 0 jne not0 call case0 jmp endcasenot0: cmp ax,1; проверка на 1 jne not1 call case1 jmp endcasenot1: cmp ax,2; проверка на 2 jne not2 call case2not2:endcase:Структура процедуры
имя-процедуры PROC [параметры]; начало процедуры RET; команда возврата в точку вызова процедуры имя-процедуры ENDP; конец процедуры