2013-03-12 4 views
0

J'essaye de charger un octet dans un registre dans MIPS. C'est un cours de débutant, donc les instructions avancées ne sont pas encore autorisées. (Aucune boucle, etc.)(ASM) Problème de chargement d'un octet dans un registre

Cependant, il charge une valeur incorrecte.

Je pense que cette ligne est incorrecte:

lb $10,2($8)   # load byte 133 

Il est en train de charger -123 d'enregistrer 10 $ !?

Dans cette leçon, nous venons tout juste d'apprendre à charger/stocker des octets. Si possible, je fais une erreur avec offset + adresse_base. Bien que, je ne peux pas voir ce que mon erreur est.

Pouvez-vous aider/conseiller? :)

## sum values, compute average, store result in memory ## 
## $7=accumulator $8=base address  $9=temp  $10=temp 
## data segment starts at 0x10000000 

.data 
.byte 12 
.byte 97 
.byte 133 
.byte 82 
.byte 236 

.text 
main: 

lui $8,0x1000  # initialise base address 
lb $7,0($8)   # load byte 12 
lb $9,1($8)   # load byte 97 
ori $10,$0,5  # total amount of integers 
lb $10,2($8)  # load byte 133 
addu $7,$7,$9  # 12+97 
lb $9,3($8)   # load byte 82 
addu $7,$7,$10  # add 133 to subtotal 
lb $8,4($8)   # load byte 236 
addu $7,$7,$9  # add 82 to subtotal 
addu $7,$7,$8  # add 236 to subtotal 
       ##calculate average## 
div $7,$10   # sum/number of items 
mflo $10   # average 
sb $10,10($8)  # store average in 0x10000010 
sll $0,$0,0   # nop for load/store delay 

Répondre

1

Vous devez changer:

lb $10,2($8)  # load byte 133 

à:

lbu $10,2($8)  # load byte 133 

La raison en est que 133 est égal à 0x85 qui est une valeur négative lors de l'utilisation signée représentation à 8 bits. Vous devez donc utiliser l'instruction d'octet de chargement non signée, lbu, afin d'éviter l'extension de signe.

Vraiment, vous devriez utiliser lbu pour chacune de vos 5 charges, puisque toutes vos valeurs ne sont pas signées. Vous verrez le même problème avec la cinquième valeur (236).

+0

merci. J'avais juste compris cela. – BBedit

+1

@ user2071506: vous pouvez marquer cette réponse comme acceptée si c'est la solution au problème. – Michael

Questions connexes