На этом шаге мы рассмотрим правила оформления отдельных процедур.
Директивы PROC и ENDP используются для определения процедуры. Процедура представляет собой набор инструкций и директив, образующих некоторую подпрограмму в рамках какого-либо сегмента. Общий вид процедуры следующий:
<имя> PROC [<расстояние>] . . . <команды> . . . RET <имя> ENDP
Директивы PROC и ENDP обозначают соответственно начало и конец процедуры и должны быть помечены одним и тем же именем, которое считается именем процедуры.
Hеобязательное расстояние может принимать значения FAR и NEAR. Оно определяет количество байтов, которые используются для вычисления адреса возврата из процедуры. Значение NEAR используется тогда, когда все процедуры расположены в одном файле или сегменте. В противном случае используется параметр FAR. Если этот параметр опущен, предполагается NEAR. Возврат из процедуры осуществляется при выполнении инструкции RET. При ее выполнении из стека извлекается одно (если расстояние равно NEAR) или два (если расстояние равно FAR) слова.
Если было извлечено одно слово, то оно помещается в регистр IP и, таким образом, переход осуществляется в пределах текущего сегмента.
Если было извлечено два слова, то они располагаются в регистрах IP и CS. Таким образом, пара CS:IP может использоваться для передачи управления в другой сегмент.
На следующем шаге мы рассмотрим директиву ASSUME.