el binario es algo que no es necesario saber al hacer programación moderna de alto nivel. El 6502 puede hacer muchas operaciones (sumar, restar, mover cosas en memoria) para las cuales no necesitará entender cómo funciona el binario. Sin embargo, hay operaciones que nos gustaría hacer, como la multiplicación y la división, que no son cosas que el 6502 puede hacer de forma nativa. Necesitamos crear estas funciones nosotros mismos. Esto requerirá cierta comprensión de las complejidades del cálculo binario., No menos importante porque internamente, el 6502 representará todo en forma de binario. Vimos esto cuando discutimos cómo el procesador intentará «traducir» todo a Patrones binarios. Como mínimo, estar familiarizado con la lectura de números binarios y con términos como bit, byte y nibble será útil para entender en general cómo funciona el 6502. Afortunadamente para nosotros, binario es intuitivo y divertido.

a partir de ahora, la única forma práctica de almacenar datos en electrónica es en una forma de lógica de dos Estados. Algo puede ser » On » o «Off», «True»o » False»., En una computadora un dígito binario singular, la forma más básica de almacenar información se llama bit. Un poco puede ser un 1 o un 0. Los datos en una computadora se almacenan en grupos de bits. En muchos casos, como el 6502, la forma preferida es en un grupo de ocho (algo así como 0001 0101). Esto se llama un byte. También podemos tener una agrupación más pequeña de cuatro bits llamada un mordisco (lol).

para representar adecuadamente los datos numéricos, es necesario examinar algunos casos. En primer lugar, vamos a comenzar con binario sin signo., Los ocho bits ( b ) de un byte se representarán como:

b₇b₆b₅b₄b₃b₂b₁b₀

contamos los bits de derecha a izquierda, indexando desde 0. Cada bit puede ser visto como relacionado con un número binario. El bit más a la derecha representa 2⁰, el siguiente a la izquierda es 21, luego 22, y así sucesivamente. Por lo tanto, será útil recordar los poderes de 2, que son:

2⁷ = 128
2⁶ = 64
2⁵ = 32
2⁴ = 16
2³ = 8
2² = 4
2¹ = 2
2⁰ = 1

para traducir de binario a algo que reconocemos, necesitaremos sumar todos los poderes apropiados de 2., Si un bit se establece en 1 incluiremos la potencia correspondiente en nuestra suma, si no la descartaremos. Esto ya puede parecer complicado, pero mirar un ejemplo con suerte ayudará a aclararlo. Si tomamos el número binario 0010 0011 podemos ver que los únicos bits establecidos son 0, 1 y 5. Podemos, entonces, de «suma» como tales:

 b₅ + b₁ + b₀
= 2⁵ + 2¹ + 2⁰
= 32 + 2 + 1
= 35

también puede intentar ir a otro lado, de decimal a binario. Hacemos esto dividiendo el número por dos múltiples veces y rastreando el resto., El bit restante (que siempre será un 1 o un 0) se asignará a los bits en un byte. Por ejemplo, si divide 35 por 2 obtiene 17 resto 1. Por lo tanto, el bit 0 será un 1. Una vez más, este cálculo es menos extraño de lo que suena cuando lo ves realizado. Vamos a intentar 35 (o 0010 0011) de nuevo:

35 ÷ 2 = 17r1→ 1
17 ÷ 2 = 8r1 → 1
8 ÷ 2 = 4r0 → 0
4 ÷ 2 = 2r0 → 0
2 ÷ 2 = 1r0 → 0
1 ÷ 2 = 0r1 → 1
0 ÷ 2 = 0r0 → 0
0 ÷ 2 = 0r0 → 0

Este método nos da el resultado0010 0011, que es exactamente con lo que empezamos!

suma

ahora que estamos cómodos leyendo y escribiendo números binarios vamos a querer intentar hacer algunas matemáticas con ellos., La adición funciona «normalmente». Cuando añades dos números normales (intentemos 9 y 2) «llevas» todo lo que va por encima de diez al siguiente dígito. Por lo tanto, 9 + 2 le dará 11. En binario, se realiza un proceso similar. Los bits simples siguen estas reglas:

0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 =(1)0

El (1) representa un carry. Es lo mismo que nosotros diciendo 9 + 2 = (1)1. Usando lo que hemos aprendido antes podemos ver que 10 en binario es el equivalente de 2 en decimal, exactamente lo que esperaríamos de 1 + 1!,

si intentamos hacer 3 (0011) + 1 (0001) podemos Ver otro ejemplo de cómo funciona llevar en binario:

 0011
+ 0̲0̲0̲1̲
0100

podemos ver aquí algo ha llevado del 1er bit al 2do. ¿Y si añadimos un número mayor? Probemos 128 y 129:

 10000001
+̲1̲0̲0̲0̲0̲0̲0̲0̲
(1)00000001

ahora hemos encontrado nuestro primer problema. Sabemos que la respuesta debe ser 257, sin embargo, mirando lo que está en los primeros 8 bits parece que la respuesta es 1. Solo con el bit de transporte extra se hace evidente la verdadera respuesta., Si vamos a guardar nuestros números binarios en 8 bits necesitaremos una forma de almacenar y rastrear este tipo de carry. El 6502 puede hacer exactamente eso, uF! El 6502 tiene un conjunto de banderas construidas dentro de él, una de las cuales se llama la bandera de acarreo. Esto se puede establecer como 1 o 0. Cada vez que ocurre una suma para números binarios que resultan en que la respuesta sea mayor que 256, El indicador Carry se establece en 1. Esto nos permite realizar un seguimiento de nuestras matemáticas y nos da una manera de extender nuestra aritmética más allá de los números de 8 bits.,

tomemos un minuto para pensar en lo que acabamos de decir porque creo que tiene una implicación profunda. No es el software que hará un seguimiento de la carga en nuestras matemáticas, es el hardware. El carry flag es un registro dentro del 6502, un «lugar real». Si tuviera un microscopio grande podría hacer zoom y ser capaz de decir «¡Oye, ese es el lugar donde se almacena la broca de transporte!”. Esto es lo que creo que es realmente emocionante acerca de aprender 6502 assembly-estás en un espacio donde hay una gran superposición entre el hardware que tienes y el código que eres capaz de escribir., Esto realmente puede dar forma a la forma de pensar acerca de la codificación en este sistema. Cuando escribo Python en mi Mac tengo muy poco sentido de cómo se conecta a él: escribo mi script, sucede algo de magia, luego obtengo algunos números de vuelta. Cuando usted discute el montaje usted no puede evitar la idea que lo que usted está haciendo tiene una conexión fuerte a su máquina, lo encuentro mucho menos abstracto.

por lo tanto, también podemos representar nuestros enteros positivos correctamente y si incluimos un bit de acarreo nuestros números binarios pueden agregar correctamente. Sin embargo, hay dos problemas:

  • solo podemos contar hasta 255 (si solo usamos 8 bits).,
  • solo podemos representar números positivos.

necesitamos ser capaces de resolver este último problema. Para ello introduciremos el binario firmado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *