Dokumente und Mars-Simulator
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
##################################################################################
|
||||
##### 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
|
||||
Reference in New Issue
Block a user