Develope MIPS(In Mars) for multiplying two matrices with a minimal size of 16 x
ID: 638601 • Letter: D
Question
Develope MIPS(In Mars) for multiplying two matrices with a minimal size of 16 x 16 elements. You may choose to provide additional flexibility to handle matrices of arbitrary sizes, but this is not required. You may use a simple layout scheme for the data in each of the matrices and you may use static data for each of the input matrices. In other words, you do not have to dynamically allocate memory for each of the matrices. The minimum matrix size (16x16) is a critical requirement as we will reuse this project for another project. Your program must print out the two input matrices as well as the final, computed matrix on the screen. There are specific syscalls you can use to output text to the screen and your program should leverage those for producing output. Please see the simulator documentation as well as examples on the simulator webpage for how to produce output on the screen.
Explanation / Answer
I have this code for 3x3 matrix multiplication. U can change it for ur answer. name "3x3_matrix" 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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.