Diferencia entre revisiones de «TablaVerdad.fma»
De Wiki Asqueados
() |
|||
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 | + | LDI 00FF,A |
− | LDI | + | LDI 0F0F,B |
AND A,B | AND A,B | ||
ST B,C | ST B,C | ||
ADD 1,C | ADD 1,C | ||
− | LDI | + | LDI 0F0F,B |
OR A,B | OR A,B | ||
ST B,C | ST B,C | ||
ADD 1,C | ADD 1,C | ||
− | LDI | + | LDI 0F0F,B |
XOR A,B | XOR A,B | ||
ST B,C | ST B,C | ||
ADD 1,C | ADD 1,C | ||
− | LDI | + | LDI 0F0F,B |
NAND A,B | NAND A,B | ||
ST B,C | ST B,C | ||
ADD 1,C | ADD 1,C | ||
− | LDI | + | 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