Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Страница 8 «5 Пример программы»




Страница 8 «5 Пример программы»

                   «5. 3. Продолжение разбора примера программы»

Команды условного перехода:

(слайд №16)

 

Код команды Реальное условие Условие для CMP Код команды Реальное условие Условие для CMP
JA CF=0 и ZF=0 если выше JG ZF=0 и SF=OF если больше
JAE JNC CF=0 если выше или равно если нет переноса JGE SF=OF если больше или равно
JB JC CF=1 если ниже если перенос JL SF< > OF если меньше
JBE CF=1 | ZF=1 если ниже или равно JLE ZF=1 | SF< > OF если меньше или равно
JE JZ ZF=1 если равно если ноль JNE JNZ ZF=0 если не равно если не ноль
JO OF=1 если есть переполнение JNO OF=0 если нет переполнения
JS SF=1 если есть знак JNS SF=0 если нет знака
JP PF=1 если есть четность JNP PF=0 если нет четности

 

Команда CALL:

(слайд №17)

 

Осуществляет вызов процедуры или задачи.

CALL цель (имя процедуры)

Назначение :

  • передача управления близкой или дальней процедуре с запоминанием в стеке адреса точки возврата;
  • переключение задач.

Команда ADD:

(слайд №18)

 

       Выполняет сложение байтов или слов, содержащих двоичные данные.

ADD слагаемое 1, слагаемое 2

Команда безусловного перехода JMP:

(слайд №19)

 

       Обеспечивает безусловный переход, т. е. передачу управления при любых обстоятельствах.

JMP имя_метки

       Метку можно кодировать на одной строке с командой или на отдельной строке перед командой, на которую осуществляется переход, например:

A20: ADD AX, 01

или

A20:

       ADD AX, 01

JMP A20

или

JMP SHORT A20

Так как:

       Эта команда для перехода в пределах от -128 до +127 байт имеет тип SHORT. Ассемблер генерирует в этом случае однобайтовый операнд в пределах от 000 до FF. Команда JMP, превосходящая эти пределы получает тип FAR, для которого генерируется другой машинный код и двухбайтовый операнд. Ассемблер в 1-ом просмотре исходной программы определяет длину каждой команды. Но команда JMP может быть длиной 2 или 3 байта. Если к моменту просмотра команды JMP ассемблер уже вычислил значение операнда (при переходе назад), то он генерирует двухбайтную команду. Если ассемблер еще не вычислил значение операнда (при переходе вперед), то он не знает тип перехода NEAR или FAR и автоматически генерирует трехбайтную команду. Для того, чтобы указать ассемблеру на необходимость генерации двухбайтной команды, следует использовать оператор SHORT.

 

DOS-прерывание INT 21h:

(слайд №20)

 

       Основная операция DOS, вызывающая определенную функцию в соответствие с кодом в регистре AH.

Например:

4Сh – завершение подпроцесса с возвратом управления;

02h – вывод символа на экран.

 


Страница 9 «5 Пример программы»

                   «5. 4. Продолжение разбора примеры программы»

Макросы:

(слайд №21)

 

Макрокоманда представляет собой строку, содержащую некоторое символическое имя — имя макрокоманды, предназначенную для того, чтобы быть замещенной одной или несколькими другими строками. Имя макрокоманды может сопровождаться параметрами .

 

имя_макрокоманды macro список_формальных_аргументов тело макроопределения

endm

 

Для того чтобы использовать описанное макроопределение в нужном месте программы, оно должно быть активизировано с помощью макрокоманды указанием следующей синтаксической конструкции:

 

имя_макрокоманды    список_фактических_аргументов

Процедуры:

(слайд №22)

 

Синтаксис:

 

Имя_процедуры PROC FAR

Тело процедуры

RET

Имя процедуры ENDP

 

Особенности:

  1. если указать вместо FAR NEAR, то это будет говорить, что процедура находится в текущем кодовом сегменте (выставляется по умолчанию);
  2. каждая процедура имеет уникальное имя и содержит собственную директиву ENDP для указания конца процедуры;
  3. для передачи управления процедуре в тексте программы используется команда CALL;
  4. команда RET всегда выполняет возврат в вызывающую программу.

 

Команды PUSH и POP:

(слайд №23)

 

Команда PUSH записывает в стек двухбайтовые адреса или другие значения. Команда POP – выбирает из него нужное значение – слова. Эти операции изменяют относительный адрес в регистре SP (указателе стека) для доступа к следующему слову.

 

PUSH операнд

 

POP операнд

 

Команда INC:

       Увеличивает значение операнда в памяти или регистре на 1.

INC операнд


Страница 10 «5 Пример программы»

                   «5. 5. Продолжение разбора программы»

Метки:

(слайд №24)

 

Метка в языке ассемблера может содержать следующие символы:

Буквы: от A до Z и от a до z Цифры: от 0 до 9 Спецсимволы: · знак вопроса (? )· точка (. ) (только первый символ)· знак " коммерческое эт" (@)· подчеркивание (_)· доллар ($)

 

Первым символом в метке должна быть буква или спецсимвол. Цифра не может быть первым символом метки, а символы $ и? иногда имеют специальные значения и обычно не рекомендуются к использованию. Большие и маленькие буквы по умолчанию не различаются, но различие можно включить, задав ту или иную опцию в командной строке ассемблера. Максимальная длина метки - 31 символ. Примеры меток: COUNT, PAGE25, $E10. Рекомендуется использовать описательные и смысловые метки. Имена регистров, например, AX, DI или AL являются зарезервированными и используются только для указания соответствующих регистров.

 

Два варианта использования меток:

(слайд №25)

 

Если метка располагается перед командой процессора, сразу после нее всегда ставится символ «: » (двоеточие), который указывает ассемблеру, что надо создать переменную с этим именем, содержащую адрес текущей команды:

 

some_loop:           lodsw; cчитать слово из строки,           cmp   ax, 7  ; если это 7 - выйти из циклаloopne some_loop

 

Когда метка стоит перед директивой ассемблера, она обычно оказывается одним из операндов этой директивы и двоеточие не ставится:

codesg segment          lodsw; cчитать слово из строки,           cmp   ax, 7  ; если это 7 - выйти из циклаcodesg ends

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...