Lavr wrote:Mixa64 wrote:Согласен, задача дурная. Стек сущность безадресная, записать в стек по адресу - фраза странная. 
Я не хочу угадывать за топикстартера, что там имелось в виду, но всё, что ты 
пишешь дальше - спорно.
 
Мож быть, мож быть, я скорее про отсутствие смысла за адресами стека в задании.
Приведу пример - обращение к подпрограмме на ассемблере из Паскаля:
Code: Select all
CODE		SEGMENT byte public
ASSUME cs:CODE
PUBLIC AbsFunc
AbsFunc	PROC near	; вызов при помощи ближнего CALL
     push bp
     mov  bp,sp
     mov  ax,[bp+4]	; AX = значение параметра
     cwd
     xor  ax,dx
     sub  ax,dx		; AX содержит результат
     mov  [bp+4],ax
     pop  bp
     ret  2		; ближний возврат
AbsFunc	ENDP
CODE		ENDS
Параметры передаются через область стека и возвращаются через неё же.
Есть соглашение о их передаче и возвращают их не через вершину стека, 
а 
через определённые адреса.
Ну, здесь как бы другой коленкор, адреса определенные, но не те определенные, какие в задании. В задании хаотические, в правиле вызова 
на определенном месте в стеке, для чего BP и введен в архитектуру, так и вспоминается где-то читанная фраза "для поддержки конструкций ЯВУ" или что-то вроде того. В принципе, можно и через смещение от SP адресовать, компилятор способен следить за значением SP, но с сохранением BP на стеке и последующим копированием SP в BP создается связанный список, по нему можно отмотать назад и посмотреть все локальные переменные всех предыдущих вложенных вызовов.
Поэтому тут и видно, что идет манипуляция с областью стека и запись в неё, 
что никак не назвать бесполезным навыком.
Манипуляция не бестолковая, значит полезная 
 
К580ВМ80 процессор конечно же музейный, но очень простой для понимания и обучения ассемблеру.
Более того, на нем можно и так разговаривать: Эф-е-ноль-один-це-два-ноль-ноль-пятьдесят 

 На 86-м уже так не поговоришь 
Но я не защищаю задачу - нам топикстартер ни о смысле не сказал, ни спасибо Хардычу за готовый код...   

А чой-то я тоже возбудился решить эту задачку. Специально не подглядываю, выложу на досуге. Вот интересно, откуда берется азарт решить? И задачка-то бессмысленная, дурацкая и простая... Наверное, потому что исход известен, а смысл - поразмяться и сравнить подход...