ASM2 - Documentation
  • 📚ASM2 - Documentation
  • Registers
  • Address Registers
  • Instructions
    • DISP
    • END
    • MOV
    • RET
  • Operators
    • ADD
    • SUB
    • MUL
    • DIV
  • Functions
  • Subroutines
  • Jump
    • Conditional Jump
      • Jump Equal (JE)
      • Jump Not Equal (JNE)
      • Jump Greater (JG)
      • Jump Greater or Equal (JGE)
      • Jump Less (JL)
      • Jump Less or Equal (JLE)
    • Unconditional Jump
Powered by GitBook
On this page

Subroutines

Subroutines in ASM2 are similar to functions but are typically used for smaller, reusable tasks within a larger program. They might not return a value themselves but can modify existing variables or registers.

Naming and Usage Convention:

  • CamelCase with Dot Prefix: Subroutine names must use camelCase and start with a ..

  • No Initial Numbers: Cannot start with a number.

  • Not Solely Numeric: Cannot be just a number.

  • No Special Characters: Cannot contain special characters.

Usage: CALL .subroutineName

General Structure:

assemblyCopy code.functionName
    ; Context and description
    ; OPERANDS Setup: DESTINATION, SOURCE

    CALL .subroutineName

    ; More function code

END

.subroutineName
    ; Context and description
    ; OPERANDS Setup: DESTINATION, SOURCE (if needed)

    ; Subroutine body

    RET

Example:

assemblyCopy code.calculateSquare
    ; Calculates square of a number
    ; Input: OPERANDS Setup: DESTINATION, SOURCE

    CALL .multiplyNumbers
    MOV DESTINATION, ReturnValue
    
    RET

.multiplyNumbers
    ; Multiplies two numbers
    ; Input: OPERANDS Setup: DESTINATION, SOURCE

    MUL DESTINATION, SOURCE
    
    RET

.main
    ; Main function code

    CALL .calculateSquare
    
    ; Continue with main code

END

Key Points:

  • Specialized Use: For specific, often-repeated tasks within larger functions.

  • No Direct Return Value: Typically modifies existing variables or registers instead of returning values.

  • Enhanced Program Structure: Contributes to a clearer, more organized program structure.

  • CALL Instruction: Used to invoke the subroutine from a function or main program.

PreviousFunctionsNextJump

Last updated 1 year ago