[an error occurred while processing this directive] [an error occurred while processing this directive]
Да хоть как...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено BLACKEAGLE 17 апреля 2002 г. 13:19
В ответ на: Объясните, пожалуйста, как на ассемблере в функции передавать фактические параметры отправлено Aleksey449 17 апреля 2002 г. 12:46

Команды замените на соответствующие для Вашего МК:


main:
mov r1,parameter1
mov r2,parameter2
call function ;Функция должна сложить parameter1 c parameter2,
; результат отправить в r3, а r1 не испортить
........



function:
push r1 ;Сохраняем r1
add r1,r2
mov r3,r1
pop r1 ;Восстанавливаем r1
ret

Пример, разумеется, специально смешной (на деле все реализовалось бы двумя строчками безо всяких функций). Еще практикуется передача параметров через стек - С-компиляторы в основном именно так и делают, но это, как правило, занимает больше времени, т.к. операции с регистрами обычно вдвое быстрее, чем со стеком. Если пишете на АСМ, старайтесь не увлекаться этим способом.

Удачи!

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru