pow.asm

URL: https://mirkwood.cs.edinboro.edu/~bennett/class/cmsc3100/spring2026/notes/functions/code/pow.asm
 

%include "CONSTANTS.h"

section .data

     outputFMT: db `dq %d^%d = %ld\n`,0

section .bss

section .text

global main
main:
    ;mov rdi, format1
    ;mov rsi, -1
    ;call CallPrintf 
  
    mov r12, 0

topMainLoop:
    cmp r12, 51 
    je .done

    mov rdi, 2
    mov rsi, r12
    call POW

    mov rdi, outputFMT
    mov rsi, 2
    mov rdx, r12
    mov rcx, rax
    call CallPrintf

    inc r12
    jmp topMainLoop


.done:
    jmp Exit

; rdi holds base
; rsi holds exponent
; assume exponent is positive
POW:
   push rbp
   mov rbp, rsp

   cmp rsi, 0
   je  .baseCase 

   push rdi
   sub rsi, 1
   call POW
   pop rdi
   mul rdi
   jmp .endPow

.baseCase:
   mov rax, 1

.endPow:

   pop rbp
   ret