diff --git a/prog1.txt b/prog1.txt new file mode 100644 index 0000000000000000000000000000000000000000..599d8eeb144c496202cbe517a9d6b0f3e5f27e2d --- /dev/null +++ b/prog1.txt @@ -0,0 +1,23 @@ +.CODE +0x00400000 0x34300000 ori $16, $1, 0 [dados] +0x00400004 0x34300000 ori $16, $1, 0 [dados] +0x00400008 0x36730125 ori $19,$19,293 12 ori $s3, $s3, 0x125 # carrega 125 em $s3 ($19) +0x0040000c 0x8e120000 lw $18,0($16) 13 lw $s2, 0($s0) # carrega 00aa0101h em $s1($17) +0x00400010 0xae120014 sw $18,14($16) 14 sw $s2, 20($s0) # escreve 00aabb01h nas posições de memória 10010014h-10010017h +0x00400014 0xae120018 sw $18,18($16) 15 sw $s2, 24($s0) # escreve 00aaba01h nas posições de memória 10010018h-1001001bh +0x00400018 0x8e190004 lw $25,4($16) 16 lw $t9, 4($s0) # carrega 0000bb00h em $t9($25) +0x0040001c 0xae19001c sw $25,28($16) 17 sw $t9, 28($s0) # escreve 0000bb00h ($t4=$12) nas posições de memória 1001001ch-1001001bh +0x00400020 0x220c0018 addi $12,$16,18 18 addi $t4, $s0, 24 # carrega endereço do 2o sw 6 em $12 +0x00400024 0x220d001c addi $13,$16,22 19 addi $t5, $s0, 28 # carrega endereço do 3o sw 6 em $13 +0x00400028 0x24080009 addiu $8,$0,9 20 li $t0, 9 # carrega 9 em $8 +0x0040002c 0x24090006 addiu $9,$0,6 21 loop: li $t1, 6 # carrega 6 em $9 +0x00400030 0x240a000a addiu $10,$0,10 22 li $t2, 10 # carrega 10 em $10 +0x00400034 0xBD0A0000 lri $10,$8 23 lri $t2, $t0 # coloca o conteudo do do registrador apontado no ultimos 5bits de t0 ou seja t2<=6 +0x00400038 0x11ac0004 beqm $13,$12,3 24 beqm $t5, $t4,end # vai para o final se o se ($t5)==($t4), na primeira vez não eh na segunda eh +0x0040003c 0x220b0014 addi $11,$16,14 25 addi $t3, $s0, 20 # carrega endereço do 1o sw +0x00400040 0xae12001c sw $18,22($16) 26 sw $s2, 28($s0) # escreve 00aaba01h nas posições de memória 1001001ch-1001001bh +0x00400044 0x116cfff9 beqm $11,$12,ff8 27 beqm $t3, $t4,oi # vai para oi: se ($s1)==($s3) no caso volta +0x00400048 0x3e000008 jr $31 28 end: jr $ra + +.DATA +0x10010000 0x00aa0101 0x0000bb00 0x00000000 0x00000000 diff --git a/prog2.asm b/prog2.asm new file mode 100644 index 0000000000000000000000000000000000000000..8ce1bb583e822a93236ec5603fcc04491ae6c649 --- /dev/null +++ b/prog2.asm @@ -0,0 +1,37 @@ +# +# Autor: Fernando Gehm Moraes +# Revisão: Ney Calazans 07/05/2008 +# + + .text + .globl main + +main: + + la $s0, dados # inicializa o ponteiro para a área de dados + ori $s3, $s3, 0x125 # carrega 125 em $s3 ($19) + lw $s2, 0($s0) # carrega 00aa0101h em $s1($17) + sw $s2, 20($s0) # escreve 00aabb01h ($t3=$11) nas posições de memória 10010014h-10010017h + sw $s2, 24($s0) # escreve 00aaba01h ($t4=$12) nas posições de memória 10010018h-1001001bh + lw $t9, 4($s0) # carrega 0000bb00h em $t9($25) + sw $t9, 28($s0) # escreve 0000bb00h ($t4=$12) nas posições de memória 1001001ch-1001001bh + addi $t4, $s0, 24 # carrega endereço do 2o sw 6 em $12 + addi $t5, $s0, 28 # carrega endereço do 3o sw 6 em $13 + + li $t0, 9 # carrega 9 em $8 +loop: li $t1, 6 # carrega 6 em $9 + li $t2, 10 # carrega 6 em $9 + lri $t2, $t0 # coloca o conteudo do do registrador apontado no ultimos 5bits de t0 ou seja t2<=6 + beqm $t5, $t4,end # vai para o final se o se ($t5)==($t4), na primeira vez não eh na segunda eh + + addi $t3, $s0, 20 # carrega endereço do 1o sw + sw $s2, 28($s0) # escreve 00aaba01h nas posições de memória 1001001ch-1001001bh + beqm $t3, $t4,loop # vai para oi: se ($s1)==($s3) no caso volta + + + end: jr $ra + + .data +dados: .word 0x00AA0101 0x0000BB00 + +