Написать функцию возведения в степень - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, решить задачу на

ASM

для шаблона!

Текст задачи:

В этом задании вы должны написать функцию возведения в степень. Функция принимает число в регистре %eax и показатель степени в регистре %edx, и возвращает результат в регистре %eax. Для выполнения этого задания вам потребуются следующие инструкции:
  • push %register и pop %register - если вы будете использовать регистры кроме %eax и %edx, то воспользуйтесь этой парой инструкций чтобы сохранить значение этих регистров в начале функции, а потом восстановить в конце (помните, что восстанавливать нужно в обратном порядке - так работает стек).
  • imul %src, %dst - эта инструкция умножает значения в регистрах %src и %dst и сохраняет результат в регистре %dst
  • test %register, %register - эта инструкция проверяет равно ли нулю значение в регистре %register и устанавливает специальный флаг ZF, если это так
  • jz branch - эта инструкция передает управление метке branch, если инструкция test установила флаг ZF (используйте ее в паре с test).
  • dec %register - эта инструкция уменьшает значение в регистре %register на 1
  • ret - инструкция завершает функцию, т. е. достает со стека адрес возврата и передает туда управление (чтобы достать со стека правильный адрес возврата, стек должен находится в таком же состояние, как и в самом начале функции)

Sample Input:

5 6

Sample Output:

15625

Memory Limit:

256 MB

Time Limit:

5 seconds

Шаблон для сдачи кода в тестирующую систему:

power: # сохраните все используемые регистры # (кроме %eax и %edx) с помощью команды # push %<имя регистра> # в регистре %eax хранится число # а в регистре %edx показатель степени # вставьте сюда код возведения в степень # восстановите значения сохраненных регистров # регистров (кроме %eax и %edx) с помощью # команды pop %<имя регистра> # ПОМНИТЕ, что восстанавливать их нужно в # обратном порядке - так работает стек ret

Решение задачи: «Написать функцию возведения в степень»

textual
Листинг программы
     jz exit      ;выйти из цикла если 0

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы