Buen día!
Sobre el punto 1, lo que hay que entender es cómo se accede a la memoria cuando decimos que el direccionamiento es de a byte. En ese caso, a cada byte de memoria le corresponde una dirección diferente. De esta forma, podemos imaginarnos la memoria como un arreglo donde cada posición tiene un byte, asi':
RAM (el contenido de la RAM lo estoy inventando, pero lo importante es ver que cada dirección apunta a 1 byte distinto)
_________________
0x0000 | 0101 1111 |
0x0001 | 1111 1000 |
0x0002 | 1100 0111 |
0x0003 | 1010 1101 |
0x0004 | 0000 0100 |
... | ... |
... | ... |
0xFFFF | 0000 0100 |
Entonces, acá incluyo respuesta del punto 2, como cada instrucción ocupa 2 bytes, si ponemos una instrucción a partir de la dirección 0x0000, el byte menos significativo de la instrucción va a quedar en la dirección 0x0000 y el byte más significativo va a quedar en la dirección 0x0001. Entonces la SIGUIENTE instrucción, empezaría recién en la dirección 0x0002 (ocuparía los bytes 0x0002 y 0x0003).
El tema del ´paso´ es exactamente lo mismo. El ejercicio pide sumar los contenidos de la memoria en un cierto rango. Lo más intuitivo quizás sería ir byte por byte y sumar cada byte de memoria, uno a la vez, pero lo que se hace en el video es tomar los bytes de 2 en 2, formar palabras de 2 bytes, y sumar esas palabras (lo cual da un resultado diferente a sumar byte por byte). Usando como ejemplo las primeras 4 direcciones de memoria del dibujo de arriba, una opción sería sumar así:
0101 1111
+ 1111 1000
1100 0111
1010 1101
Eso sería sumar byte por byte, y en ese caso, para acceder a cada byte deberíamos incrementar en 1 la dirección de memoria entre una lectura y otra (o sea, 'paso' sería 1 en este caso). Lo que realiza el ejercicio, sin embargo, es lo siguiente:
+ 1111 1000 0101 1111
1010 1101 1100 0111
Entonces, para obtener cada sumando, hay que leer 2 bytes de memoria, y como a cada byte le corresponde una dirección de memoria diferente, se debe aumentar en 2 la dirección antes de leer el siguiente operando. Por eso se usa 'paso = 2' para aumentar las direcciones de memoria.
La razón por la cual se suma de a 2 bytes es que se trata de una arquitectura de 16 bits, y la instrucción LOAD lee de a 16 bits de memoria, por lo cual es razonable considerar la memoria como en palabras de a 16 bits.
Una cosa más a aclarar es que si bien nos imaginamos la memoria 'como un arreglo', las instrucciones pueden leer varias posiciones del arreglo a la vez. La instrucción LOAD de este ejercicio lee 2 bytes de memoria, o sea que siempre lee el contenido de 2 direcciones diferentes. Eso puede ser un poquito antiintuitivo, porque con una sola instrucción se leen 2 posiciones del 'arreglo' a la vez.
Espero que eso haya aclarado un poco, cualquier cosa si no quedó claro volvé a preguntar por favor :)
Saludos,
Federico