chapter8_ Advanced Procedures
chapter8_ Advanced Procedures
Advanced Procedures
& Multi-Module
Explore MASM advanced procedures, stack frames, recursion, and
Programs
multi-module programming. Learn how Java bytecode compares to
assembly language. Master the techniques for efficient low-level
programming.
by Tabeen Bokhat
2023-ce-13
Introduction to MASM
Procedures
Code Modularity
Procedures break code into manageable sections.
Reusability
Procedures can be called multiple times, reducing duplication.
Maintainability
Easier updates by isolating code functionality in procedures.
Near vs Far
Procedures
Near: same segment calls; Far: different segment jumps.
Stack Frames in
Assembly
Role of Stack
1 Stores return addresses, locals, and
parameters.
Stack Frame
2 Setup
Use EBP/RBP to reference local variables and
parameters.
Register Saving
3 Save registers on stack before changes, restore
after.
PROC and PROTO
Directives
PROC Directive
Defines the start of a procedure and its code block.
PROTO Directive
Declares a procedure prototype for external calls.
Example
MySub PROC PROTO :DWORD,:DWORD defines parameter
types.
Calling
Conventions
Specify STDCALL or CDECL for argument passing.
INVOKE and ADDR
Operators
INVOKE Operator ADDR Operator Call Example Benefits
Simplifies procedure Passes the memory INVOKE MySub, ADDR Improves readability and
calls with automatic address of variables to var1, ADDR var2 for helps with type
argument passing. procedures. passing pointers. checking.
Recursion in
Assembly
Implement Recursive
Calls
Procedure calls itself with updated parameters.
Example:
Factorial
Calculate factorial by multiplying current value by recursive
result.
Stack
Management
Prevent overflow by managing stack depth carefully.
Tail Recursion
Optimize recursive calls to avoid extra stack usage.
Multi-Module
Programs
Code Division INCLUDE EXTERN Linking Process
Directive Declaration
Split program into logical Imports shared header Combine multiple object
modules for simpler files across modules. Expose external files into a single
management. procedures to other executable.
modules.
Advanced Parameter
Passing
Pass by Value
Data copied to stack, safe but slower.
Pass by
Reference
Address passed for faster access, risk of unintended changes.
Structures and
Arrays
Pass pointers to handle complex data.
Register
Parameters
Use CPU registers for faster parameter passing.
Assembly vs. Java
Bytecode
Java Bytecode Assembly Similarities Portability
Language
Stack-based, platform- Low-level instruction sets Java bytecode runs
independent Register-based, enabling fine control anywhere JVM is
intermediate code. hardware-specific over execution. installed; assembly is
machine-level platform-tailored.
instructions.
Conclusion and Next
Steps
Key Takeaways Deeper Future Learning
Master modularity, stack Understanding
Low-level skills enhance Explore performance tuning
frames, and parameter optimization and system and cross-language
techniques. programming. integration.
THANK YOU!
PRESENTED TO:
SIR ASIM REHMAT
PRESENTED BY:
2023-CE-13