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

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