Микропроцессор Intel 486

4. Особенности работы со встроенным ассемблером
системы Turbo Pascal 7.0

В данной системе так называемый ассемблерный составной оператор (ассемблерный блок) записывается как

ASM команда1; команда2; … командаN END;

или, более привычно –

ASM

команда1
команда2
команда3
- - - - -
командаN
END;

Важно отметить, что при входе в такой блок регистр DS указывает на сегмент данных системы Turbo Pascal, SS – на сегмент стека, BP используется для адресации локальных переменных, SP указывает на вершину стека. Все эти регистры должны иметь те же самые значения при выходе из блока. При необходимости смены значений их следует сохранять в стеке командами PUSH, а затем восстанавливать командами POP, иначе работоспособность Паскаль-системы будет непредсказуемо нарушена. Все остальные регистры программист может использовать произвольно.

Метки при программировании учебных задач рекомендуется использовать только локальные, начинающиеся с символа @, например, @met, @lab, @abc.

Разрешается использовать при необходимости предопределенные имена @Code и @Data, записывая их с префиксом SEG для ссылок на сегменты кода и данных, например,

MOV AX, SEG @Data

Своеобразная особенность встроенного ассемблера заключается в том, что директивы определения данных DB, DW и им подобные не могут иметь имен, поэтому использовать содержащиеся в них данные не так-то просто. Нижеследующий пример показывает вывод на экран символьной строки с использованием системной функции 9 прерывания 21h:

ASM
    JMP @N { обойти определение данных }
@D:
    DB 'СТРОКА',13,10,'$'
@N:
    PUSH DS
    PUSH CS
    POP DS { теперь DS=CS }
    MOV DX, OFFSET @D { в DS:DX – адрес строки }
    MOV AH, 9 { системная функция вывода строки }
    INT 21H { вызываем сервис операционной системы }
    POP DS { восстанавливаем старое значение в регистре DS из стека }
    END;

Предпочтительнее определять области данных как обычные переменные Паскаля с использованием стандартного раздела VAR. Как это делать, было показано в п. 2.5 при демонстрации примеров прямой адресации.


Назад Содержание Вперёд