.text .globl main main: la $a1, source # Initialisiere Argumentregister la $a0, sink jal strcpy # Aufruf der Kopierprozedur li $v0, 4 # Ausgabe des kopierten Strings la $a0, sink syscall li $v0, 10 # Terminiere Programm syscall strcpy: addi $sp, $sp, -4 # Schaffe Platz für ein Stackelement sw $s0, 0($sp) # Sichere Register $s0 add $s0, $zero, $zero # $s0 <- 0 L1: add $t1, $s0, $a1 # $t1 <- Adresse von source[i] lb $t2, 0($t1) # $t2 <- source[i] add $t3, $s0, $a0 # $t3 <- Adresse von sink[i] sb $t2, 0($t3) # $t2 -> sink[i] beq $t2, $zero, L2 # Falls Nullzeichen, nach L2 addi $s0, $s0, 1 # $s0 <- $s0 + 1 (i <- i+1) j L1 L2: lw $s0, 0($sp) # Restauriere Register $s0 addi $sp, $sp, 4 # Lösche Wort vom Stack jr $ra # Rücksprung .data source: .asciiz "This is an example string." sink: .space 30