Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Consider the following segment ofaC4 f code for multiplication of two matrices A

ID: 650050 • Letter: C

Question

Consider the following segment ofaC4 f code for multiplication of two matrices A and B of size (N*N) each Thus, matrix C is the product of matrix A and matrix B. For example, for Write an assembly program for matrix multiplication assuming all the elements arc integers and the matrices are stored in main memory I) Initially, you may hard code the input matrices A and B of size 3x3 each in your program You can choose either storing them in rosy -major or column -major order Observe the cache performance 2) Optimized Matrix multiplication for Slim3 Optimize your code (by storing matrices in a particular order, code -reordering etc ) and cache organization (block size placement policy dci to get the maximum hit -rate for a fir male size of 128 bytes Submit the optimized mult3 .asm file mentioning the optimized cache organization for 14,...3 in your report 3) Verify the cache hit -rate that you observed from the simulator by your hand -calculations.

Explanation / Answer

Assembly Program for Matrix Multiplication:

name "matrix_multiplication"
include "emu8086.inc"
org 100h ; directive make tiny com file.


.model small
.stack 100h
.data

size dw 3
A db ?,?,?,?,?,?,?,?,?   
B db ?,?,?
C db ?,?,?

message_a db 10,13,"type the elements of matrix A:$"
message_b db 10,13,"type the elements of array B:$"
rez db 10,13,"the result is:$"   

.code
start:
mov ax,@data
mov ds,ax

mov bx, 0 ;

read_a:
;compare with sizexsize
mov ax, size
mul size
cmp bx, ax
je reset_counter

;display message
mov dx, offset message_a
mov ah, 09h
int 21h

;read element
mov ah, 01h
int 21h
sub al, 30h
mov A[bx], al

inc bx
jmp read_a

reset_counter:
mov bx, 0
jmp read_b

read_b:
;compare with size
mov ax, size
cmp bx, ax
je calcul

;display message
mov dx, offset message_b
mov ah, 09h
int 21h

;read element
mov ah, 01h
int 21h
sub al, 30h
mov B[bx], al

inc bx
jmp read_b

calcul:
mov bx,0
mov cx,0

for_i:   
mov ax, size
cmp bx, ax
je print

mov al,b.size
mul bx

mov al, A[bx+1]
mov bh, B[bx+1]
mul bh
add C[bx], ah

mov al, b.A[bx+2]
mov bl, b.B[bx+2]
mul al
add C[bx], ah

mov al, b.A[bx+3]
mov bl, b.B[bx+3]
mul al
add C[bx], ah

inc bx
jmp for_i   

print:

mov dx, offset rez
mov ah,09h
int 21h

mov ax,size
mul size
mov cx,ax
mov ax,0
mov bx,0

print_c:

cmp bx,cx
je finish

mov al, C[bx]
CALL PRINT_NUM

inc bx
jmp print_c

DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS

finish:
ret

end start

end

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote