K1801VM1 es un microprocesador (OMP) de 16 bits de un solo chip .
Está destinado al procesamiento de información digital en sistemas de control de procesos en equipos de control y medición y sistemas de comunicación , así como a la resolución de problemas de ingeniería y económicos como parte de una computadora . El sistema de mando K1801VM1 está muy cerca de la arquitectura PDP-11 y en la mayoría de los casos es compatible con ella, pero no es su copia exacta.
La estructura del microcircuito incluye los siguientes bloques funcionales principales:
Ver Sección: Diagrama Estructural
Conclusión | Designacion | Tipo de salida | Finalidad funcional de las conclusiones |
---|---|---|---|
una | CVX | Entrada | Sincronización |
2 | BOLSA | Entrada salida | Confirmación de captura RAP |
3 | DMGI | Entrada | Entrada de provisión de RAP |
cuatro | DMGO | Salida | Salida de provisión de RAP |
5 | DMR | Entrada | Requisito de RAP |
6 | SP | Entrada | Función no documentada: fuente de frecuencia externa para el temporizador [3] . Conectar con +5V |
7 | SEL1 | Salida | Selección del primer registro de E/S |
ocho | SEL2 | Salida | Recuperación del segundo registro de E/S |
9-20, 22-25 | AD0-AD15 | Entrada salida | Bits de dirección de datos |
21 | TIERRA | - | General |
26 | PA1 | Entrada | Número de procesador |
27 | PA0 | Entrada | Número de procesador |
28 | BSY | Salida | Señal de canal ocupado |
29 | DCLO | Entrada | Fallo en la fuente de alimentación |
treinta | ACLO | Entrada | falla de alimentación de CA |
31 | IRQ1 | Entrada | Primera Solicitud de Interrupción Radial "Remota" |
32 | IRQ2 | Entrada | Segunda solicitud de interrupción radial (vector 100) |
33 | IRQ3 | Entrada | Tercera Solicitud de Interrupción Radial (Vector 270) |
34 | EN ESO | Entrada salida | Establecer el estado inicial |
35 | VIRQ | Entrada | Solicitud de interrupción de vector |
36 | IAKO | Salida | Proporcionar una interrupción |
37 | DOUT | Salida | Salida de datos (grabación de datos) |
38 | ESTRUENDO | Salida | Entrada de datos (lectura de datos) |
39 | RPLY | Entrada salida | Sincronización del dispositivo pasivo (respuesta) |
40 | WTBT | Salida | Salida de bytes (escritura/byte) |
41 | SINCRONIZAR | Salida | Sincronización de dispositivos activos (Compartir) |
42 | UCC | - | Tensión de alimentación |
El código de comando se indica mediante un número octal. Es esta vista la que es conveniente para la percepción visual de los comandos de este procesador.
Designación del equipo | Código de comando | Equipo |
---|---|---|
DETENER | 000000 | Deténgase |
ESPERE | 000001 | Expectativa |
ITR | 000002 | Regreso de interrupción |
BPT | 000003 | Interrupción de comando para depuración |
internet de las cosas | 000004 | Interrupción de comando para E/S |
REINICIAR | 000005 | Restablecer dispositivos externos |
RTT | 000006 | Regreso de interrupción |
JMP | 0001DD | Salto incondicional a una dirección absoluta codificada en el DD. Por ejemplo secuencia
000137 JMP@#7000
007000
le dice al procesador que tome la dirección de la ubicación que sigue a la instrucción de salto y salte a la dirección especificada (en este caso, la dirección octal 7000). |
estrategia en tiempo real | 00020R | Regreso de subrutina |
JSR | 004RDD | llamada de subrutina |
EMT | 104000-104377 | Comando de interrupción para programas del sistema. Por ejemplo, EMT 16 tiene el código 104016. Para todos los comandos de EMT, la interrupción tiene el mismo vector, en cuya dirección debe haber una subrutina que asigne un número (en nuestro ejemplo, es 16) del comando y encuentre el dirección de la subrutina que da servicio al comando EMT específico. |
TRAMPA | 104400-104777 | interrupción de comando. Por ejemplo, TRAP 4 tiene el código 104404. Para todos los comandos TRAP, la interrupción tiene el mismo vector, en cuya dirección debe haber una subrutina que extraiga un número (en nuestro ejemplo, es 4) del comando y encuentre la dirección de la subrutina que da servicio al comando TRAP específico.
No hay una diferencia fundamental entre EMT y TRAP. Es habitual utilizar el comando EMT en los programas del sistema (para una computadora, el BC es un monitor y un sistema de diagnóstico) y el comando TRAP en los programas del usuario. |
NOP | 000240 | (10100000) Sin operación |
CVX | 000241 | (10100001) Borrar bandera C (llevar = llevar) |
CLV | 000242 | (10100010) Borrar bandera V (oVerflow = desbordamiento) |
CLZ | 000244 | (10100100) Borrar indicador Z (cero = cero) |
CLN | 000250 | (10101000) Borrar indicador N (negativo = valor negativo) |
CCC | 000257 | (10101111) Borrar todos los dígitos |
SEGUNDO | 000261 | (10110001) Establecer bandera C (llevar = llevar) |
SEV | 000262 | (10110010) Establecer indicador V (oVerflow = desbordamiento) |
ZEE | 000264 | (10110100) Establecer bandera Z (cero = cero) |
NEE | 000270 | (10111000) Establecer indicador N (negativo = valor negativo) |
SCC | 000277 | (10111111) Establecer todos los dígitos |
101PNZVCDe hecho, los comandos anteriores con 101xxxxx códigos del 240 al 277 son el único comando para cambiar las P banderas en la palabra de estado del procesador, escrito en forma binaria N,Z,V,C para indicar cuál de las banderas debe ser afectada por la operación (1) o ignorada (0) . Entonces, el comando con el código 263 (10110011)establecerá al mismo tiempo las banderas C y V en 1. Por lo tanto, el comando con el mnemónico NOPy el código 240es un caso especial de este comando y contiene una máscara de banderas, según la cual ninguno de ellos deben cambiar. En consecuencia, el comando con el código260 (10110000) | ||
TORUNDA | 0003DD | Intercambio de bytes alto y bajo en la palabra de 16 bits señalada por DD. |
BR | 000400 | Salto incondicional por desplazamiento relativo a la celda que sigue a la instrucción. Por ejemplo, el código 000400 significa saltar a la celda que sigue al comando BR, el código 000401 significa saltar sobre una celda de 16 bits, 000402 significa dos, etc. Estrictamente hablando, este comando y todas las instrucciones de salto por desplazamiento se consideran mejor en binario o hexadecimal. Entonces se verá como 1NNNNNNNN(bin) o 1NN(hex), donde N es el valor de compensación. Es decir, el comando se escribe en el byte alto de la palabra y el desplazamiento está en el byte bajo. Los valores de compensación negativos se escriben en complemento a dos . Esto significa que el desplazamiento -1 se codificará como FF (hexadecimal) y la instrucción será 1FF (hexadecimal) o, de manera equivalente, 777 (oct). Con el código 777, se realizará una transición a una celda de 16 bits, es decir, a la instrucción BR en sí, y se producirá un bucle. Con código 776 - 2 celdas atrás, 775 - tres. etc. |
BNE | 001000 | Saltar por compensación si no es igual. El código de comando es 2NN (hexadecimal); consulte la descripción del comando BR. La transición se activa si el indicador Z del procesador es 0.
Comando de dirección Texto del programa en ensamblador
1000: 020104 CMP R1,R4
1002:001001 BNE MET
1004: 010102 MOV R1,R2
1006: 010103 ENCONTRADO: MOV R1,R3
Aquí, la instrucción de comparación CMP compara el contenido de los registros de propósito general R1 y R4 y establece las banderas del procesador C, V, Z, N de acuerdo con los resultados de la comparación, y la instrucción BNE salta +1 palabra de dieciséis bits hacia adelante si la bandera Z es 0. |
CLR(B) | *050DD | Limpia los bits de la palabra apuntada por DD. El comando 0050DD tiene el mnemotécnico CLR y 1050DD tiene el mnemotécnico CLRB. |
PEINE) | *051DD | Invierte los bits de la palabra a la que apunta DD. |
INC(G) | *052DD | Sumar 1 a la palabra señalada por DD. |
DICIEMBRE(B) | *053DD | Resta 1 de la palabra señalada por DD. |
NEG(B) | *054DD | cambio de signo |
ADC(B) | *055DD | Llevar además |
SBC (B) | *056DD | Llevar resta |
TST(B) | *057DD | Comprobación de la palabra y configuración de los indicadores del procesador C, V, Z, N en función de los resultados de dicha comprobación. |
TR(B) | *060DD | Girar a la derecha |
ROL(B) | *061DD | Girar a la izquierda |
ASR(B) | *062DD | Desplazamiento aritmético a la derecha |
ASL (B) | *063DD | Desplazamiento aritmético a la izquierda |
MARCOS | 0064NN | Recuperación de puntero de pila (CS) |
SXT | 0067DD | Extensión de signo |
MTPS | 1064DD | Escritura de palabra de estado del procesador (SPW) |
MFP | 1067DD | Lectura SSP |
MOV(B) | *1 SSDD | Reenvío |
CMP(B) | *2 SSDD | Comparación |
PUNTO(B) | *3SSDD | Comprobación de vertidos |
BIC (B) | *4SSDD | Limpieza de vertidos |
BIS | *5SSDD | suma booleana |
XOR | 074RDD | XOR |
AGREGAR | 06SSDD | Suma |
SUB | 16 SSDD | Sustracción |
BR | 0004XXX | Ramificación incondicional |
BNE | 0010XXX | Rama si no es igual a 0 |
EQB | 0014XXX | Rama si es igual a 0 |
El operando está especificado por los valores SS (fuente - fuente) y DD (destino - receptor), mientras que el primer dígito establece el modo de direccionamiento y el segundo, el número del registro de propósito general del procesador. Por ejemplo, si SS = 27, entonces 2 es el método de direccionamiento y 7 es el número de registro.
El procesador tiene 8 registros de dieciséis bits: R0, R1, R2…R7. En este caso, R0-R5 se utilizan para almacenar operandos de instrucciones. Los registros R6 y R7 tienen un propósito especial adicional, pero todas las operaciones con ellos ocurren de la misma manera que con cualquier otro registro.
El registro R6 actúa como un puntero de pila (SP, Stack Pointer) y contiene la dirección de la parte superior de la pila. La escritura en la pila generalmente se realiza mediante el método de direccionamiento de decremento automático, y la lectura se realiza mediante el método de incremento automático. Al realizar una serie de operaciones (manejo de interrupciones de hardware y software, así como llamadas y retornos de subrutinas), el procesador cambia el valor de este registro de cierta manera.
El registro R7 es un contador de programa (PC, Program Counter) y contiene la dirección de la próxima instrucción que ejecutará el procesador. Escribir un número en R7 equivale a saltar a la dirección especificada.
Métodos de direccionamiento:
Número | Método | Explicación | Ejemplos |
---|---|---|---|
0 | Registro | El operando es el contenido de un registro. Por ejemplo, la instrucción 10304 (1SSDD) copia el contenido del registro R3 al registro R4 y se escribe como MOV R3, R4. | 10102 MOV R1, R2 |
una | registro indirecto | El registro contiene la dirección del operando. | 005011 CLR (R1)
005011 CLR@R1 |
2 | autoincremento | El registro contiene la dirección del operando. El contenido del registro después de que se usa como dirección se incrementa en 2 (para comandos de palabra) o 1 (para comandos de byte) | 005022 CLR (R2)+ |
3 | Incremento automático indirecto | el registro contiene la dirección de la dirección del operando. El contenido del registro después de que se usa como dirección se incrementa en 2 | 005032 CLR @(R2)+ |
cuatro | Decremento automático | el contenido del registro se decrementa en 2 (para comandos de palabra) o 1 (para comandos de byte) y se usa como la dirección del operando | 005042 CLR-(R2) |
5 | Decremento automático indirecto | el contenido del registro se decrementa en 2 y se usa como la dirección de la dirección del operando. | 005052 CLR@-(R2) |
6 | índice | el contenido del registro se suma al número escrito después del comando, y la suma resultante se usa como la dirección del operando | 005062 CLR 2 (R2) 000002 |
7 | índice indirecto | el contenido del registro se suma al número escrito después del comando y la suma resultante se usa como la dirección de la dirección del operando | 005072 CLR @22(R2) 000022 |
Al direccionar a través del registro RS, estos métodos de direccionamiento se llaman de manera especial:
Método de direccionamiento | El código | Explicación | Ejemplos |
---|---|---|---|
directo | 27 | El operando se almacena en la palabra que sigue a la instrucción. De hecho, este es un método de direccionamiento autoincremental que usa el registro de PC, es decir, PC contiene la dirección del operando, y esta es siempre la dirección de la celda que sigue a la instrucción. Después de eso, el registro se incrementa en 2, lo que en el caso de usar PC equivale a “saltar” a la siguiente dirección, a través de la celda de datos, y el número almacenado en ella no se ejecuta como un comando. | 012703 MOV #21, R3 000021 012700 MOV #IN,R0 xxxxxx ENTRADA: |
absoluto | 37 | la dirección del operando se almacena en la palabra que sigue a la instrucción | CLR @#7000 JMP @#BEN |
pariente | 67 | los contenidos de la PC se suman a la palabra almacenada en la memoria detrás de la instrucción, y la suma resultante se usa como la dirección del operando. | TV JMP CLR 5554 |
relativo indirecto | 77 | el contenido de la PC se agrega a la palabra que sigue al comando, la suma resultante se usa como la dirección de la dirección del operando. | CLR @MET INC @15342 |
Fichas tipo K1801 | |
---|---|
microprocesadores | |
Trabajando con RAM |
|
Trabajando con GMD |
|
? |
|
Trabajar con dispositivos externos |
|
ROM |
|
memoria flash |
|