gec
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Два последних занятия по "Основам программирования" преподаватель Л. утверждал, что аргументы передаются в функции через стек. Для простоты понимания механизма, в многочисленных примерах на языке ассемблера Л. показывал приблизительно следующее: // фрагмент на языке С/С++ ... int Sqr (int x) { return x * x; } ... int a, b; ... a = 1250; b = Sqr (a); ... // фрагмент на языке ассемблера ... Sqr proc near pop ax mov bx, ax mul bx retn endp Sqr ... mov dx, 1250 mov word ptr a, dx push dx call Sqr mov word ptr b, ax ... Не вдаваясь в детали, хочу отметить: приведенные фрагменты программ содержат существенные неточности (а фрагмент на языке ассемблера, к тому же, существенную ошибку: ни один компиллятор не делает ТАК). Разумеется, Л. нельзя обвинить в обмане студентов, так как принцип передачи аргументов соответствует действительности, но во избежание усложнения вышеприведенных примеров и "залезания" в глубинные принципы работы со... (не скажу - с чем!), Л. сознательно пошел на упрощение примеров с двух разных сторон. Итак, раскритикуйте в пух и прах вышеприведенные примеры (разумеется, граммотно) и... получите +50 баллов. Удачи! Вот такое задание дал мне препод по програмированию. Помогите ответить пожалусто. Сам ответить не могу. Решил продублировать и сюда. |