мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| asm:bcc_nasm [10/04/2013 22:13] – создано arabusov | asm:bcc_nasm [10/04/2013 22:31] (текущий) – arabusov | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ==== Компиляция и линковка ==== | ||
| Допустим, | Допустим, | ||
| Строка 21: | Строка 22: | ||
| nasm test.s -o test.obj -f as86 | nasm test.s -o test.obj -f as86 | ||
| ld86 main.obj test.obj -o test.exe</ | ld86 main.obj test.obj -o test.exe</ | ||
| + | ====Передача параметров ==== | ||
| + | В этом разделе будет дана теоретическая модель построения связи asm-c | ||
| + | |||
| + | Данный способ передачи параметров используется в языках программирования Си, Си++, Пролог и других. Этот метод противопоставлен методу языка Паскаль, | ||
| + | |||
| + | Итак, если мы определим функцию в Си< | ||
| + | < | ||
| + | push c | ||
| + | push b | ||
| + | push a | ||
| + | call _foo | ||
| + | add sp, | ||
| + | При этом для правильного использования переданных параметров процедура //foo// может выглядеть так: | ||
| + | < | ||
| + | |||
| + | push bp | ||
| + | mov bp,sp | ||
| + | |||
| + | ;a = [bp+4] | ||
| + | ;b = [bp+6] | ||
| + | ;c = [bp+8] | ||
| + | ;d = [bp+0xa] | ||
| + | |||
| + | ;... | ||
| + | |||
| + | pop bp | ||
| + | ret | ||
| + | </ | ||