Использование функций
Функции позволяют оформлять независимые участки
программы в виде отдельных модулей, что значительно упрощает отладку программы и уменьшает ее размер. Ниже будут рассмотрены команды для работы с функциями, структура функций и способы передачи параметров. Вначале даются общие положения для функций. Команды для работы с процедурами(функциями)
Основные команды для работы с функциями приведены в табл. 11.1, а директивы в табл. 11.2
Таблица 11.1 Команды для работы с функциями
Назначение | Общий вид команды | Выполняемые действия | |||
Вызов функции | call операнд[14] | push EIP
MOV EIP, операнд | |||
Возврат в вызывающую программу | ret [Число] | Esp+=Число
Pop EIP |
Таблица 11.2. Директивы для работы с функциями
Назначение | Общий вид директивы | ||
Заголовок функции | имя proc или proc имя | ||
Директива конца | [Имя] endp или endp [Имя] |
Общий вид функции для режима masm:
имя proc
[; Сохранение используемых регистров]
.................
[; Восстановление используемых регистров]
ret
имя endp
Общий вид функции для режима ideal:
proc имя
[; Сохранение используемых регистров]
.................
[; Восстановление используемых регистров]
ret
endp имя
Функция одномодульной программы должна быть частью сегмента кодов. Может быть задано несколько функций последовательно.При выполнении программ переход к функции необходимо выполнять только по команде call, а не в результате естественного выполнения команд, поэтому функции помещаются или в начало сегмента кода до точки входа, или в конце после команд для выхода из программы.