# ----------------------------------------------------------- # 621.701 PR Rechnerorganisation # ----------------------------------------------------------- # Aufgabenblatt 2, Beispiel 3 # # Autor: Christian Timmerer >> input error <<<" sizeof: .word 4 out_rmo: .asciiz "Row Major Order:" out_cmo: .asciiz "Column Major Order:" nl: .asciiz "\n" .text .globl main main: j read_input start: addi $s0, $zero, 0 # $s0 = 0 slt $s0, $t0, $t2 # if (dimX < posX) $s0 = 1 bne $s0, $zero, print_err slt $s0, $t1, $t3 # if (dimY < posY) $s0 = 1 bne $s0, $zero, print_err calc_rmo: lw $s0, sizeof mul $s1, $t2, $s0 # $s1 = posX * sizeof mul $s2, $t3, $t1 # $s2 = posY * dimX mul $s2, $s2, $s0 # $s2 = $s2 * sizeof add $s1, $s1, $s2 # $s1 = posX * sizeof + posY * dimX * sizeof la $t8, out_rmo addi $a0, $t8, 0 addi $v0, $zero, 4 syscall jal print_erg calc_cmo: mul $s1, $t3, $s0 # $s1 = posY * sizeof mul $s2, $t2, $t1 # $s2 = posX * dimY mul $s2, $s2, $s0 # $s2 = $s2 * sizeof add $s1, $s1, $s2 # $s1 = posY * sizeof + posX * dimY * sizeof la $t8, out_cmo addi $a0, $t8, 0 addi $v0, $zero, 4 syscall jal print_erg end: li $v0, 10 syscall # exit print_erg: addi $a0, $s1, 0 addi $v0, $zero, 1 syscall la $t8, nl addi $a0, $t8, 0 addi $v0, $zero, 4 syscall jr $ra print_err: la $t8, error addi $a0, $t8, 0 addi $v0, $zero, 4 syscall j end read_input: la $t8, greeting addi $a0, $t8, 0 addi $v0, $zero, 4 syscall addi $v0, $zero, 5 # dimX einlesen syscall addi $t0, $v0, 0 # $t0 = dimX la $t8, input2 addi $a0, $t8, 0 addi $v0, $zero, 4 syscall addi $v0, $zero, 5 # dimY einlesen syscall addi $t1, $v0, 0 # $t1 = dimY la $t8, input3 addi $a0, $t8, 0 addi $v0, $zero, 4 syscall addi $v0, $zero, 5 # posX einlesen syscall addi $t2, $v0, 0 # $t2 = posX la $t8, input4 addi $a0, $t8, 0 addi $v0, $zero, 4 syscall addi $v0, $zero, 5 # posY einlesen syscall addi $t3, $v0, 0 # $t3 = posY j start