|
Таким образом, макро, вызывающее подпрограмму и переда-
ющее параметры, будет выглядеть так:
- 1-60 -
@FcnCall MACRO Fnctn,StrucAddr ;адрес подпрограммы и
;структуры
push offset StrucAddr
push segment StrucAddr
call Fnctn
Иногда случается, что Вам необходимо ассемблировать команду,
которую ассемблер не поддерживает. Такое необходимо в ранних вер-
сиях MASM, где из-за ошибки не ассемблируется конкретный тип ко-
манды перехода. Подобная проблема может также возникнуть при ра-
боте на новом процессоре, некоторые команды которого MASM еще не
поддерживает. Один из путей решения этой проблемы заключается в
использовании макро, которое ассемблирует данные, как если бы вы-
полнялась команда из Руководства фирмы Intel. Например, следующее
макро имитирует выполнение команды ближнего перехода.
@JmpShort MACRO destin
db 0EBh ;1-ый байт команды перехода
n = destin - * ;вычислить расстояние перехода
IFE (n LE 255) ;в байт поместится?
db n ;расстояние перехода
ELSE
.ERR ;выдать сообщение об ошибке
%OUT Ошибка в макро @JumpShort.
ENDIF ;конец проверки условия
db 90h ;3-ий байт команды
;короткого перехода
ENDM
Такой пример был выбран для простоты. При создании более слож-
ных команд необходимы и более сложные макросы. Чтобы подбодрить
Вас, сообщим, что некоторые программисты создавали полные кросс-
ассемблеры, используя немногим больше, чем описано в данном ме-
тоде.
Заключение
Наше введение в макросы, условное ассемблирование и структуры
MASM завершено. Мы надеемся, что из примеров данной главы Вы по-
чувствовали довольно сложные, но несомненно стоящие возможности
Макро Ассемблера фирмы Майкрософт.
В этой главе по каждой возможности мы представили множество
примеров, начиная с простых и кончая сложными, так что была опре-
делена мера полезности этих возможностей. Используя примеры и вы-
полняя собственные упражнения, Вы можете определить границу между
возможным и невозможным MASM-ассемблера.
Однако Вам не следует забывать причину использования макросов
и условного ассемблирования. Мы утверждаем, что правильное ис-
пользование этих возможностей может помочь Вам в организации
программы, повышая, следовательно, ее читаемость и надежность и
уменьшая время, необходимое на ее отладку.
|