La instrucción CALL puede ser de dos tipos:
1. LLAMADA incondicional en la que menciona la dirección de 16 bits, donde desea transferir el control del programa.
2.CALL Condicional en el que menciona la condición seguida por la dirección de 16 bits.
1.CALL 2000H (llamada incondicional):
Como el código del programa se almacena en la memoria, se recupera de la memoria.
PASO 1: MC 1 (búsqueda de código de operación): ciclos de máquina de búsqueda de código de operación-4 (busca la llamada de código de operación de la dirección de memoria especificada por el contador de programas en el registro de instrucciones y luego la decodifica).
- ¿Cuál es el mejor libro para aprender los conceptos básicos de los sistemas de control?
- Arduino: ¿Cómo hacer un cubo de matriz LED impulsado por frecuencia de sonido?
- ¿Cuál es una forma intuitiva de explicar las bandas laterales de frecuencia en la modulación de amplitud?
- ¿Cómo es estudiar ECE en NITW?
- Cifrado: ¿Por qué debería importarnos la criptografía cuántica?
PASO 2: MC 2,3: Lectura de memoria: Obtiene los operandos de la memoria a registros temporales (W, Z). Ahora, dado que 8085 es un procesador de 8 bits, puede leer 8 bits a la vez, lo que significa que primero leerá 00 y luego 20 de la memoria.
NOTA : cuando almacena datos de 16 bits en la memoria, se divide en dos bytes (2 * 8), el byte superior (20 en este caso) y el byte inferior (00 en este caso) que se almacenan en ubicaciones de memoria consecutivas. El HB se almacena en una ubicación de memoria superior y el byte inferior en la ubicación de memoria inferior. por ejemplo, si 2000H se va a almacenar en la ubicación de memoria señalada por [4000] H, entonces 00 se almacenará en [4000] H y 20 en [4001] H.
Entonces, mientras lee de la memoria, primero se lee el byte inferior y luego el byte superior.
PASO 3: MC 4, 5 (MW + MW): la dirección de la siguiente instrucción se guarda desde la PC para apilar la memoria. Esto se hace porque nos gustaría continuar con el flujo inicial de ejecución una vez que la declaración de llamada haya finalizado.
Entonces, dado que la dirección se debe enviar, es decir, datos de 16 bits, primero el byte inferior se empujará a la pila y luego el puntero de pila (SP) se disminuirá en 1 (esta operación de disminución requiere 2 estados T adicionales porque estamos tratando de aumentar los datos de 16 bits) y luego el byte más alto será empujado a la pila.
( NOTA: mientras sale de la pila, el byte más alto sale primero seguido por el byte más bajo, que en comparación con la lectura de memoria es el orden opuesto).
Por lo tanto, empujar la pila dos veces requerirá dos ciclos de máquina de escritura de memoria.
PASO 4 : Ahora, el contenido de los registros temporales (W, Z) (PASO 2) (el paso se transfiere al bus de direcciones y el control va a la dirección especificada. Dado que es un registro para la transferencia del bus dentro del procesador, no lo hace). tomar cualquier ciclo de máquina para ejecutar.
MC total = OF + MR + MR + 2 ciclos de reloj necesarios para disminuir el puntero de pila + MW + MW
Estados T totales = 4 + 3 + 3 + 2 + 3 + 3 = 18
2. LLAMADA Condicional : La llamada condicional salta a la ubicación especificada por la dirección solo si la condición es verdadera. El procesador llega a saber si la condición es verdadera o no cuando está en el segundo MC.
Por lo tanto, si la condición es verdadera = 18 estados T (igual que CALL incondicional), si no es falso = 7 estados T (OP + MR).
* La diferencia entre las instrucciones JMP y CALL radica en el hecho de que JMP no almacena el contenido del contador del programa (PC) en la pila.
* MC = Ciclo de máquina