q01lab - Departamento de Electrónica

Anuncio
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
Compilar los siguientes segmentos en C.
Prob. 0
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,6,8};
int main(void)
{
if (a[1]>b[2]) printf("%d\n",*(b+1) + a[2]);
else printf("%d\n",a[2] << 5);
return(0);
}
Segundo Semestre 2000.
Prob. 1
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,6,8};
int main(void)
{ int i;
for (i=0;i<3;i++) printf("%d\n",*(b+i)<<2);
return(0);
}
Prob. 2
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int main(void)
{
printf("%d\n",(*(b+1)<<2)&16);
printf("%d\n",(b[2]>>1)|1);
return(0);
}
# Solución
.data
a1:
.word 2,3,4
b1:
.word 4,5,8
salto: .asciiz "\n"
.text
.globl main
main:
addi
addi
la
lw
$t7,$zero,1
$t8,$zero,16
$t0,a1
$t1,0($t0)
Prof. Leopoldo Silva Bijit.
10-07-2002
1
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
lw
lw
la
lw
lw
lw
#primero:#
la
lw
sll
and
move
li
syscall
li
la
move
syscall
#segundo:#
srl
or
move
li
syscall
li
syscall
$t2,4($t0)
$t3,8($t0)
$t0,b1
$t4,0($t0)
$t5,4($t0)
$t6,8($t0)
$t0,b1
$t5,4($t0)
$t5,$t5,2
$s2,$t5,$t8
$a0,$s2
$v0,1
$v0,4
$s3,salto
$a0,$s3
$s0,$t6,1
$s1,$s0,$t7
$a0,$s1
$v0,1
$v0,10
Prob. 3
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int t[])
{
return(*t-1);
}
int main(void)
{ int i;int *pi;
pi= a+1;
i= f(pi);
printf("%d\n",i+2);
return(0);
}
#Solución
.data
Prof. Leopoldo Silva Bijit.
10-07-2002
2
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
AA:
BB:
PI:
I:
.word 2,3,4
.word 4,5,8
.word 0x00
.word 0x00
.text
.globl main
seco:
lw
addi
sw
jr
$a2,0($a1)
$a2,$a2,-1
$a2,0($a3)
$ra
main:
la
la
la
add
jal
addi
li
move
syscall
li
syscall
$t0,PI
$a3,I
$t1,AA
$a1,$t1,4
seco
$a2,$a2,2
$v0,1
$a0,$a2
$v0,5
Prob. 4
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int *t)
{
*(t-1)=7;
return(*t-1);
}
int main(void)
{ int i;int *pi=b+2;
i= f(pi);
printf("%d %d \n",b[1],i+2);
return(0);
}
#Solución von unger
.data
a:
.word 2,3,4
bb:
.word 4,5,8
msg: .asciiz "\nPrimera Interrogacion \nEstructuras de Computadores \n11 de Septiembre del
2000\n\n"
copy: .asciiz "\n\nAll copyrights reserved\nJ.von Unger T. SoFwArE InC..\n\nVer 2.0 11/09/2000"
Prof. Leopoldo Silva Bijit.
10-07-2002
3
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
spc:
.asciiz " "
.text
.globl main
main:
li $v0,4
la $a0,msg
syscall
add $t0,$zero,$zero
la $t1,bb
la $t2,8($t1)
jal f
add $t0,$zero,$v0
sw $v0,4($t1)
li $v0,1
la $t3,bb
lw $a1,4($t3)
add $a0,$zero,$a1
syscall
li $v0,4
la $a0,spc
syscall
li $v0,1
addiu $a0,$t0,2
syscall
j fin
f:
lw $s0,-4($t2)
addiu $s0,$zero,7
move $v0,$s0
jr $ra
fin:
li $v0,4
la $a0,copy
syscall
#t0=i
#t2=pi
Prob. 5
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int t[])
{
*(t-1)=7;
return(5);
}
int main(void)
{ int i;
Prof. Leopoldo Silva Bijit.
10-07-2002
4
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
i= f(b+2);
printf("%d %d\n",b[1],i+2);
return(0);
}
#Solución 1. harb
.data
a:
.word 2,3,4
c:
.word 4,5,8
i:
.word 0x0
.text
.globl main
f:
addi $a2,$a2,5
lw $t3,4($a1)
addi $t4,$t4,7
sw $t4,4($a1)
jr $ra
main:
la $a0,a
la $a1,c
la $a2,i
jal f
addi $t3,$t3,2
li $v0,1
move $a0,$t3
syscall
move $a0,$t4
syscall
Prob. 6
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int t,int s)
{
t= t+s;
return(t);
}
int main(void)
{ int i;
Prof. Leopoldo Silva Bijit.
10-07-2002
5
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
i= f(a[0],*b);
printf("%d \n",i+2);
return(0);
}
#Solución
.data
#variables
uno:
.word 2, 3, 4
dos:
.word 4, 5, 8
.text
.globl main
main:
li $t6, 2
la $t0, uno
lw $t1, 0($t0)
la $t2, dos
lw $t3, 0($t2)
jal funcionf
add $t5, $t5, $t6
li $v0, 1
move $a0, $t5
syscall
funcionf:
#a[0]=t
#b=s
#i=i+2
add $t1, $t3, $t1
#t=t+s
move $t5, $t1 #retorna i=t
jr $ra
Prob. 7
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int t,int s)
{
t= t+s;
return(t);
}
int main(void)
{ int i;
i= f(a[0],f(3,b[2]));
printf("%d \n",i+2);
return(0);
}
#luna
a:
.data
.word 2,3,4
Prof. Leopoldo Silva Bijit.
10-07-2002
6
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
b1:
i:
.word 4,5,3
.word 0
.text
.globl main
main:
la $t3,a
lw $a2,0($t3) #toma al elemento a[0]=2
la $t1,b1
lw $a0,8($t1) #toma al elemento b[2]=8
addi $a1,$zero,3 # obtiene la constante 3
jal rotulo
rotulo: addiu $sp,$sp,-4
sw $ra,0($sp)
add $t0,$a0,$a1
jal fun2
li $v0,1
move $a0,$t5
syscall
addiu $sp,$sp,8
fun2: add $t5,$a2,$t0
addi $t5,$t5,2
jr $ra
Prob. 8
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f(int t,int s)
{
t= t+s;
return(t);
}
int main(void)
{ int i;
i= f(a[2],3) << f(3,b[2]);
printf("%d \n",i-2);
return(0);
}
#Solución Cid
.data
v1:
v2:
.word 2,3,4
.word 4,5,8
Prof. Leopoldo Silva Bijit.
10-07-2002
7
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
nueva: .ascii "\n"
.text
.globl main
main:
la
$8,v1
lw $9,8($8) # leer v1
addi $12,$0,3
jal f
add $20,$0,$16
la
$10,v2
lw $9,8($10) # leer v2
jal f
add $21,$0,$16
srav $25,$20,11
# f(a[2],3) << f(3,b[2])
addi $17,$0,2 # i-2
sub $25,$25,$17
add $4,$0,25 # printf
addi $2,$0,1
syscall
j fin
f:
add $16,$12,$9 #f(t,s)
jr $31
fin:
j fin
Prof. Leopoldo Silva Bijit.
10-07-2002
8
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
Prob. 9
#include <stdio.h>
int a[ ]={2,3,4};
int b[ ]={4,5,8};
int f1(int t,int s)
{
t= t+s;
return(t);
}
int f2(int t,int s)
{
t= t-s;
return(t);
}
int main(void)
{ int i;
i= f1(a[2],3) + f2(3,b[2]);
printf("%d \n",i*2);
return(0);
}
#Solución Problema #9 Valenzuela
a:
bb:
.data
.word 2,3,4
.word 4,5,8
.text
.globl main
f1:
la $a0,a
lw $a1,8($a0)
addi $a1,$a1,3
jr $ra
f2:
la $a0,bb
lw $a2,8($a0)
li $a3,3
sub $a2,$a3,$a2
jr $ra
main: jal f1
jal f2
add $t0,$a1,$a2
add $t0,$t0,$t0
li $v0,1
move $a0,$t0
syscall
Prof. Leopoldo Silva Bijit.
10-07-2002
9
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
j
main
Prob. 10
#include <stdio.h>
int f2(int t,int s)
{
t= 2*t-s;
return(t);
}
int f1(int t,int s)
{
t= f2(t+s, t-s);
return(t);
}
int main(void)
{ int i;
i= f1(2,3) + f2(3,5);
printf("%d \n",i*2);
return(0);
}
#Maluenda
.data
arg1: .word 2
arg2: .word 3
arg3: .word 3
arg4: .word 5
.text
.globl main
f2 :
li $t1,2
mult $t1,$a0
mflo $a0
sub $v1,$a0,$a1
jr $ra
# F2 = v1
f1 :
add $t3,$a0,$a1
sub $t4,$a0,$a1
move $a0,$t3
move $a1,$t4
jal f2
move $v0,$v1
j res
Prof. Leopoldo Silva Bijit.
# a0= t+s
# a1=t-s
# F1=v0
10-07-2002
10
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
main :
la $t2,arg1
lw $a0,0($t2)
lw $a1,4($t2)
jal f1
res:
lw $a0,8($t2)
lw $a1,12($t2)
jal f2
add $t8,$v0,$v1
move $v0,$t8
mult $t1,$v0
mflo $v1
li $v0,1
move $a0,$v1
syscall
li $v0,5
syscall
Prof. Leopoldo Silva Bijit.
# a0 primer argumento
# a1 segundo argumento
# Ahora v0 =i
10-07-2002
11
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
Prob. 11
#include <stdio.h>
int f2(int t,int s)
{
t= t-s*2;
return(t);
}
int f1(int t,int s)
{
t= f2(t<<s,t-s);
return(t);
}
int main(void)
{ int i;
i= f2(2,3) + f1(3,5);
printf("%d \n",i*2);
return(0);
}
#Solución
.data
i:
copy:
.word 0
.asciiz "\n\nAll copyrights reserved\nCGaule.Inc and Associates\nVer 2.0 14/8/2000"
.text
.globl f1
.globl f2
.globl main
main:
li $t0,0
# variable i
li $t1,2 # variable t
li $t2,3
# variable s
jal f2
add $t0,$zero,$t1
li $t1,3
# variable t
li $t2,5 # variable s
jal f1
add $t0,$t0,$t1
add $t0,$t0,$t0
# i*2
add $a0,$t0,$zero
li $v0,1
syscall
j fuera
Prof. Leopoldo Silva Bijit.
10-07-2002
12
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO312 Laboratorio de Estructuras de Computadores
f1:
sll $s0,$t1,$t2
sub $s1,$t1,$t2 # t-s
move $t1,$s0
move $t2,$s1
move $t5,$ra
jal f2
move $ra,$t5
jr $ra
f2:
add $t2,$t2,$t2 # s*2
sub $t1,$t1,$t2
jr $ra
fuera:
# t<<s
# t=t-s*2
la $a0,copy
li $v0,4
syscall
Prob. 12
#include <stdio.h>
int f2(int t,int s)
{
t= t-s;
return(t);
}
int f1(int t,int s)
{
t= f2(t,t+s);
return(t);
}
int main(void)
{ int i;
i= f2(2,f1(2,3));
printf("%d \n",i);
return(0);
}
Prof. Leopoldo Silva Bijit.
10-07-2002
13
Descargar