Let's say I have a int array [5][5], base address 0x100. I want to find what is the memory address for [4][3] and [2][5].
Let's make some assumptions regarding value placement first. Since your language is assembly, there's no limitations on how you would store your arrays. You can store them by rows or by columns, they can be 0-based or 1-based or 17-based. They can even be potentially jagged (arrays of pointers internally). But we'll assume the most natural case - 2D arrays are stored by row, 0-based. That's the C convention, and the easiest to implement in assembly.
That said, the size of your row is 5*sizeof(int) = 20 bytes. So the offset for element [4][3] would be base + sizeof(row)*4 + sizeof(int)*3 = 0x100 + 20*4 + 4*3 = 256 + 80 + 12 = 348.
Similarly, the offset for [2][5] would be 0x100 + 20*2 + 4*5 = 316, except [2][5] is a misnomer - in a zero-based array of size 5 the topmost legal index is 4. [2][5] is the same as [3][0].
EDIT: sizeof(int) is 4 bytes on most modern systems. MIPS has a 64-bit mode, but it's rather exotic; you would've mentioned if you would've targeted that.
sizeof(row): the array has rows of 5 elements, each element is an int. The wording of the question strongly suggests that the array is that of int's.