Сибирский Лéнинец II  
Сделано в
Russia

Стек:

Регистры:

a
0
b
0
c
0
d
0
Запустить!
leninec@vm:# $ ls
login.sh register.sh
leninec@vm:# $
pop c sub c 1 mov a 1 je c "return" add c 1 push -1 push c mov c 0 mov a 0 #define solution pop c jl c "return" mov b 1 loop: mov d c div c b je c "{}break" mul c b sub c d je c "{}end" add b 1 mov c d jmp "{}loop" end: mov c b sub c d je c "{}end2" mov c b sub c 1 je c "{}end3" push b mov c d add b 1 jmp "{}loop" end2: add b 1 mov c d jmp "{}loop" end3: add a 1 add a d add b 1 mov c d jmp "{}loop" break: #enddefine loop: solution! jmp "loop" return: push a
Задача

Перед началом выполнения программы, на стеке будут лежать входные данные для твоей программы. Ты должен считать это значение, преобразовать его в соответствии с задачей и вывести результат на стек. Когда будешь готов сдать задание, запусти его с максимальной скоростью для тщательной проверки!

Тебе нужно зарегистрироваться или войти в аккаунт, чтобы получить задание
Гайд

инструкция описание
mov a b назначить значение регистра b регистру a
add a b добавить значение регистра b регистру a
sub a b вычести значение регистра b из регистра a
mul a b умножить значение регистра a на значение регистра b
div a b разделить значение регистра a на значение регистра b
push a вывести значение регистра a на стек
pop a удалить верхнее значение стека и назначить его регистру a
je a "label" если значение регистра a равняется нулю, перевести выполнение на "label"
jl a "label" если значение регистра a меньше нуля, перевести выполнение на "label"
jg a "label" если значение регистра a больше нуля, перевести выполнение на "label"
jmp "label" перевести выполнение на "label"
// Можно объявлять сокращения:
#define somename
    jmp "{}somelabel"
    somelabel:
        push 1
    pop a
#enddefine
// Теперь вызовем его
somename!