В компилятор Turbo Pascal и Delphi встроена программа-ассемблер.
Главной особенностью встроенного ассемблера является то, что ячейки основной памяти описываются не средствами ассемблера, а средствами ТР или Delphi. Переменные языка Паскаль поименованные ячейки основной памяти.
Для ввода и вывода переменных будем использовать процедуры readln , writeln.
Оператор asm
Используется для помещения в программу на языке Паскаль фрагментов на языке ассемблер.
Формат команды
asm
Команды ассемблера
end;
совместимость операндов
Операнды совместимы, если они имеют одинаковую длину.
Рассмотрим случай для целочисленных типов.
Пример программы:
вычислить значение выражения:
z=x+y+5
var x,y,z:longword;// :integer; -для чисел со знаком
begin
readln(x,y);
asm
mov eax, x {переслать в eax x}
add eax, y {прибавить к eax y}
add eax, 5 {прибавить в eax 5}
mov z,eax {сохранить результат в z}
end;
writeln(z);
readln
end.
Во встроенном ассемблере используются комментарии Паскаля, а не чистого ассемблера.
Описание переменных
Ячейки основной памяти ассемблера описываются как переменные Паскаля. При этом имя пе-ременной(ячейки) в ассемблере означает ее символический адрес, а в Паскале- содержимое ячей-ки. Возможно описание как знаковых, так и беззнаковых чисел.
Использование регистров
При программировании на языке ассемблера следует стараться максимально задействовать регистры микропроцессора. Это необходимо делать по двум причинам:
- Команды, использующие регистры выполняются максимально быстро(так как регистры тесно вписаны в архитектуру процессора).
- Нет команд, которые выполняли бы операции над двумя ячейками памяти (например, нет add x, y)-поэтому один из двух операндов (как минимум) должен быть в регистре.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий