Tratando de envolver mi cabeza en torno a lo básico de cómo hacer una suma decimal en una ALU. Esto es lo que tengo hasta ahora.
Principalmente estoy mirando la arquitectura de la CPU MOS 6502. Tiene dos modos en los que puedes realizar operaciones sobre valores. El primero es el modo normal. Dale dos números hexadecimales y obtendrás un número hexadecimal. Ejemplo,
0x5 + 0x6 = 0xA
El segundo modo (modo decimal) tomará dos números hexadecimales (entre 0-9) y emitirá el resultado en hexadecimal PERO ajustado para que se vea como decimal. Ejemplo,
0x5 + 0x6 = 0x11
Así que volví a mi programación en Python para escribir una función simple para emular el modo. Básicamente, cada vez que tu número hexadecimal es divisible 0xA (10), sumas 6 al resultado.
def add(a, b):
c = (a+b) + (((a+b)/10) * 6)
return hex(c)
add(0b1111, 0b1111)
'0x30'
Entonces,
¿Cómo se hace esto usando lógica digital?