Для начала, давайте разберемся, что же такое стек? Стек - это
совокупность данных, в котором данные "вытаскиваются" те, которые были
последними "засунуты" в стек. (Это так, моё образное представление)
Стек подчиняется принципу LIFO (Last In - First Out). Возьмем пример: есть у нас числа 1, 2, 3, 4, 5. Мы
их по очереди кладем в стек. Получается массив из чисел 1, 2, 3, 4 ,5.
Проблема в том, что эти числа мы можем доставать лишь с конца. Что
последним положили, то первым и возьмем. (LIFO) Т.е. при доставании чисел из стека, мы из будем доставать в порядке 5, 4, 3, 2, 1.
Итак, чтобы положить элемент в стек, мы используем:
SET PUSH, A ; Кладем в стек значение регистра А
Что бы достать элемент проделываем это:
SET A, POP ; Устанавливаем регистру А значение последнего элемента
PUSH и POP можно использовать и в других командах.
Наверное, вы хотели создать свою функцию? Есть такая прекрасная вещь, как JSR. JSR - почти аналогичен SET PC, key, за исключением того, что он кладет текущее значение PC плюс единичка в стек.
Как это работает? - Очень просто!
; Stack test ; Author: x0m9k SET PC, main
: func1 SET [0x8001], 0xf041 ; Выводим букву А. SET PC, POP ; Достаем элемент из стека, т.е. место вызова (JSR) но следующая строка.
: func2 SET [0x8002], 0xf042 ; Выводим букву B. SET PC, POP
: main ; Основная часть программы SET [0x8000], 0xf043 ; Выводим С... JSR func1 ; ...А... JSR func2 ; ...B...
: end SET PC, end
Это я так - напечатал небольшой сборничек текущих мыслей, и, возможно, нам стек очень понадобится в будущем, для ввода.