################################################################################## ##### Beispielcode zur Verwendung von Lade- und Speicherbefehlen lb, lbu, sb ##### ################################################################################## .data src: .word 0xf78c4203 lbu: .asciiz " Nach dem Ladebefehl lbu $s1, 2($s0) steht in Register $s1 nun das mit 0en erweiterte Byte 2 des Eingabewortes: \n" lb: .asciiz "\n Nach dem Ladebefehl lb $s2, 2(s0) steht in Register $s2 nun das vorzeichenerweiterte Byte 2 des Eingabewortes: \n" sb: .asciiz "\n Mit dem Speicherbefehl sb $s3, 3(s0) wird das Byte 3 in $s0 durch das least significant Byte\n aus $s3 ersetzt, die anderen Bytes aus $s3 wurden ignoriert: \n" .text # Laden der Adresse von src in s0 la $s0, src # Laden eines Beispielwerts in s1-s3, damit erkennbar wird, was mit den Werten in den Zielregistern passiert li $s1, 0x6c00216f li $s2, 0x6c00216f li $s3, 0x6c00216f # Laden des Bytes 2, also 0x8c mit dem lbu Befehl in Register $s1 lbu $s1, 2($s0) # In s1 steht nun das mit 0 erweiterte Byte, Ausgabe: la $a0, lbu li $v0, 4 syscall move $a0, $s1 li $v0, 34 syscall # Laden des Bytes 2, also 0x8c mit dem lb Befehl in Register $s2 lb $s2, 2($s0) # In s2 steht nun das vorzeichenerweiterte Byte, Ausgabe: la $a0, lb li $v0, 4 syscall move $a0, $s2 li $v0, 34 syscall # Bedeutet: Nimm das least significant Byte aus $s3 und ersetze damit das Byte 3 in $s0 sb $s3, 3($s0) # In s0 wurde durch den sb Befehl das Byte 3 durch das Byte 0 aus $s3 ersetzt la $a0, sb li $v0, 4 syscall lw $a0, ($s0) li $v0, 34 syscall # exit li, $v0, 10 syscall