verci
27-01-2012, 11:24
Domanda!
Ho questo esercizio in assembly:
.data
dati: .byte 67, 73, 65, 79, 0, 32, 67, 65, 73, 79, 0
# C I A O C A I O (codifica ASCII, il 32
#è uno spazio)
.text
li $v0, 4
la $a0, dati
syscall
li $v0, 4
la $a0, dati
addi $a0, $a0, 5
syscall
L'output di questo programma è:
CIAO CAIO
Il punto è, la direttiva .byte dice: "stores the listed value(s) as 8bit byte", ma cosa significa "salva i/il valore/i listato/i come byte di 8 bit ?
Da quello che ho capito, ogni valore scritto viene salvato come 1 byte. Quindi 67 occupa 1 byte, 73 un altro byte e via andare.
Ma se fosse così non ci starebbe tutto il segmento dati nel registro $a0, essendo il registro di 32bit / 4byte. Quindi, come fa a salvare tutto il segmento nel registro?
Ho questo esercizio in assembly:
.data
dati: .byte 67, 73, 65, 79, 0, 32, 67, 65, 73, 79, 0
# C I A O C A I O (codifica ASCII, il 32
#è uno spazio)
.text
li $v0, 4
la $a0, dati
syscall
li $v0, 4
la $a0, dati
addi $a0, $a0, 5
syscall
L'output di questo programma è:
CIAO CAIO
Il punto è, la direttiva .byte dice: "stores the listed value(s) as 8bit byte", ma cosa significa "salva i/il valore/i listato/i come byte di 8 bit ?
Da quello che ho capito, ogni valore scritto viene salvato come 1 byte. Quindi 67 occupa 1 byte, 73 un altro byte e via andare.
Ma se fosse così non ci starebbe tutto il segmento dati nel registro $a0, essendo il registro di 32bit / 4byte. Quindi, come fa a salvare tutto il segmento nel registro?