I doing a programming project on making matrices in MIPS I n
I doing a programming project on making matrices in MIPS. I need to take two numbers from user input, r, and c. print out an (r x c) matrix of capital letters starting from \'A\' and after \'Z\', wrap back from \'A\' in printing out. Here what I have so far: .data my_prompt1: .asciiz \"Enter integer r: \ \" my_prompt2: .asciiz \"Enter integer c: \ \" .text li $v0, 4 la $a0, my_prompt1 syscall li $v0, 5 syscall li $v0, 4 la $a0, my_prompt2 syscall li $v0, 5 syscall This part prints out r and c. I need the program in MIPS assembly language
Solution
.LC0:
 .string \"Enter integer r: \"
 .LC1:
 .string \"%d\"
 .LC2:
 .string \"Enter integer c: \"
 main:
 stp x29, x30, [sp, -208]!
 add x29, sp, 0
 stp x19, x20, [sp,16]
 stp x21, x22, [sp,32]
 stp x23, x24, [sp,48]
 stp x25, x26, [sp,64]
 stp x27, x28, [sp,80]
 mov x0, sp
 mov x28, x0
 adrp x0, .LC0
 add x0, x0, :lo12:.LC0
 bl printf
 adrp x0, .LC1
 add x0, x0, :lo12:.LC1
 add x1, x29, 164
 bl scanf
 adrp x0, .LC2
 add x0, x0, :lo12:.LC2
 bl printf
 adrp x0, .LC1
 add x0, x0, :lo12:.LC1
 add x1, x29, 160
 bl scanf
 ldr w0, [x29,160]
 sxtw x0, w0
 sub x27, x0, #1
 str x27, [x29,184]
 mov x0, x27
 add x0, x0, 1
 mov x19, x0
 mov x20, 0
 lsr x0, x19, 61
 lsl x26, x20, 3
 orr x26, x0, x26
 lsl x25, x19, 3
 mov x0, x27
 add x20, x0, 1
 ldr w0, [x29,164]
 sxtw x0, w0
 sub x19, x0, #1
 str x19, [x29,176]
 mov x0, x27
 add x0, x0, 1
 str x0, [x29,144]
 str xzr, [x29,152]
 mov x0, x19
 add x0, x0, 1
 str x0, [x29,128]
 str xzr, [x29,136]
 ldp x0, x1, [x29,144]
 ldp x2, x3, [x29,128]
 bl __multi3
 lsr x2, x0, 61
 lsl x24, x1, 3
 orr x24, x2, x24
 lsl x23, x0, 3
 mov x0, x27
 add x0, x0, 1
 str x0, [x29,112]
 str xzr, [x29,120]
 mov x0, x19
 add x0, x0, 1
 str x0, [x29,96]
 str xzr, [x29,104]
 ldp x0, x1, [x29,112]
 ldp x2, x3, [x29,96]
 bl __multi3
 lsr x2, x0, 61
 lsl x22, x1, 3
 orr x22, x2, x22
 lsl x21, x0, 3
 mov x0, x27
 add x1, x0, 1
 mov x0, x19
 add x0, x0, 1
 mul x0, x1, x0
 add x0, x0, 15
 lsr x0, x0, 4
 lsl x0, x0, 4
 mov x1, sp
 sub sp, x1, x0
 mov x0, sp
 add x0, x0, 0
 str x0, [x29,168]
 str wzr, [x29,204]
 str wzr, [x29,200]
 b .L2
 .L6:
 str wzr, [x29,196]
 b .L3
 .L4:
 ldr w0, [x29,204]
 add w1, w0, 1
 str w1, [x29,204]
 uxtb w0, w0
 add w0, w0, 97
 uxtb w1, w0
 ldr x3, [x29,168]
 ldrsw x2, [x29,196]
 ldrsw x0, [x29,200]
 mul x0, x0, x20
 add x2, x3, x2
 add x0, x2, x0
 strb w1, [x0]
 ldr w0, [x29,196]
 add w0, w0, 1
 str w0, [x29,196]
 .L3:
 ldr w0, [x29,160]
 ldr w1, [x29,196]
 cmp w1, w0
 blt .L4
 ldr w0, [x29,204]
 cmp w0, 26
 ble .L5
 str wzr, [x29,204]
 .L5:
 ldr w0, [x29,200]
 add w0, w0, 1
 str w0, [x29,200]
 .L2:
 ldr w0, [x29,164]
 ldr w1, [x29,200]
 cmp w1, w0
 blt .L6
 str wzr, [x29,200]
 b .L7
 .L10:
 str wzr, [x29,196]
 b .L8
 .L9:
 ldr x2, [x29,168]
 ldrsw x1, [x29,196]
 ldrsw x0, [x29,200]
 mul x0, x0, x20
 add x1, x2, x1
 add x0, x1, x0
 ldrb w0, [x0]
 bl putchar
 ldr w0, [x29,196]
 add w0, w0, 1
 str w0, [x29,196]
 .L8:
 ldr w0, [x29,160]
 ldr w1, [x29,196]
 cmp w1, w0
 blt .L9
 mov w0, 10
 bl putchar
 ldr w0, [x29,200]
 add w0, w0, 1
 str w0, [x29,200]
 .L7:
 ldr w0, [x29,164]
 ldr w1, [x29,200]
 cmp w1, w0
 blt .L10
 mov sp, x28
 mov w0, 0
 b .L14
 mov sp, x28
 bl _Unwind_Resume
 .L14:
 add sp, x29, 0
 ldp x19, x20, [sp,16]
 ldp x21, x22, [sp,32]
 ldp x23, x24, [sp,48]
 ldp x25, x26, [sp,64]
 ldp x27, x28, [sp,80]
 ldp x29, x30, [sp], 208
 ret




