мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияПоследняя версияСледующая версия справа и слева | ||
asm:second3 [03/03/2011 16:57] – arabusov | asm:second3 [03/03/2011 17:03] – arabusov | ||
---|---|---|---|
Строка 4: | Строка 4: | ||
Данный способ передачи параметров используется в языках программирования Си, Си++, Пролог и других. Этот метод противопоставлен методу языка Паскаль, | Данный способ передачи параметров используется в языках программирования Си, Си++, Пролог и других. Этот метод противопоставлен методу языка Паскаль, | ||
- | Итак, если мы определим функцию в Си< | + | Итак, если мы определим функцию в Си< |
< | < | ||
push c | push c | ||
push b | push b | ||
push a | push a | ||
- | call foo | + | call _foo |
add sp, | add sp, | ||
При этом для правильного использования переданных параметров процедура //foo// может выглядеть так: | При этом для правильного использования переданных параметров процедура //foo// может выглядеть так: | ||
Строка 30: | Строка 30: | ||
- | ==== Пример библиотеки, | + | ==== Пример библиотеки, |
Модуль Assembler | Модуль Assembler | ||
Строка 106: | Строка 106: | ||
< | < | ||
Это значит, | Это значит, | ||
+ | ==== Альтернативный вариант написания процедур на ассемблере ==== | ||
+ | Во многих ассемблерах (в том числе и TASM) встроена поддержка передачи параметров с использованием директивы //ARG// или усложнённой директивы //proc// | ||
+ | |||
+ | Пример: | ||
+ | < | ||
+ | |||
+ | ... | ||
+ | |||
+ | ret | ||
+ | |||
+ | _foo endp</ | ||
+ | В данном методе нельзя использовать регистр BP! |