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
Задача
Перед началом выполнения программы, на стеке будут лежать входные данные для твоей
программы. Ты должен считать это значение, преобразовать его в соответствии с задачей и вывести
результат на стек. Когда будешь готов сдать задание, запусти его с максимальной скоростью для тщательной
проверки!
Тебе нужно зарегистрироваться или войти в аккаунт, чтобы получить задание
Гайд
инструкция
описание
movab
назначить значение регистра b регистру a
addab
добавить значение регистра b регистру a
subab
вычести значение регистра b из регистра a
mulab
умножить значение регистра a на значение регистра b
divab
разделить значение регистра a на значение регистра b
pusha
вывести значение регистра a на стек
popa
удалить верхнее значение стека и назначить его регистру a
jea"label"
если значение регистра a равняется нулю,
перевести выполнение на "label"
jla"label"
если значение регистра a меньше нуля,
перевести выполнение на "label"
jga"label"
если значение регистра a больше нуля,
перевести выполнение на "label"
jmp"label"
перевести выполнение на "label"
// Можно объявлять сокращения:
#define somename
jmp "{}somelabel"
somelabel:
push 1
pop a
#enddefine
// Теперь вызовем его
somename!