J'ai essayé avec QtSpim 9.1.16 et 9.1.17, tous "coupez" les 2 premiers caractères d'une chaîne d'entrée, en les réglant sur 0x0
, d'autres caractères ASCII sont correctement enregistrés dans le tampon. C'est mon extrait, même si un autre code que je l'ai trouvé sur Internet apporte au même résultat:QtSpim coupe les 2 caractères initiaux après la lecture de chaîne
.data # ROM area
str_input: .asciiz "Digita la stringa che vuoi controllare (max 10 caratteri): "
.data # RAM area
buffer: .space 11
.text
.globl main
main: li $v0, 4
la $a0, str_input
syscall # syscall to print user message
#------
la $a0, buffer
li $a1, 11
li $v0, 8
syscall
Par exemple, si je tape « 12345 », qui est le vidage de la mémoire:
User data segment [10000000]..[10040000]
[10000000]..[1000ffff] 00000000
[10010000] 69676944 6c206174 74732061 676e6972 D i g i t a l a s t r i n g
[10010010] 68632061 75762065 6320696f 72746e6f a c h e v u o i c o n t r
[10010020] 616c6c6f 28206572 2078616d 63203031 o l l a r e (m a x 1 0 c
[10010030] 74617261 69726574 00203a29 3433000a a r a t t e r i) : . . . 3 4
[10010040] 00000035 00000000 00000000 00000000 5 . . . . . . . . . . . . . . .
[10010050]..[1003ffff] 00000000
Ai-je oublié quelque chose à propos de QtSpim?
Je suis incapable de reproduire votre problème [avec 9.1.17]. J'ai fait une revue de code. J'ai ajouté un syscall 4 pour renvoyer le tampon, puis un syscall 10 pour quitter le programme. À moins que vous ne soyez seul, après votre appel système 11, vous «tombez du bord du monde» (c'est-à-dire quel code est exécuté?). Mais, ici, l'écho des données et le vidage hexadécimal correspondent aux résultats attendus. –
J'ai été célibataire en fait, c'est ce que notre professeur nous a conseillé de faire. Si je laisse le programme fonctionner normalement, il n'y a rien de mal ... oh et que pour l'indice syscall 10, je n'étais pas au courant. Mais pourriez-vous expliquer pourquoi le pas unique provoque un tel comportement étrange? Par exemple, MARS est un bon gars et ne se comporte pas mal. – LivingSilver94