*andre*
12-10-2010, 15:16
ciao ragazzi,
all'università ci hanno dato un esercizio:
"Scrivi un programma in assembler che data la seguente parola 0x10203040, salvata in una determinata posizione di memoria, la riorganizzi in un'altra posizione di memoria invertendo l'ordine dei suoi byte"
Ora la cosa più semplice che mi viene in mente è questa:
.data
pal: .word 0x10203040
pal1: .space 4
.text
main:
lb $t0, pal+3($0)
sb $t0, pal1($0)
lb $t0, pal+2($0)
sb $t0, pal1+1($0)
lb $t0, pal+1($0)
sb $t0, pal1+2($0)
lb $t0, pal($0)
sb $t0, pal1+3($0)
prende ogni byte della posizione di memoria puntata dall'etichetta pal e la mette nella opposta di pal1, l'esercizio funziona.. ma non c'è un modo un pò più elegante o comunque migliore per farlo?
i comandi che "sappiamo" sono:
lb, sb
lw, sw
add, subb
la
lui, ori, li
consigli??:D
Grazie :)
all'università ci hanno dato un esercizio:
"Scrivi un programma in assembler che data la seguente parola 0x10203040, salvata in una determinata posizione di memoria, la riorganizzi in un'altra posizione di memoria invertendo l'ordine dei suoi byte"
Ora la cosa più semplice che mi viene in mente è questa:
.data
pal: .word 0x10203040
pal1: .space 4
.text
main:
lb $t0, pal+3($0)
sb $t0, pal1($0)
lb $t0, pal+2($0)
sb $t0, pal1+1($0)
lb $t0, pal+1($0)
sb $t0, pal1+2($0)
lb $t0, pal($0)
sb $t0, pal1+3($0)
prende ogni byte della posizione di memoria puntata dall'etichetta pal e la mette nella opposta di pal1, l'esercizio funziona.. ma non c'è un modo un pò più elegante o comunque migliore per farlo?
i comandi che "sappiamo" sono:
lb, sb
lw, sw
add, subb
la
lui, ori, li
consigli??:D
Grazie :)