×

Search anything:

# Matrix Multiplication in Assembly

#### instruction set

Open-Source Internship opportunity by OpenGenus for programmers. Apply now.

In this article at OpenGenus, we have explained how to implement Matrix Multiplication in Assembly. We have provided the complete assembly code to multiply 2 3x3 matrices as well.

1. Explanation: Matrix Multiplication in Assembly
2. Code for Matrix Multiplication in Assembly

## Explanation: Matrix Multiplication in Assembly

The main components of Matrix Multiplication in Assembly are:

• m, n and p are constants set to 3 representing the size of the input matrices (3x3 and 3x3)
• The multiplication is performed by MUL op which multiplies AL register with an operand and stores the result in AX register.
• The ADD op is used to add the results of the dot product of a row and column and save it in the output matrix.
• INT op is used to write the output matrix to the standard output and exit the program.

## Code: Matrix Multiplication in Assembly

Following is the complete assembly code to perform Matrix Multiplication (with descriptive comment for each line of code):

``````; Declare variables and constants
section .data
; Input matrices
matrix1: times 3 db 1, 2, 3, 4, 5, 6, 7, 8, 9
matrix2: times 3 db 1, 0, 0, 0, 1, 0, 0, 0, 1

; Output matrix
result: times 9 db 0

; Constants
m equ 3      ; Number of rows in matrices
n equ 3      ; Number of columns in matrices
p equ 3      ; Number of columns in matrix2

section .text
global _start

_start:

; Initialize loop counters
mov ecx, m      ; Outer loop counter
mov edx, n      ; Middle loop counter
xor ebp, ebp    ; Inner loop counter

; Perform matrix multiplication
outer_loop:
; Initialize sum to zero
xor eax, eax

middle_loop:
mov al, [esi + ebp]     ; Load element from matrix1 into al
mov dl, [edi + ebp * p] ; Load element from matrix2 into dl

; Multiply and accumulate sum
mul dl                  ; Multiply al and dl
add [ebx + ebp], al     ; Add result to corresponding element in result matrix

; Increment inner loop counter
inc ebp

; Check if inner loop counter has reached its limit
cmp ebp, edx

; Increment outer loop counters
add esi, n              ; Move to next row in matrix1
add ebx, p              ; Move to next row in result matrix

; Check if outer loop counter has reached its limit
dec ecx

; Print result matrix
mov eax, 4              ; System call for write
mov ebx, 1              ; File descriptor for standard output
mov ecx, result         ; Address of result matrix
mov edx, m * p          ; Number of bytes to write
int 0x80                ; Call kernel to write to standard output

; Exit program
mov eax, 1              ; System call for exit
xor ebx, ebx            ; Exit status
int 0x80                ; Call kernel to exit program
``````

With this article at OpenGenus, you must have the complete idea of how to do Matrix Multiplication in Assembly.

#### Devansh Biswal

Writer at OG, 3rd year B. Tech student at Veer Surendra Sai University of Technology, Burla. Working hard day and night to get placed at Google.

Improved & Reviewed by:

Matrix Multiplication in Assembly