Diferencia entre revisiones de «TablaVerdad.fma»

De Wiki Asqueados
Saltar a: navegación, buscar
 
()
 
Línea 1: Línea 1:
 +
Programa de prueba de las operaciones lógicas.
 +
 +
Calcula las tablas de verdad de las diferentes operaciones lógicas
 +
 +
== Código ==
 +
 
   <nowiki>
 
   <nowiki>
 
LDI 1,1    ; Almacenamos el 1
 
LDI 1,1    ; Almacenamos el 1
 
LDI 300,C  ; Dirección a partir de la cuál se almacenan las "tablas"
 
LDI 300,C  ; Dirección a partir de la cuál se almacenan las "tablas"
LDI 0011,A  
+
LDI 00FF,A  
  
  
LDI 0101,B
+
LDI 0F0F,B
 
AND A,B
 
AND A,B
 
ST B,C
 
ST B,C
 
ADD 1,C
 
ADD 1,C
  
LDI 0101,B
+
LDI 0F0F,B
 
OR A,B
 
OR A,B
 
ST B,C
 
ST B,C
 
ADD 1,C
 
ADD 1,C
  
LDI 0101,B
+
LDI 0F0F,B
 
XOR A,B
 
XOR A,B
 
ST B,C
 
ST B,C
 
ADD 1,C
 
ADD 1,C
  
LDI 0101,B
+
LDI 0F0F,B
 
NAND A,B
 
NAND A,B
 
ST B,C
 
ST B,C
 
ADD 1,C
 
ADD 1,C
  
LDI 0101,B
+
LDI 0F0F,B
 
NOR A,B
 
NOR A,B
 
ST B,C
 
ST B,C
Línea 37: Línea 43:
 
ST B,C
 
ST B,C
  
 +
</nowiki>
 +
 +
== Algoritmo ==
 +
 +
Consiste en cargar en A 00FF, y para cada operación cargar en B 0F0F, y guardar el resultado de dicha operación en las posiciones de memoria a partir de la 300.
 +
 +
El siguiente seudocódigo nos ilustra qué quedaría en cada posición de memoria (si bien las operaciones no se hacen exactamente así):
 +
 +
  <nowiki>
 +
C=300
 +
A=00FF
 +
B=0F0F
 +
 +
[C]= A AND B
 +
C++
 +
[C]= A OR B
 +
C++
 +
[C]= A XOR B
 +
C++
 +
[C]= A NAND B
 +
C++
 +
[C]= A NOR B
 +
C++
 +
[C]= NOT A
 
</nowiki>
 
</nowiki>

Revisión actual del 12:27 22 dic 2005

Programa de prueba de las operaciones lógicas.

Calcula las tablas de verdad de las diferentes operaciones lógicas

Código

 
LDI 1,1    ; Almacenamos el 1
LDI 300,C  ; Dirección a partir de la cuál se almacenan las "tablas"
LDI 00FF,A 


LDI 0F0F,B
AND A,B
ST B,C
ADD 1,C

LDI 0F0F,B
OR A,B
ST B,C
ADD 1,C

LDI 0F0F,B
XOR A,B
ST B,C
ADD 1,C

LDI 0F0F,B
NAND A,B
ST B,C
ADD 1,C

LDI 0F0F,B
NOR A,B
ST B,C
ADD 1,C

NOT A,B  
ST B,C
ADD 1,C

LDI CACA,B
ST B,C


Algoritmo

Consiste en cargar en A 00FF, y para cada operación cargar en B 0F0F, y guardar el resultado de dicha operación en las posiciones de memoria a partir de la 300.

El siguiente seudocódigo nos ilustra qué quedaría en cada posición de memoria (si bien las operaciones no se hacen exactamente así):

 
C=300
A=00FF
B=0F0F

[C]= A AND B
C++
[C]= A OR B
C++
[C]= A XOR B
C++
[C]= A NAND B
C++
[C]= A NOR B
C++
[C]= NOT A