Che materia stai cercando?

Calcolatori elettronici - codice di Cesare in Assembler MIPS 32bit

Esercitazione di Calcolatori elettronici per l'esame del professor Danese sul cifrario di Cesare è uno dei più antichi algoritmi crittografici di cui si abbia traccia storica. È un cifrario a sostituzione monoalfabetica in cui ogni lettera del testo in chiaro è sostituita nel testo cifrato dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto. Questi... Vedi di più

Esame di Calcolatori elettronici docente Prof. G. Danese

Anteprima

ESTRATTO DOCUMENTO

/Users/simonegilardi/Dropbox/Universita' degli studi di Pavia -…ici/Assembler MIPS 32 bit/Codice di Cesare/Codice_di_Cesare.asm Page 4 of 6

Saved: 24/10/12 07:07:07 PM Printed For: Simone Gilardi

! ! la !$a0, Errore

133 ! ! syscall

134 ! ! j ! Chiedi

135

136 Check_string:! addi! $sp, $sp, -16! # Subroutine per il controllo di caratteri non presenti nell'alfabeto a-z.

137 ! ! sw! $a0, 12($sp)

138 ! ! sw! $t3, 8($sp)

139 ! ! sw! $t0, 4($sp)

140 ! ! sw! $t1, 0($sp)

141 P1:!! lb! $t0, 0($a0)!! ! # Carico il byte in $t0.

142 ! !

143 ! ! beq!$t0, $s2, E1! ! # Se in $t0 e' presente il carattere di linefeed 0xa, salta a E1.

144 ! ! addi! $a0, $a0, 1!! # Aggiorno il puntatore.

145 ! ! beq!$t0, $s5, P1! ! # $t0 == "spazio" 0x20? ->P1

146 ! ! slt!$t1, $t0, $s6! ! # $s6=0x7b

147 ! ! beqz! $t1, Char_not_valid

148 ! ! slt!$t1, $t0, $s7! ! # $s7=0x61

149 ! ! addi! $t1, $t1, -1

150 ! ! beq!$t1, $zero, Trasf_case

151 ! ! j! P1

152 E1:!! lw! $t1, 0($sp)!! ! # Ripristino i valori dei registri.

153 ! ! lw! $t0, 4($sp)

154 ! ! lw! $t3, 8($sp)

155 ! ! lw! $a0, 12($sp)

156 ! ! addi! $sp, $sp, 16! # Aggiorno lo sp.

157 ! ! jr! $ra!! ! ! ! # In $ra è memorizzato l'indirizzo dell'istruzione successiva

158 ! ! ! ! ! ! ! ! # a quella della chiamata alla subroutine.

159 Trasf_case:!slt!$t1, $t0, 0x5b

160 ! ! beqz! $t1, Char_not_valid

161 ! ! slt!$t1, $t0, 0x41

162 ! ! addi! $t1, $t1, -1

163 ! ! beq!$t1, $zero, Char_not_valid

164 ! ! j! P1

165

166 Char_not_valid:!li !$v0, 4

167 ! ! la !$a0, Errore_testo

168 ! ! syscall

169 ! ! la! $t1, Char_invalid

170 ! ! sb! $t0, 0($t1)

171 ! ! li !$v0, 4

172 ! ! la !$a0, Char_invalid

173 ! ! syscall

174 ! ! addi! $v1, $zero, 1! ! ! # codice 1 per segnalare che c'è un carattere non valido.

175 ! ! j! E1

176

/Users/simonegilardi/Dropbox/Universita' degli studi di Pavia -…ici/Assembler MIPS 32 bit/Codice di Cesare/Codice_di_Cesare.asm Page 5 of 6

Saved: 24/10/12 07:07:07 PM Printed For: Simone Gilardi

177 Err_chiave: ! addi ! $sp, $sp, -4! # Salvo v0 nello stack.

178 ! ! sw !$v0, 0($sp)

179 ! ! li !$v0, 4

180 ! ! la !$a0, Chiave_nulla

181 ! ! syscall

182 ! ! lw !$v0, 0($sp)!! ! ! ! # Ripristino il valore di $v0.

183 ! ! addi ! $sp, $sp, 4

184 ! ! j! Key

185

186 Err_key_big :! addi ! $sp, $sp, -4! # Salvo v0 nello stack.

187 ! ! sw !$v0, 0($sp)

188 ! ! li !$v0, 4

189 ! ! la !$a0, Chiave_grande

190 ! ! syscall

191 ! ! lw !$v0, 0($sp)!! ! ! ! # Ripristino il valore di $v0.

192 ! ! addi ! $sp, $sp, 4

193 ! ! j! Key

194

195 Azzera: ! addi ! $sp, $sp, -16! # Creo lo spazio nello stack per salvare il contenuto dei registri.

196 ! ! sw !$t3, 12($sp)! ! ! # Salvo i registri che utilizzo, nello stack.

197 ! ! sw !$t2, 8($sp)

198 ! ! sw !$t0, 4($sp)

199 ! ! sw !$a1, 0($sp)

200 ! ! add ! $a1, $zero, $s4

201 ! ! move ! $t0, $a0! ! ! # In $a0, l'indirizzo della stringa da azzerare.

202 ! ! add ! $t2, $t0, $a1! ! # in $t2, l'ultimo indirizzo della stringa.

203 L1:!! sb !$zero, 0($t0)

204 ! ! addi ! $t0, $t0, 1

205 ! ! slt ! $t3, $t0, $t2

206 ! ! bne ! $t3, $zero, L1

207 ! ! lw !$a1, 0($sp)!! ! ! # Ripristino il valore dei registri, last in first out.

208 ! ! lw !$t0, 4($sp)

209 ! ! lw !$t2, 8($sp)

210 ! ! lw !$t3, 12($sp)

211 ! ! addi ! $sp, $sp, 16! ! # Aggiorno lo sp.

212 ! ! jr !$ra

213

214 Testo_nullo:! addi ! $sp, $sp, -4! # Salvo v0 nello stack.

215 ! ! sw !$v0, 0($sp)

216 ! ! li !$v0, 4

217 ! ! la !$a0, Text_nullo_msg

218 ! ! syscall

219 ! ! lw !$v0, 0($sp)!! ! # Ripristino il valore di $v0.

220


ACQUISTATO

2 volte

PAGINE

6

PESO

58.35 KB

AUTORE

shiva28

PUBBLICATO

+1 anno fa


DESCRIZIONE ESERCITAZIONE

Esercitazione di Calcolatori elettronici per l'esame del professor Danese sul cifrario di Cesare è uno dei più antichi algoritmi crittografici di cui si abbia traccia storica. È un cifrario a sostituzione monoalfabetica in cui ogni lettera del testo in chiaro è sostituita nel testo cifrato dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto. Questi tipi di cifrari sono detti anche cifrari a sostituzione o cifrari a scorrimento a causa del loro modo di operare: la sostituzione avviene lettera per lettera, scorrendo il testo dall'inizio alla fine. La chiave per la cifratura viene chiesta all'inizio del programma.
Programma scritto in Assembler, MIPS 32 bit.
Testato con il simulatore PcSpim.


DETTAGLI
Corso di laurea: Corso di laurea in bioingegnerie (Facoltà di Ingegneria e di Scienze Matematiche, Fisica e Naturali)
SSD:
Università: Pavia - Unipv
A.A.: 2013-2014

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher shiva28 di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Pavia - Unipv o del prof Danese Giovanni.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in bioingegnerie (facoltà di ingegneria e di scienze matematiche, fisica e naturali)

Esercizi, Biostatistica
Esercitazione
Elettronica 1 - Appunti e esercizi
Appunto
Elettronica 1 - Caratterizzazione di un diodo a giunzione pn: Relazione 1
Esercitazione
Elettronica 1 - Caratterizzazione di un Mosfet a canale N ad accumulo: Relazione 2
Esercitazione