| 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:32
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 + 中文 quemados en pantalla
4.1
Arquitectura de Von Neumann
Syllabus
Fuente: Plan de estudios Cambridge International
La arquitectura de Von Neumann 冯·诺依曼体系结构 subyace en casi todas las computadoras de propósito general:
- una memoria única — la Memoria de Acceso Inmediato 立即存取存储器 (IAS) — almacena tanto instrucciones del programa como datos (el concepto de programa almacenado 存储程序).
- un procesador 处理器 (CPU) busca instrucciones de la memoria y las ejecuta una a la vez.
- 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.
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 (suma, resta, ...) y lógicas (AND, OR, comparaciones). Toma operandos de los registros 寄存器 y coloca los resultados de vuelta en un registro.
Unidad de Control (CU)
La unidad de control 控制单元 decodifica cada instrucción y envía las señales de control para llevarla a cabo: abre rutas de datos, indica a la ALU qué hacer y controla las lecturas y escrituras de memoria.
Reloj del sistema
El reloj envía un flujo constante de pulsos que mantienen al CPU sincronizado. Cada instrucción toma 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 memorias pequeñas y muy rápidas dentro del CPU. Los registros de uso especial 专用寄存器 tienen cada uno una función fija en el ciclo:
- Contador de Programa 程序计数器 (PC) — la dirección de la siguiente instrucción.
- 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 vienen de la memoria.
- Registro de Instrucción Actual 当前指令寄存器 (CIR) — la instrucción que se está decodificando.
- Acumulador 累加器 (ACC) — el valor sobre el que trabaja la ALU.
- Registro de Estado 状态寄存器 — mantiene banderas 标志 (acarreo, cero, negativo, desbordamiento) usadas por las ramificaciones. Cada bandera es un bit, establecido o eliminado por la ALU después de una operación: la bandera cero tras una comparación que coincidió, la bandera de acarreo cuando una suma desbordó el registro, la bandera negativa cuando un resultado es negativo. Un salto condicional lee las banderas para decidir si debe ramificar, y una bandera de desbordamiento puede generar una interrupción.
- Registro de Índice 变址寄存器 — un desplazamiento añadido a una dirección en el direccionamiento indexado; incrementarlo permite recorrer un array un elemento a la vez.
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 uso 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] ("copia el contenido del PC en el MAR").

| Inglés | Chino | Pinyin |
|---|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | 冯·诺依曼体系结构 | féng · nuò yī màn tǐ xì jié gòu |
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | 立即存取存储器 | lì jí cún qǔ cún chǔ qì |
| stored program/stɔːd ˈprəʊɡræm/ | 存储程序 | cún chǔ chéng xù |
| processor/ˈprəʊsesə/ | 处理器 | chǔ lǐ qì |
| arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ | 算术逻辑单元 | suàn shù luó jí dān yuán |
| ALU/ˌeɪ el ˈjuː/ | 算术逻辑单元 | suàn shù luó jí dān yuán |
| buses/ˈbʌsɪz/ | 总线 | zǒng xiàn |
| address bus/əˈdres bʌs/ | 地址总线 | dì zhǐ zǒng xiàn |
| data bus/ˈdeɪtə bʌs/ | 数据总线 | shù jù zǒng xiàn |
| word size/wɜːd saɪz/ | 字长 | zì cháng |
| number of cores/ˈnʌmbə ɒv kɔːz/ | 核心 | hé xīn |
| cores/kɔːz/ | 核心 | hé xīn |
| amount of RAM/əˈmaʊnt ɒv ræm/ | 随机存取存储器 | suí jī cún qǔ cún chǔ qì |
| RAM/ræm/ | 随机存取存储器 | suí jī cún qǔ cún chǔ qì |
| page/peɪdʒ/ | 页 | yè |
| cache memory/kæʃ ˈmeməri/ | 高速缓存 | gāo sù huǎn cún |
| cache/kæʃ/ | 高速缓存 | gāo sù huǎn cún |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | 辅助存储器 | fǔ zhù cún chǔ qì |
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).


| Inglés | Chino | Pinyin |
|---|---|---|
| port/pɔːt/ | 端口 | duān kǒu |
| peripheral/pəˈrɪfərəl/ | 外围设备 | wài wéi shè bèi |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | 寄存器传送记法 | jì cún qì chuán sòng jì fǎ |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | 中断服务程序 | zhōng duàn fú wù chéng xù |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | 中断寄存器 | zhōng duàn jì cún qì |
| stack/stæk/ | 栈 | zhàn |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | 汇编语言 | huì biān yǔ yán |
| machine code/məˈʃiːn kəʊd/ | 机器码 | jī qì mǎ |
| mnemonics/nɪˈmɒnɪks/ | 助记符 | zhù jì fú |
| assembler/əˈsemblə/ | 汇编器 | huì biān qì |
| symbol table/ˈsɪmbl ˈteɪbl/ | 符号表 | fú hào biǎo |
| label/ˈleɪbl/ | 标签 | biāo qiān |
| forward references/ˈfɔːwəd ˈrefrənsɪz/ | 前向引用 | qián xiàng yǐn yòng |
4.1
Factores que afectan el rendimiento
- velocidad del reloj — más ciclos por segundo.
- número de núcleos 核心 — una CPU multi-núcleo ejecuta varios hilos a la vez.
- 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 de trabajo; poca RAM obliga al SO a paginar 页 en disco.
- tamaño de la 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.
| Inglés | Chino | Pinyin |
|---|---|---|
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | 取指-执行周期 | qǔ zhǐ - zhí xíng zhōu qī |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | 专用寄存器 | zhuān yòng jì cún qì |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | 程序计数器 | chéng xù jì shù qì |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | 内存地址寄存器 | nèi cún dì zhǐ jì cún qì |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | 内存数据寄存器 | nèi cún shù jù jì cún qì |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | 当前指令寄存器 | dāng qián zhǐ lìng jì cún qì |
| accumulator/əˈkjuːmjʊleɪtə/ | 累加器 | lěi jiā qì |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | 状态寄存器 | zhuàng tài jì cún qì |
| flags/flæɡz/ | 标志 | biāo zhì |
4.1
Interrupciones
Una interrupción 中断 es una señal que pausa el ciclo normal para que la CPU pueda manejar un evento urgente (un pulsador 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 interrupción 中断服务程序 (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.
"Explica cómo se detecta y maneja una interrupción de un dispositivo de entrada en el ciclo B-E" es una respuesta de cuatro puntos con estos elementos: el dispositivo envía una señal de interrupción que activa 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 haya terminado de ejecutarse; si una bandera está activada y la interrupción tiene mayor prioridad que la tarea actual, el contenido del PC y los otros registros se guardan en la pila 栈; la dirección de la rutina de servicio de interrupción se carga en el PC y la rutina se ejecuta; cuando termina, 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.

| Inglés | Chino | Pinyin |
|---|---|---|
| interrupt/ˈɪntərʌpt/ | 中断 | zhōng duà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 pasadas manejan 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
El paso 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. El paso 2 lee el programa nuevamente y traduce cada línea a código máquina, reemplazando cada mnemotécnico por su opcode 操作码 y cada dirección simbólica por el número de la tabla de símbolos: LDD COUNT se convierte en el opcode para LDD con operandos 操作数 105, y JPN LOOP se convierte en el opcode para JPN con operandos 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 podría, por eso el ensamblador realiza dos.
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.
| Inglés | Chino | Pinyin |
|---|---|---|
| operand/ˈɒpərænd/ | 操作数 | cāo zuò shù |
| register/ˈredʒɪstə/ | 寄存器 | jì cún qì |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | 控制单元 | kòng zhì dān yuán |
| clock speed/klɒk spiːd/ | 时钟频率 | shí zhōng pín lǜ |
| opcode/ˈɒpkəʊd/ | 操作码 | cāo zuò mǎ |
4.2
Modos de direccionamiento
El modo de direccionamiento 寻址方式 (los modos de acceso) indica cómo encuentra el operando la CPU:
- 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 el dato.
LDI 200. - direccionamiento indexado 变址寻址 — la dirección efectiva es
address + index register; usado para arreglos.LDX 100con IR = 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: dirección 200 = 250, dirección 250 = 99, dirección 105 = 7. El registro índice contiene 5. ¿Qué hay en el acumulador después de cada una de⟩LDM #200, LDD 200, LDI 200 y LDX 100? Siga la distancia que debe recorrer cada modo. LDM #200 es inmediato: el operando es el número escrito en la instrucción, por lo que el acumulador contiene 200. LDD 200 es directo: vaya a la dirección 200 y tome lo que haya allí: 250. LDI 200 es indirecto: la dirección 200 contiene 250, que es otra dirección, así que continúe hasta la dirección 250: 99. LDX 100 es indexado: sume el registro índice a la dirección, $100 + 5 = 105$, y lea la dirección 105: 7. Cuente los saltos para diferenciarlos: inmediato 0, directo 1, indirecto 2, indexado 1 (una vez que se ha añadido el índice).
| Inglés | Chino | Pinyin |
|---|---|---|
| Index Register/ˈɪndeks ˈredʒɪstə/ | 变址寄存器 | biàn zhǐ jì cún qì |
| indexed addressing/ˈɪndekst əˈdresɪŋ/ | 变址寻址 | biàn zhǐ xún zhǐ |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | 通用寄存器 | tōng yòng jì cún qì |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | 寄存器传送 | jì cún qì chuán sòng |
| control bus/kənˈtrəʊl bʌs/ | 控制总线 | kòng zhì zǒng xiàn |
| addressing mode/əˈdresɪŋ məʊd/ | 寻址方式 | xún zhǐ fāng shì |
| immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ | 立即寻址 | lì jí xún zhǐ |
| direct addressing/daɪˈrekt əˈdresɪŋ/ | 直接寻址 | zhí jiē xún zhǐ |
| indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ | 间接寻址 | jiàn jiē xún zhǐ |
| relative addressing/ˈrelətɪv əˈdresɪŋ/ | 相对寻址 | xiāng duì xún zhǐ |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | 逻辑移位 | luó jí yí wèi |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | 循环移位 | xún huán yí wèi |
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 |
| AND <dirección> | Operación AND bit a bit del contenido del ACC con el contenido de <dirección> |
| XOR #n / Bn / &n | Operación XOR bit a bit del contenido del ACC con el operando |
| XOR <dirección> | Operación XOR bit a bit del contenido del ACC con el contenido de <dirección> |
| OR #n / Bn / &n | Operación OR bit a bit del contenido del ACC con el operando |
| OR <dirección> | Operación OR bit a bit del contenido del ACC con el contenido de <dirección> |
| 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 Índice. <dirección> 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 a la derecha por algún lugar, rellenando las 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 con signo negativo permanezca negativo. Un desplazamiento cíclico (rotar) introduce el bit que cae de un extremo de nuevo en el otro extremo, por lo 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 suelen utilizar un único bit 位 de un registro por señal (p. ej., bit $n$ = LED $n$). Mediante una máscara 掩码 — enmascaramiento de bits—, puedes:
- 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.
| Inglés | Chino | Pinyin |
|---|---|---|
| bit/bɪt/ | 位 | wèi |
| mask/mæsk/ | 掩码 | yǎn mǎ |
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.