7 votos

Cómo producir una media C en intel 8080?

Este es un problema de ejemplo en mi libro. Suponiendo que el pin 5 del puerto 4 está conectado a un amplificador que las unidades de un altavoz, la solución está dada como

La frecuencia de centro C es $$f=261.63\ \text{Hz}$$ Así, el período de tiempo, $$T=\frac1{f}=3822\ \mu s$$

El programa para producir una onda cuadrada con ese período,

LOOP1:    OUT 4H     ;Send bit to speaker
          MVI C,86H  ;Set count to 134
LOOP2:    DCR C      ;Count down
          JNZ LOOP2  ;Test count
          CMA        ;Reset bit 5
          NOP        ;Fine tune
          NOP        ;Fine tune
          JMP LOOP1  ;Go for next half cycle

El número de T de los estados es dada como(10), MVI(7), DCR(4), JNZ(10 si es true, de lo contrario 7), CMA(4), NOP(4), JMP(10).

Con una frecuencia de reloj de 1 MHz, LOOP2(para la mitad de los ciclos) se ejecuta para 1912 microsegundos, que es lo suficientemente cerca. LOOP1 se debe ejecutar de nuevo el envío de un complemento de lo que estaba anteriormente en el bit 5 del puerto 4. Pero creo que no.

Cuando LOOP2 extremos, el acumulador se ha 00H a la izquierda de C registro. CMA cambios en el acumulador a FFH. NOP y JMP no cambiar el acumulador. Entonces, la LOOP1 repite para el siguiente medio ciclo, sents contenido del acumulador al puerto 4, yo.e, FFH cuyo bit 5 es 1, cada vez. Así que no es una onda cuadrada, es sólo una señal de alto. Entonces, ¿cómo se producen una media de C?

10voto

Stroboskop Puntos 2039

DCR C disminuye el C registro y conjuntos de banderas; no afecta a la capacidad del acumulador (también conocido como Un registro). La única instrucción en esta secuencia que afecta a la acumulador es de la CMA. Así, en cada paso a través de la LOOP1, el acumulador será complementado - bit 5 de alto en un ciclo y el bajo en el siguiente.

Muchas fuentes , incluyendo el 8085 hoja de datos de describir el 8080/8085 ALU opera directamente en el acumulador, pero esto es una simplificación excesiva. Como se describe en este Ken Shirriff artículo, la ALU tiene dos temporales de los registros:

La ALU utiliza dos temporales de los registros que no son directamente visibles para el programador. El Acumulador registro Temporal (LEY) sostiene que el acumulador de valor, mientras que una ALU se realiza la operación. Esto permite que el acumulador se actualiza con el nuevo valor sin causar una condición de carrera. El segundo registro temporal (TMP) tiene el otro argumento para la operación de la ALU. El TMP registrar normalmente contiene un valor de la memoria o de otro registro.

...

La LEY de registro tiene varias funciones importantes. En primer lugar, se mantiene la entrada de la ALU. Esto permite que los resultados de la ALU se vuelva a escribir en el acumulador sin molestar a la entrada, que podría causar inestabilidad. Segundo, la LEY puede contener valores constantes (por ejemplo, para aumentar o disminuir, o decimal ajuste) sin afectar el acumulador. Finalmente, la LEY permite a los ALU operaciones que no utilizan el acumulador.

Para el DCR instrucciones, la LEY tiene una constante, la TMP recibe el contenido actual del operando registro, y un ADD se realiza la operación; DCR C, el acumulador se mantiene intacto:

Las líneas de control permiten que el ACTA de registro para ser cargado con una variedad de constantes. 0/fe_to_act de control de la línea de carga de 0 o 0xfe en el ACTO; el valor es seleccionado por el sel_0_fe línea de control. El valor 0 tiene una variedad de usos. ORing un valor de 0, se permite el valor para pasar a través de la ALU sin cambios. Si el carry es el conjunto, Añadiendo a 0 realiza un incremento. El valor 0xfe (firmado -2) sólo se utiliza para la DCR (decremento por 1) la instrucción. Usted puede pensar que el valor 0xff (firmado -1), sería más apropiado, pero si el carry es el conjunto, Añadiendo 0xfe disminuye en 1. Creo que la motivación es por lo tanto incrementos y decrementos tiene el llevar a conjunto, y por lo tanto puede utilizar la misma lógica para el control de la maleta.

Desde el 8085 tiene 16 bits de incremento/decremento del circuito, usted podría preguntarse por qué el ALUMINIO también se utiliza para el incremento/decremento. La razón principal es que el uso de la ALU permite que la condición de las marcas a ser establecidos por el INR y DCR. En contraste, los 16 bits de incremento y decremento de instrucciones (INX y DCX) el uso de la incrementer/decrementer, y como consecuencia, los indicadores no son actualizados.

Sólo hay un único conjunto de indicadores en el 8080; DCR afecta el Cero, el Signo, la Paridad, y Aux-llevan banderas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X