Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Оператор ASM

Читайте также:
  1. Begin IF умова 2 THEN оператор 1 end
  2. Begin оператори; end.
  3. Арифметические операторы
  4. Арифметические операторы и операторы присваивания
  5. Возврат заявок на участие в электронном аукционе оператором электронной площадки.
  6. Действия оператора поста централизации при отравлении работника.
  7. Действия оператора поста централизации при получении работником ожогов.
  8. Для организации ветвлений в VBA используются операторы: условный оператор IF...THEN и IF...THEN …. Else
  9. Дружественная функция-оператор
  10. Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.

 

Зарезервированное слово ASM открывает доступ к средствам встроенного ассемблера. Этот оператор может располагаться только внутри исполняемой части программы (подпрограммы). Область действия оператора ASM ограничивается ближайшим по тексту зарезервированным словом END. Таким образом, структура любого ассемблерного оператора такова:

Asm

<Одна или несколько команд встроенного ассемблера>

End;

С точки зрения Турбо Паскаля пара asm... end считается операторными скобками, ограничивающими единственный оператор Паскаля, например:

 

if X>10 then

asm

…..

end

else

…..;

for k:=1 to 5 do

asm

.........

end;

 

Тело ассемблерного оператора asm... end может быть пустым или содержать несколько ассемблерных команд. Каждая ассемблерная команда должна располагаться на отдельной строке или отделяться от следующей за ней команды символом «;». Ниже приводятся два разных способа написания одной и той же последовательней ассемблерных команд:

 

Asm

mov ah,0; int $16; mov ChCode, al; mov ScCode, ah

end;

Asm

mov ah,0

int $16

mov ChCode, al

mov ScCode, ah

end;

В конце строки, содержащей единственную ассемблерную команду, или между двумя командами, располагающимися на одной строке, разрешается вставлять комментарий, который должен оформляться по обычным правилам Турбо Паскаля, т.е. ограничиваться символами «{», «}» или «(*», «*)». Таким образом, комментарии разрешены между ассемблерными командами, но не внутри них. Например, такой оператор будет правильным:
asm

{Инициируем регистры}

lea si, X; push ds;

pop es; {ES;= DS}

lea di,Y; mov сx, 100

сld {Перенос - вперед}

rep {Выполняем Y:= X} movsw

{Здесь нет ошибки - комментарий можно вставлять между префиксом и командой)

end;

а такой - неправильным:

Asm

{Готовим регистры}

lea si,X; push ds;

pop {ES:=DS} es; (Ошибка! Комментарий разорвал мнемонику команды и ее операнд}

lea di,Y; mov ex,100 {и направление} сld

{Комментарий является разделителем команд, поэтому перед ним можно не ставить ";"}

rep movsw

еnd;

В пределах ассемблерного оператора допускаются любые команды, но Турбо Пас­каль требует выполнения следующего соглашения:

В начале ассемблерного оператора регистр DS содержит сегмент кода, SS - сегмент стека, ВР - текущий стек, SP указывает на вершину стека. Все эти регистры должны иметь точно такие же значения к моменту завершения работы ассемблерного оператора.

Программист не должен делать каких-либо предположений о содержимом осталь­ных регистров, и эти регистры могут иметь произвольное значение после завершения работы ассемблерного оператора. Исключением является случай ассемблерной функ­ции, которая должна использовать некоторые регистры для возврата своего значения.




Дата добавления: 2014-12-19; просмотров: 30 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав