| Los candidatos deben ser capaces de: | Notas y orientación |
|---|---|
| Demostrar comprensión del modelo básico Von Neumann para un sistema informático y el concepto de programa almacenado | |
| Demostrar comprensión del propósito y papel de los registros, incluyendo la diferencia entre registros de propósito general y propósito especial | Registros de propósito especial que incluyen: • Contador de Programa (PC) • Registro de Datos de Memoria (MDR) • Registro de Direcciones de Memoria (MAR) • El Acumulador (ACC) • Registro de Índice (IX) • Registro de Instrucción Actual (CIR) • Registro de Estado |
| Demostrar comprensión del propósito y roles de la Unidad Aritmética Lógica (ALU), la Unidad de Control (CU) y el reloj del sistema, Almacenamiento de Acceso Inmediato (IAS) | |
| Demostrar comprensión de cómo se transfieren los datos entre los diversos componentes del sistema informático utilizando el bus de direcciones, el bus de datos y el bus de control | |
| Demostrar comprensión de cómo los factores contribuyen al rendimiento del sistema informático | Incluyendo: • tipo de procesador y número de núcleos • el ancho del bus • la velocidad de reloj • memoria caché |
| Comprender cómo los diferentes puertos proporcionan conexión a dispositivos periféricos | Incluyendo conexiones a: • Bus Serial Universal (USB) • Interfaz Multimedia de Alta Definición (HDMI) • Matriz de Gráficos de Vídeo (VGA) |
| Describir las etapas del ciclo Búsqueda-Ejecución (F-E) | Describir y utilizar la notación de 'transferencia de registro' para describir el ciclo F-E |
| Demostrar comprensión del propósito de las interrupciones | Incluyendo: • posibles causas de interrupciones • aplicaciones de las interrupciones • uso de una Rutina de Servicio de Interrupción (ISR) • cuándo se detectan las interrupciones durante el ciclo búsqueda-ejecución • cómo se manejan las interrupciones |
Fundamentos del procesador
A-Level Ciencias de la Computación · Tema 4
21:23
Arquitectura Von Neumann
Durante la mayor parte de la historia, una máquina hacía un solo trabajo. Un telar tejía tela. Una calculadora sumaba. Para hacerla hacer algo nuevo, la reconstruías. Luego llegó una sorprendentemente simple…
Narración en inglés · subtítulos en inglés y 中文 que puedes cambiar
4.1
Arquitectura de Von Neumann
Syllabus
Fuente: Plan de estudios Cambridge International
La arquitectura Von Neumann· subyace en casi todos los ordenadores de propósito general:
- una memoria única — la Almacén de Acceso Inmediato (IAS) — almacena tanto instrucciones del programa como datos (concepto de programa almacenado).
- un procesador (CPU) obtiene instrucciones de la memoria y las ejecuta una a una.
- las instrucciones se ejecutan en orden a menos que una ramificación cambie el flujo.
La idea del programa almacenado es lo que hace flexible a una computadora: cambia el programa y cambias lo que hace, sin necesidad de reconfigurar cables.
Toca las partes de una computadora de Von Neumann
Explora cada bloque. La CPU (unidad de control, ALU, registros) se comunica con una única memoria principal a través de los buses —y esa memoria compartida para instrucciones Y datos es la idea de Von Neumann.
| English | Español |
|---|---|
| RAM/ræm/ | RAM |
| page/peɪdʒ/ | página |
| cache memory/kæʃ ˈmeməri/ | memoria caché |
| cache/kæʃ/ | Caché |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | almacenamiento secundario |
4.1
Partes principales de la CPU
Todas estas partes están dentro de un solo chip pequeño. El diagrama más adelante en esta sección muestra cómo se conectan; la foto de abajo muestra el dispositivo real.


Unidad Aritmética Lógica (ALU)
La ALU realiza operaciones aritméticas (sumar, restar, …) y lógicas (AND, OR, comparaciones). Toma operandos de los registros y devuelve resultados a un registro.
Unidad de Control (CU)
La unidad de control decodifica cada instrucción y envía las señales de control para ejecutarla: abre rutas de datos, indica a la ALU qué hacer y controla las lecturas y escrituras en memoria.
Reloj del sistema
El reloj envía una secuencia continua de pulsos que mantienen al CPU sincronizado. Cada instrucción requiere un número fijo de ciclos, y la velocidad del reloj (p. ej., 3.8 GHz) es un factor en el rendimiento.
"Explica cómo trabajan juntos la CU y el reloj del sistema": el reloj emite pulsos a una frecuencia fija; la unidad de control usa cada pulso para avanzar el ciclo de búsqueda-ejecución en un paso, enviando sus señales de control a tiempo con los pulsos, de modo que cada parte del procesador cambia de estado al mismo tiempo. Un reloj más rápido significa más pasos por segundo, hasta el punto en que los circuitos no pueden estabilizarse entre pulsos.
Registros
Los registros son pequeños y muy rápidos depósitos dentro del CPU. Los registros de uso especial tienen funciones fijas en el ciclo:

- Contador de Programa (PC) — la dirección de la instrucción siguiente.
- Registro de Dirección de Memoria (MAR) — la dirección que se está leyendo o escribiendo.
- Registro de Datos de Memoria (MDR) — los datos que van hacia o provienen de la memoria.
- Registro de Instrucción Actual (CIR) — la instrucción que se está decodificando.
- Acumulador (ACC) — el valor sobre el que opera la ALU.
- Registro de Estado — almacena banderas (acarreo, cero, negativo, desbordamiento) usadas por las ramas. Cada bandera es un bit, establecido o eliminado por la ALU tras una operación: la bandera de cero tras una comparación igualada, la bandera de acarreo cuando una suma desborda el registro, la bandera negativa cuando un resultado es negativo. Un salto condicional lee las banderas para decidir si ramificar, y una bandera de desbordamiento puede generar una interrupción.
- Registro Índice — un desplazamiento añadido a una dirección en el direccionamiento indexado; incrementarlo permite recorrer un array elemento a elemento.
La pregunta "completa la tabla que describe el papel de cada registro" pide una oración precisa por registro en estos términos: el PC contiene la dirección de la siguiente instrucción que será buscada; el MAR contiene la dirección de la ubicación que se está leyendo o escribiendo; el MDR contiene los datos o instrucción leídos recientemente de, o a punto de ser escritos en, esa ubicación; el CIR contiene la instrucción que se está decodificando y ejecutando actualmente; el ACC contiene el resultado de la última operación aritmética o lógica.
Los registros de propósito general son usados por el programador para valores temporales durante un cálculo. Los movimientos de datos entre registros y memoria se escriben en notación de transferencia de registros, p. ej. MAR ← [PC] ("copiar el contenido del PC al MAR").

| English | Español |
|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | Arquitectura de Von Neumann |
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | Almacenamiento de acceso inmediato |
| stored program/stɔːd ˈprəʊɡræm/ | Programa almacenado |
| processor/ˈprəʊsesə/ | procesador |
| arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ | unidad aritmética y lógica |
| ALU/ˌeɪ el ˈjuː/ | Unidad aritmético-lógica (UAL) |
| operand/ˈɒpərænd/ | Operando |
| bit/bɪt/ | bit |
| buses/ˈbʌsɪz/ | Bus |
| address bus/əˈdres bʌs/ | Bus de direcciones |
| data bus/ˈdeɪtə bʌs/ | Bus de datos |
| word size/wɜːd saɪz/ | Tamaño de palabra |
| number of cores/ˈnʌmbə ɒv kɔːz/ | número de núcleos |
| cores/kɔːz/ | Núcleos |
| amount of RAM/əˈmaʊnt ɒv ræm/ | cantidad de RAM |
4.1
Buses
Tres buses internos (conjuntos de cables paralelos) conectan las partes:
- bus de direcciones — transporta la dirección de memoria. Unidireccional (CPU → memoria).
- bus de datos — transporta los datos. Bidireccional.
- bus de control — transporta señales de control (lectura, escritura, interrupción). Bidireccional.
Un bus de direcciones de $n$ bits puede alcanzar $2^{n}$ ubicaciones de memoria. El ancho del bus de datos determina cuántos bits se mueven por acceso (a menudo el tamaño de palabra).


| English | Español |
|---|---|
| port/pɔːt/ | Puerto |
| peripheral/pəˈrɪfərəl/ | Periférico |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | Notación de transferencia de registro |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | Rutina de servicio de interrupción |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | Registro de interrupción |
| stack/stæk/ | Pila |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | Lenguaje ensamblador |
| machine code/məˈʃiːn kəʊd/ | Código máquina |
| mnemonics/nɪˈmɒnɪks/ | mnemotecnias |
| assembler/əˈsemblə/ | Ensamblador |
| symbol table/ˈsɪmbl ˈteɪbl/ | Tabla de símbolos |
| label/ˈleɪbl/ | etiqueta |
| forward references/ˈfɔːwəd ˈrefrənsɪz/ | referencias hacia adelante |
| opcode/ˈɒpkəʊd/ | Opcode |
4.1
Factores que afectan el rendimiento
- velocidad del reloj — más ciclos por segundo.
- número de núcleos — una CPU multicore ejecuta varios hilos simultáneamente.
- tamaño de palabra — una CPU de 64 bits maneja bloques de 64 bits por ciclo y puede acceder a mucha más memoria que una de 32 bits.
- cantidad de RAM — más RAM almacena más del conjunto activo; si hay poca, obliga al SO a hacer paginación al disco.
- tamaño de memoria caché — más caché reduce el tiempo promedio de acceso a memoria.
- tipo de almacenamiento secundario — un SSD carga programas mucho más rápido que un HDD.
- ancho y velocidad del bus — buses más anchos/rápidos mueven datos más rápidamente.

Asigna las especificaciones a la carga de trabajo: un quad-core supera a un dual-core en tareas paralelas, pero mayor velocidad por núcleo gana en tareas de un solo hilo.
Cada factor es una respuesta de dos puntos con una razón adjunta:
- Más núcleos: cada núcleo puede buscar y ejecutar su propia instrucción al mismo tiempo, así que varios programas, o los hilos de un programa, se ejecutan en paralelo. Pero un programa debe estar escrito para usar más de un núcleo, por lo que duplicar los núcleos no duplica la velocidad.
- Mayor velocidad del reloj: más ciclos de búsqueda-ejecución por segundo, así que más instrucciones por segundo; el límite es el calor producido.
- Bus más ancho: un bus de datos más ancho mueve más bits en cada transferencia, así que se necesitan menos transferencias para los mismos datos; un bus de direcciones más ancho puede acceder a más ubicaciones de memoria.
- Memoria caché: una memoria pequeña y rápida dentro o junto al procesador que guarda las instrucciones y datos usados más recientemente o con mayor frecuencia. Leerlos desde la caché es mucho más rápido que desde la RAM, así que el procesador pasa menos tiempo esperando.
"Explica por qué la nueva computadora tiene mejor rendimiento" se responde comparando las dos especificaciones línea por línea: una mayor velocidad del reloj ejecuta más instrucciones por segundo, más núcleos ejecutan más tareas a la vez, más caché significa menos accesos lentos a RAM, y más RAM significa menos transferencias a disco.
4.1
Puertos
Un puerto es un conector físico para conectar un periférico:
- USB (Universal Serial Bus) — de propósito general (teclados, unidades de almacenamiento, teléfonos).
- HDMI (High Definition Multimedia Interface) — video y audio digitales a una pantalla.
- VGA (Video Graphics Array) — salida de video analógica más antigua a un monitor.
- Ethernet (RJ-45) — red local cableada. Jacks de audio — auriculares/micrófono.
Diferentes puertos utilizan diferentes señales, por lo que un cable HDMI no encajará en un puerto USB. USB-C es inusual al transmitir video, datos y energía simultáneamente.
"Explica cómo la computadora se conecta al monitor a través de HDMI": el puerto HDMI envía el video y el audio como una sola señal digital por un solo cable, por lo que no se necesita conversión a analógico y la imagen no se degrada; el cable transporta resoluciones de alta definición y el propio puerto del monitor decodifica la señal. Un dispositivo USB es plug-and-play: cuando se conecta, la computadora lo detecta, lo identifica, carga o instala el controlador necesario y puede proporcionarle energía, todo sin necesidad de reiniciar.
4.1
Ciclo de búsqueda-ejecución
La CPU repite el ciclo de búsqueda-ejecución, una ejecución por instrucción de máquina.
Búsqueda
- la dirección del PC se copia al MAR.
- el PC se incrementa para apuntar a la siguiente instrucción.
- una señal de lectura viaja por el bus de control.
- la memoria coloca la instrucción en el bus de datos.
- se copia en el MDR, luego en el CIR.
El examen pide estos pasos en notación de transferencia de registros, donde [X] significa el contenido del registro X y [[MAR]] significa el contenido de la ubicación de memoria cuya dirección está en el MAR:
MAR ← [PC] the address of the next instruction goes to the MAR
PC ← [PC] + 1 the PC now points to the following instruction
MDR ← [[MAR]] the instruction at that address is read into the MDR
CIR ← [MDR] the instruction is copied into the CIR for decoding
El orden importa: el PC se incrementa inmediatamente después de que su dirección se ha copiado, para que un salto ejecutado más tarde pueda sobrescribirlo. Durante la ejecución, la misma notación describe cada instrucción; por ejemplo, para LDD 200, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Decodificación
La UC decodifica la instrucción en el CIR: qué operación y cuáles son los operandos o direcciones.
Ejecución
La UC la lleva a cabo: las operaciones aritméticas/lógicas van a la ALU (el resultado va al AC); una carga/almacenamiento mueve datos entre la memoria y un registro; un salto cambia el PC. Luego el ciclo se repite.

El ciclo de búsqueda-ejecución
Toca alrededor del bucle que la CPU repite miles de millones de veces por segundo. Observa cómo la búsqueda utiliza los registros PC/MAR/MDR/CIR, luego decodifica y ejecuta actúa sobre lo que se buscó.
El ciclo de búsqueda-ejecución
Recorre cómo la CPU ejecuta una instrucción: buscala en la memoria, la decodifica y luego la ejecuta, repetidamente.
| English | Español |
|---|---|
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | Ciclo de búsqueda-ejecución |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | Registros de propósito especial |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | Contador de programa |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | Registro de dirección de memoria |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | Registro de datos de memoria |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | Registro de instrucción actual |
| accumulator/əˈkjuːmjʊleɪtə/ | Acumulador |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | Registro de estado |
| flags/flæɡz/ | bandejas |
4.1
Interrupciones
Una interrupción es una señal que pausa el ciclo normal para que la CPU pueda manejar un evento urgente (una pulsación de tecla, la llegada de un paquete, un fallo de hardware, división por cero, el temporizador del SO).

Para manejar una:
- terminar la instrucción actual.
- guardar el estado (PC y registros).
- cargar la dirección de la rutina de servicio de interrupciones (ISR) en el PC y ejecutarla.
- la ISR maneja el evento.
- restaurar el estado guardado y continuar.
Las interrupciones permiten que el sistema responda rápidamente sin que la CPU revise constantemente los dispositivos, y son la forma en que el SO gestiona la multitarea.
"Explique cómo se detecta y gestiona una interrupción de un dispositivo de entrada en el ciclo F-E" es una respuesta de cuatro puntos que incluye: el dispositivo envía una señal de interrupción que establece la bandera de interrupción en el registro de interrupciones; el procesador revisa ese registro al final de cada ciclo de búsqueda-ejecución, después de que la instrucción actual ha terminado su ejecución; si una bandera está establecida y la interrupción tiene mayor prioridad que la tarea actual, el contenido del PC y otros registros se guardan en la pila; la dirección de la rutina de servicio de interrupciones se carga en el PC y se ejecuta la rutina; cuando finaliza, los valores guardados se restauran desde la pila y el programa interrumpido continúa desde donde se detuvo.
Causas dignas de nombrar: una interrupción de hardware de un dispositivo (una tecla presionada, un búfer de impresora vacío, la llegada de un paquete de red), una interrupción de software causada por un fallo (división por cero, una instrucción ilegal, desbordamiento aritmético), una interrupción de temporizador del sistema operativo que marca el final de un intervalo de tiempo, y una advertencia de falla de alimentación.

| English | Español |
|---|---|
| interrupt/ˈɪntərʌpt/ | Interrupción |
4.2
Lenguaje ensamblador y código máquina
Syllabus
| Los candidatos deben ser capaces de: | Notas y orientación |
|---|---|
| Demostrar comprensión de la relación entre el lenguaje ensamblador y el código máquina | |
| Describir las diferentes etapas del proceso de ensamblado para un ensamblador de dos pasadas | Aplicar el proceso del ensamblador de dos pasadas a un programa dado en lenguaje ensamblador simple |
| Rastrear un programa dado en lenguaje ensamblador simple | |
| Demostrar comprensión de que un conjunto de instrucciones se agrupan | Incluyendo los siguientes grupos: • Movimiento de datos • Entrada y salida de datos • Operaciones aritméticas • Instrucciones incondicionales y condicionales • Instrucciones de comparación |
| Demostrar comprensión y poder utilizar diferentes modos de direccionamiento | Incluyendo inmediato, directo, indirecto, indexado, relativo |
Fuente: Plan de estudios Cambridge International
La CPU realmente ejecuta código máquina — patrones de bits, específicos de una arquitectura. El lenguaje ensamblador es una forma legible, con una instrucción por instrucción de máquina, escrita usando mnemotécnicos como LDD, ADD, JMP. Un ensamblador lo traduce a código máquina.

Ensamblador de dos pasadas
Un ensamblador de dos pasadas lee el código fuente dos veces:
- paso 1 construye una tabla de símbolos: cada vez que aparece una etiqueta (como
LOOP:), se registra su dirección; aún no hay código. - paso 2 genera el código: traduce cada instrucción y, cuando una hace referencia a una etiqueta (como
JMP LOOP), busca su dirección en la tabla de símbolos.
Dos pasos manejan las referencias hacia adelante (un salto a una etiqueta definida más adelante).
Ejemplo resuelto. Aplique el proceso de dos pasadas a este programa, cuya primera instrucción se almacena en la dirección 100.
LDD COUNT
LOOP: DEC ACC
CMP #0
JPN LOOP
END
COUNT: 5
La pasada 1 lee cada línea, cuenta la dirección que ocupará y registra cada etiqueta en la tabla de símbolos: LOOP = 101 (la línea DEC) y COUNT = 105 (la línea de datos). No se produce código. La pasada 2 vuelve a leer el programa y traduce cada línea a código máquina, sustituyendo cada mnemónico por su código de operación y cada dirección simbólica por el número de la tabla de símbolos: LDD COUNT se convierte en el código de operación de LDD con el operando 105, y JPN LOOP se convierte en el código de operación de JPN con el operando 101. El salto de regreso a LOOP podría haberse resuelto en una sola pasada, pero un salto hacia adelante a una etiqueta aún no vista no; por eso el ensamblador realiza dos pasadas.
Conjunto de instrucciones de ejemplo
Cambridge utiliza un conjunto genérico pequeño, impreso en la tabla de referencias del examen, con un registro de propósito general, el acumulador (AC), y un registro índice (IX). Un operandos escrito #n es un número decimal, Bn un número binario y &n un número hexadecimal; <address> es un número de ubicación o una etiqueta.
| Grupo | Instrucción | Lo que hace |
|---|---|---|
Movimiento de datos LDM #n |
carga el número n en ACC (inmediato) | |
LDD <address> |
carga los contenidos de la dirección en ACC (directo) | |
LDI <address> |
la dirección contiene otra dirección; carga los contenidos de esta última en ACC (indirecto) | |
LDX <address> |
suma IX a la dirección y carga los contenidos del resultado en ACC (indexado) | |
LDR #n |
carga el número n en IX | |
MOV <register> |
copia ACC al registro nombrado (IX) | |
STO <address> |
almacena los contenidos de ACC en la dirección | |
| Entrada y salida | IN |
lee una pulsación de tecla y coloca su código ASCII en ACC |
OUT |
muestra el carácter cuyo código ASCII está en ACC | |
| Aritmética | ADD <address> / ADD #n |
suma los contenidos de la dirección, o el número, a ACC |
SUB <address> / SUB #n |
resta a ACC | |
INC <register> / DEC <register> |
suma 1 a, o resta 1 de, ACC o IX | |
| Comparación | CMP <address> / CMP #n |
compara ACC con los contenidos de la dirección, o con n, y establece la bandera |
CMI <address> |
compara ACC con los contenidos de la dirección almacenada en la dirección (indirecto) | |
| Salto | JMP <address> |
salta a la dirección incondicionalmente |
JPE <address> / JPN <address> |
salta si la última comparación fue igual / no igual | |
| Manipulación de bits | AND, OR, XOR con #n, Bn, &n o <address> |
operación bit a bit sobre ACC |
LSL #n / LSR #n |
desplaza ACC lógicamente n posiciones a la izquierda o a la derecha | |
END |
finaliza el programa |
La pregunta "las instrucciones del lenguaje ensamblador están agrupadas" pide los nombres de los grupos y una instrucción de cada uno: movimiento de datos, entrada y salida, aritmética, saltos incondicionales y condicionales, comparación y manipulación de bits.
Cómo funciona un ensamblador de dos pasadas
Paso a paso. El ensamblador lee tu código dos veces: la pasada 1 solo encuentra dónde vive cada etiqueta, para que la pasada 2 pueda rellenar las direcciones; así es como un salto a una etiqueta definida más tarde todavía funciona.
| English | Español |
|---|---|
| register/ˈredʒɪstə/ | register |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | Unidad de control |
| clock speed/klɒk spiːd/ | Velocidad del reloj |
4.2
Modos de direccionamiento
El modo de direccionamiento (los modos de direccionamiento) indica cómo la CPU encuentra el operando:
- direccionamiento inmediato — el operando es el valor en la instrucción.
LDM #10carga 10. - direccionamiento directo — la instrucción contiene una dirección; el operando es el valor allí.
LDD 200. - direccionamiento indirecto — la instrucción contiene una dirección que contiene otra dirección, que es los datos.
LDI 200. - direccionamiento indexado — la dirección efectiva es
address + index register; usado para arreglos.LDX 100con IX = 5 lee la dirección 105.
(Direccionamiento relativo da la dirección como un desplazamiento desde el PC — usado para saltos.)

Ejemplo resuelto. La memoria contiene: ubicación 200 = 250, ubicación 250 = 99, ubicación 105 = 7. El registro índice contiene 5. ¿Qué hay en el acumulador después de cada uno de LDM #200, LDD 200, LDI 200 y LDX 100? Siga cuánto debe buscar cada modo. LDM #200 es inmediato - el operando es el número escrito en la instrucción, así que el acumulador contiene 200. LDD 200 es directo - vaya a la ubicación 200 y tome lo que hay allí: 250. LDI 200 es indirecto - la ubicación 200 contiene 250, que es otra dirección, así que continúe a la ubicación 250: 99. LDX 100 es indexado - sume el registro índice a la dirección, $100 + 5 = 105$, y lea la ubicación 105: 7. Cuente los saltos para mantenerlos separados: inmediato 0, directo 1, indirecto 2, indexado 1 (una vez que se ha añadido el índice).
| English | Español |
|---|---|
| Index Register/ˈɪndeks ˈredʒɪstə/ | Registro índice |
| indexed addressing/ˈɪndekst əˈdresɪŋ/ | dirección indexada |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | Registros de propósito general |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | Transferencia de registro |
| control bus/kənˈtrəʊl bʌs/ | Bus de control |
| addressing mode/əˈdresɪŋ məʊd/ | modo de dirección |
| immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ | dirección inmediata |
| direct addressing/daɪˈrekt əˈdresɪŋ/ | dirección directa |
| indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ | dirección indirecta |
| relative addressing/ˈrelətɪv əˈdresɪŋ/ | dirección relativa |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | desplazamiento lógico |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | desplazamiento cíclico |
4.2
Rastrear un programa ensamblador
Para rastrearlo: haga una tabla con columnas para el PC, ACC, registro índice, cada variable y cualquier bandera. Pase por las instrucciones actualizando la tabla después de cada una; siga las ramas cuando cambien el PC; deténgase en END. Un patrón común es un bucle sobre un array utilizando direccionamiento indexado.

Ejemplo resuelto. Rastree este programa. La dirección 200 contiene 5 y la dirección 201 contiene 0.
100 LDD 200
101 CMP #0
102 JPE 108
103 OUT
104 DEC ACC
105 STO 200
106 LDD 201
107 JMP 100
108 END
Escriba una fila por cada instrucción ejecutada, rellenando solo las columnas que cambian:
| Instrucción | ACC | 200 | 201 | Salida |
|---|---|---|---|---|
| inicio | 5 | 0 | ||
LDD 200 |
5 | |||
CMP #0 |
||||
JPE 108 |
no tomada | |||
OUT |
carácter con código 5 | |||
DEC ACC |
4 | |||
STO 200 |
4 | |||
LDD 201 |
0 | |||
JMP 100 |
||||
LDD 200 |
4 |
y así sucesivamente, hasta que LDD 200 carga 0, la comparación establece la bandera de igualdad, JPE 108 es tomada y el programa termina. Tres cosas que revisa el examinador: un CMP no cambia ningún registro, solo una bandera; un salto no tomado sigue contando como ejecutado; y OUT emite un carácter, por lo que va en la columna de salida, no en la del ACC. "Indique el efecto de cambiar LDD 10 a LDM #10": el ACC contendría el número 10 en lugar del contenido de la dirección 10.
4.3
Desplazamientos binarios
Syllabus
| Los candidatos deben ser capaces de: | Notas y orientación |
|---|---|
| Demostrar comprensión y realizar desplazamientos binarios | Lógica, aritmética y desplazamiento cíclico, a la izquierda y a la derecha |
| Demostrar comprensión de cómo se puede utilizar la manipulación de bits para monitorear/controlar un dispositivo | Realizar operaciones de manipulación de bits. Verificar y establecer un bit (mediante enmascaramiento de bits) |
| Etiqueta de instrucción | Opcode | Operando | Explicación |
| AND #n / Bn / &n | Operación AND bit a bit del contenido del ACC con el operando |
| Y | Operación lógica Y bit a bit del contenido de ACC con el contenido de |
| XOR #n / Bn / &n | Operación XOR bit a bit del contenido del ACC con el operando |
| XOR | Operación lógica XOR bit a bit del contenido de ACC con el contenido de |
| OR #n / Bn / &n | Operación OR bit a bit del contenido del ACC con el operando |
| OR | Operación lógica OR bit a bit del contenido de ACC con el contenido de |
| LSL #n | Los bits en el ACC se desplazan lógicamente n posiciones hacia la izquierda. Se introducen ceros en el extremo derecho |
| LSR #n | Los bits en el ACC se desplazan lógicamente n posiciones hacia la derecha. Se introducen ceros en el extremo izquierdo |
| Etiqueta una instrucción | |
| Asigna una dirección simbólica | |
| Todas las preguntas asumirán que solo hay un registro de propósito general disponible (Acumulador) ACC denota Acumulador IX denota Registro de Índice puede ser una dirección absoluta o simbólica # denota un número decimal, ej. #123 B denota un número binario, ej. B01001010 & denota un número hexadecimal, ej. &4A |
Fuente: Plan de estudios Cambridge International
Un desplazamiento lógico mueve todos los bits a la izquierda o derecha un cierto número de lugares, rellenando nuevas posiciones con 0.
- desplazamiento a la izquierda en 1 (
LSL #1) — los bits se mueven a la izquierda, entra un 0 por la derecha; para un número sin signo esto es × 2. - desplazamiento a la derecha en 1 (
LSR #1) — los bits se mueven a la derecha, entra un 0 por la izquierda; para un número sin signo esto es división entera ÷ 2.
Desplazar $n$ lugares multiplica o divide por $2^{n}$. Ejemplo: 00001011 (11) LSL #1 → 00010110 (22).
Los bits desplazados fuera del extremo se pierden, por lo que la multiplicación solo es correcta mientras esos bits fueran ceros. LSL #2 en el entero de complemento a dos 11001010 da como resultado 00101000: los dos 1s que cayeron por la izquierda han desaparecido, el bit de signo ha cambiado y el resultado ya no es cuatro veces el valor original.
Un desplazamiento aritmético a la derecha mantiene el bit de signo para que un número negativo con signo permanezca negativo. Un desplazamiento cíclico (rotación) introduce el bit que cae en un extremo de nuevo en el otro extremo, de modo que no se pierden bits.
"Muestra el resultado de un desplazamiento aritmético a la derecha de 3 posiciones sobre 10011110": copia el bit de signo en cada posición vacante, 11110011. El mismo desplazamiento aplicado a 01011100 produce 00001011. Un desplazamiento cíclico a la izquierda de 1 sobre 10000110 da como resultado 00001101: el 1 inicial reaparece a la derecha.

La diferencia entre los dos desplazamientos a la derecha es un solo bit. Toma 11110000, que vale 240 si se lee sin signo y $-16$ si se lee con signo. LSR #1 introduce un 0 y produce 01111000 $= 120$, que es la mitad correcta de 240. En cambio, ASR #1 copia el bit de signo y produce 11111000 $= -8$, que es la mitad correcta de $-16$. Ninguno es incorrecto; cada uno reduce a la mitad el valor bajo una interpretación concreta.

Manipulación de bits para monitoreo/control
Los dispositivos embebidos a menudo usan un bit de un registro por señal (p. ej., bit $n$ = LED $n$). Usando una máscara — enmascaramiento de bits — puede:
- establecer el bit $n$:
R = R ORuna máscara con el bit $n$ establecido. - borrar el bit $n$:
R = R ANDuna máscara con el bit $n$ borrado y el resto establecido. - invertir el bit $n$:
R = R XORuna máscara con el bit $n$ establecido. - comprobar el bit $n$:
R ANDla máscara, luego verificar si el resultado es distinto de cero.

La manipulación de bits es rápida, consume poca memoria y permite que un solo byte almacene hasta 8 estados encendido/apagado.
En el conjunto de instrucciones del examen, estas operaciones son AND, OR y XOR con una máscara escrita como operando decimal, binario o hexadecimal. Con el ACC conteniendo 10101100:
| Instrucción | Máscara | Resultado en ACC | Efecto |
|---|---|---|---|
AND B00001111 |
00001111 |
00001100 |
mantiene solo los cuatro bits menos significativos (desactiva los demás) |
OR #1 |
00000001 |
10101101 |
establece el bit menos significativo, dejando el resto sin cambios |
XOR &FF |
11111111 |
01010011 |
invierte cada bit |
AND B00001000 seguido de CMP #0 |
00001000 |
00001000 |
prueba el bit 3: la comparación no es igual, por lo que el bit 3 estaba establecido |
LSL #2 |
10110000 |
desplaza a la izquierda dos posiciones, perdiendo los dos bits más significativos | |
LSR #3 |
00010101 |
desplaza a la derecha tres posiciones, introduciendo ceros por la izquierda |
"Escriba la instrucción que establece el bit menos significativo en 1 y deja los demás sin cambios": OR #1, o OR B00000001. Para desactivar un bit utilice AND con una máscara que tenga un 0 en esa posición y 1s en las demás; para probar un bit, AND con una máscara que tenga un 1 solo en esa posición, luego compare el resultado con cero. En un dispositivo de monitorización, un bit de registro por sensor permite que una sola AND compruebe si un sensor particular está activo, y una OR activa el bit de control de un actuador sin perturbar los demás.
Desplaza y enmascara los bits de un byte
Elige un operador y observa cada bit resultante. Un desplazamiento a la izquierda (<<) moves every bit up one place (×2); a right shift (>>) los mueve hacia abajo (÷2); AND con una máscara borra los bits que no quieres.
| English | Español |
|---|---|
| mask/mæsk/ | máscara |
4.3
Definiciones aceptadas por el examinador
Una pregunta de definición se califica según un texto fijo. Aprende estas definiciones exactamente, y da solo una respuesta.
| Término | Definición |
|---|---|
| concepto de programa almacenado | las instrucciones del programa y los datos están ambos almacenados en la memoria principal, y las instrucciones se buscan y ejecutan una a la vez |
| registro | una ubicación de almacenamiento pequeña y muy rápida dentro del procesador con un propósito específico |
| Contador de Programa | el registro que contiene la dirección de la siguiente instrucción que será buscada |
| Registro de Dirección de Memoria | el registro que contiene la dirección de la ubicación de memoria que se está leyendo o escribiendo |
| Registro de Datos de Memoria | el registro que contiene los datos o la instrucción leídos recientemente, o a punto de ser escritos en la memoria |
| Registro de Instrucción Actual | el registro que contiene la instrucción que se está decodificando y ejecutando actualmente |
| Acumulador | el registro de propósito general que contiene el resultado de la última operación aritmética o lógica |
| memoria caché | memoria pequeña y rápida cercana al procesador que contiene instrucciones y datos de uso frecuente |
| interrupción | una señal de un dispositivo o programa que hace que el procesador pause la tarea actual y ejecute una rutina de servicio de interrupción |
| lenguaje ensamblador | un lenguaje de bajo nivel en el cual cada instrucción mnemotécnica corresponde a una instrucción de código máquina |
| direccionamiento inmediato | el operando es el valor escrito en la instrucción |
| direccionamiento directo | el operando es el contenido de la dirección escrita en la instrucción |
| direccionamiento indirecto | la dirección en la instrucción contiene la dirección del operando |
| direccionamiento indexado | la dirección del operando es la dirección en la instrucción más el contenido del registro índice |
| direccionamiento relativo | la dirección del operando se da como un desplazamiento desde la dirección de la instrucción actual |
| desplazamiento lógico | cada bit se mueve el número dado de posiciones y los ceros rellenan las posiciones vacantes |
4.3
Consejos para el examen
- Aprenda el ciclo de búsqueda-ejecución en términos de transferencia de registros (PC, MAR, MDR, CIR, ACC) y qué incrementa el PC.
- Nombre la función de cada registro; el bus de direcciones es de un solo sentido, el bus de datos es de doble sentido.
- Distinga los modos de direccionamiento (inmediato, directo, indirecto, indexado) — una pregunta frecuente.
- Explique cómo la velocidad del reloj, el número de núcleos, el tamaño de la caché y la longitud de palabra afectan el rendimiento.
- Para un desplazamiento binario, indique si es lógico o aritmético; un desplazamiento a la izquierda multiplica por 2, un desplazamiento a la derecha divide por 2.
Errores comunes
- Decir que el PC contiene la instrucción actual, o que el MDR contiene una dirección. El PC contiene la dirección de la siguiente instrucción; el MDR contiene datos o una instrucción, nunca una dirección.
- Dejar fuera el incremento del PC en la búsqueda, o ponerlo después de la ejecución. Ocurre tan pronto como la dirección ha sido copiada al MAR.
- Leer
LDD 10como "cargar 10".LDD 10carga el contenido de la dirección 10;LDM #10carga el número 10. - Poner un valor en la columna ACC para
CMPoOUT. Una comparación establece una bandera únicamente; una salida va a la columna de salida. - Decir que una interrupción se maneja "inmediatamente". El procesador termina la instrucción actual y verifica las interrupciones al final del ciclo.
- Usar un desplazamiento lógico a la derecha en un número complementario a dos negativo. Solo un desplazamiento aritmético mantiene el bit de signo.
Lecciones interactivas sobre este tema
Trátalo paso a paso, con ejercicios de verificación instantánea.