| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| Demonstrar compreensão do modelo básico Von Neumann para um sistema computacional e do conceito de programa armazenado | |
| Demonstrar compreensão do propósito e papel dos registros, incluindo a diferença entre registros de uso geral e registros de uso especial | Registros de uso especial incluem: • Contador de Programa (PC) • Registrador de Dados de Memória (MDR) • Registrador de Endereço de Memória (MAR) • O Acumulador (ACC) • Registrador Indexado (IX) • Registrador de Instrução Atual (CIR) • Registrador de Status |
| Demonstrar compreensão do propósito e papéis da Unidade Aritmética e Lógica (ALU), Unidade de Controle (CU) e relógio do sistema, Armazenamento de Acesso Imediato (IAS) | |
| Demonstrar compreensão de como os dados são transferidos entre vários componentes do sistema computacional usando o ** barramento de endereços**, barramento de dados e barramento de controle | |
| Demonstrar compreensão de como fatores contribuem para o desempenho do sistema computacional | Incluindo: • tipo de processador e número de cores • a largura do barramento • velocidade do clock • memória cache |
| Compreender como diferentes portas fornecem conexão para dispositivos periféricos | Incluindo conexão para: • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA) |
| Descrever as etapas do ciclo Fetch-Execute (F-E) | Descrever e usar notação de 'register transfer' para descrever o ciclo F-E |
| Demonstrar compreensão do propósito de interrupções | Incluindo: • possíveis causas de interrupções • aplicações de interrupções • uso de uma Rotina de Serviço de Interrupção (ISR) • quando as interrupções são detectadas durante o ciclo fetch-execute • como as interrupções são tratadas |
Fundamentos do Processador
Ciência da Computação do A-Level · Tópico 4
21:32
Arquitetura Von Neumann
Durante a maior parte da história, uma máquina fazia um trabalho. Um tear tecia pano. Uma calculadora somava. Para fazê-la fazer algo novo, você a reconstituía. Depois veio algo decepitivamente simples…
Narração em inglês · Legendas em inglês + 中文 gravadas
4.1
Arquitetura Von Neumann
Programa
Fonte: Programa Cambridge International
A Arquitetura Von Neumann 冯·诺依曼体系结构 fundamenta quase todos os computadores de propósito geral:
- uma única memória — a Immediate Access Store 立即存取存储器 (IAS) — armazena tanto instruções do programa quanto dados (o conceito de stored program 存储程序).
- um processador 处理器 (CPU) busca instruções da memória e as executa uma de cada vez.
- as instruções rodam em ordem a menos que uma branch altere o fluxo.
A ideia de stored-program é o que torna um computador flexível: mude o programa e você muda o que ele faz, sem reconfigurar cabos.
Toque nas partes de um computador Von Neumann
Explore cada bloco. A CPU (unidade de controle, ALU, registradores) fala com uma única memória principal pelos barramentos — e esse único espaço de memória compartilhado para instruções E dados é a ideia de Von Neumann.
| Inglês | Chinês | Pinyin |
|---|---|---|
| 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 |
| RAM/ræm/ | 随机存取存储器 | suí jī cún qǔ cún chǔ qì |
4.1
Principais partes da CPU
Todas essas partes estão dentro de um único chip pequeno. O diagrama mais adiante nesta seção mostra como elas se conectam; a foto abaixo mostra o real.


Unidade Aritmética Lógica (ALU)
A ALU 算术逻辑单元 realiza operações aritméticas (soma, subtração, ...) e lógicas (AND, OR, comparações). Ela pega operandos dos registros 寄存器 e coloca resultados de volta em um registro.
Unidade de Controle (CU)
A unidade de controle 控制单元 decodifica cada instrução e envia os sinais de controle para executá-la — abrindo caminhos de dados, dizendo à ALU o que fazer e controlando leituras e gravações na memória.
Relógio do sistema
O relógio envia uma corrente constante de pulsos que mantêm a CPU sincronizada. Cada instrução leva um número fixo de ciclos, e a clock speed 时钟频率 (ex. 3.8 GHz) é um fator no desempenho.
"Explique como a CU e o relógio do sistema trabalham juntos": o relógio emite pulsos em uma frequência fixa; a unidade de controle usa cada pulso para avançar o ciclo fetch-execute em um passo, enviando seus sinais de controle sincronizados com os pulsos, assim toda parte do processador muda de estado junto. Um clock mais rápido significa mais passos por segundo, até o ponto em que os circuitos não conseguem se estabilizar entre os pulsos.
Registros
Registros são armazenamentos pequenos e muito rápidos dentro da CPU. Os registros de propósito especial 专用寄存器 têm cada um uma tarefa fixa no ciclo:
- Program Counter 程序计数器 (PC) — o endereço da próxima instrução.
- Memory Address Register 内存地址寄存器 (MAR) — o endereço sendo lido ou escrito.
- Registro de Dados de Memória 内存数据寄存器 (MDR) — os dados que vão ou vêm da memória.
- Current Instruction Register 当前指令寄存器 (CIR) — a instrução sendo decodificada.
- Accumulator 累加器 (ACC) — o valor sobre o qual a ALU está trabalhando.
- Status Register 状态寄存器 — armazena flags 标志 (carry, zero, negativo, overflow) usados por branches. Cada flag é um bit, definido ou limpo pela ALU após uma operação: a flag zero após uma comparação que correspondeu, a flag carry quando uma soma transbordou o registro, a flag negativa quando um resultado é negativo. Um jump condicional lê as flags para decidir se deve pular, e uma flag overflow pode disparar uma interrupção.
- Index Register 变址寄存器 — um offset adicionado a um endereço em endereçamento indexado; incrementá-lo percorre um array um elemento por vez.
A questão "complete a tabela descrevendo o papel de cada registro" quer uma frase precisa por registro nestes termos: o PC armazena o endereço da próxima instrução a ser buscada; o MAR armazena o endereço do local sendo lido ou escrito; o MDR armazena os dados ou instrução acabados de serem lidos desse local, ou prestes a serem gravados; o CIR armazena a instrução atualmente sendo decodificada e executada; o ACC armazena o resultado da última operação aritmética ou lógica.
Os registros de propósito geral 通用寄存器 são usados pelo programador para valores temporários durante um cálculo. Movimentos de dados entre registros e memória são escritos em notação de register transfer 寄存器传送 — ex. MAR ← [PC] ("copie o conteúdo do PC para o MAR").

| Inglês | Chinês | Pinyin |
|---|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | 冯·诺依曼体系结构 | féng · nuò yī màn tǐ xì jié gòu |
| ALU/ˌeɪ el ˈjuː/ | 算术逻辑单元 | suàn shù luó jí dān yuán |
| 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ǜ |
| 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ì |
| 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 |
| buses/ˈbʌsɪz/ | 总线 | zǒng xiàn |
4.1
Barramentos
Três buses internos 总线 (conjuntos de fios paralelos) conectam as partes:
- address bus 地址总线 — transporta o endereço de memória. Unidirecional (CPU → memória).
- data bus 数据总线 — transporta os dados. Bidirecional.
- control bus 控制总线 — transporta sinais de controle (leitura, gravação, interrupção). Bidirecional.
Um barramento de endereços de $n$ bits pode acessar $2^{n}$ locais de memória. A largura do barramento de dados determina quantos bits são transferidos por acesso (frequentemente o tamanho da palavra).


| Inglês | Chinês | Pinyin |
|---|---|---|
| control bus/kənˈtrəʊl bʌs/ | 控制总线 | kòng zhì 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 |
4.1
O que afeta o desempenho
- clock speed — mais ciclos por segundo.
- number of cores 核心 — uma CPU multi-core executa vários threads simultaneamente.
- word size 字长 — uma CPU de 64 bits processa blocos de 64 bits por ciclo e pode acessar muito mais memória do que uma de 32 bits.
- amount of RAM 随机存取存储器 — mais RAM armazena mais do conjunto ativo; pouca RAM força o SO a fazer pagememória 页 para o disco.
- cache memory 高速缓存 size — mais cache reduz o tempo médio de acesso à memória.
- secondary storage 辅助存储器 type — um SSD carrega programas muito mais rápido que um HDD.
- bus width and speed — barramentos mais largos/rapidos movem dados mais rapidamente.
Combine as especificações com a carga de trabalho: uma quad-core supera uma dual-core em trabalhos paralelos, mas maior velocidade por core vence em trabalho single-threaded.
Cada fator é uma resposta de duas marcas com uma razão associada:
- More cores: cada core pode buscar e executar sua própria instrução ao mesmo tempo, então vários programas, ou os threads de um programa, executam em paralelo. Mas um programa deve ser escrito para usar mais de um core, então duplicar os cores não duplica a velocidade.
- Higher clock speed: mais ciclos de busca-execução por segundo, então mais instruções por segundo; o limite é o calor gerado.
- Wider bus: um barramento de dados mais largo move mais bits em cada transferência, então menos transferências são necessárias para os mesmos dados; um barramento de endereços mais largo pode acessar mais locais de memória.
- Cache memory: uma memória pequena e rápida dentro ou ao lado do processador que mantém as instruções e os dados usados mais recentemente ou com mais frequência. Lê-los do cache é muito mais rápido que da RAM, então o processador passa menos tempo esperando.
"Explique por que o novo computador tem melhor desempenho" responde-se comparando as duas especificações linha por linha: maior clock speed executa mais instruções por segundo, mais cores executam mais tarefas ao mesmo tempo, mais cache significa menos acessos lentos à RAM, e mais RAM significa menos transferências para o disco.
| Inglês | Chinês | Pinyin |
|---|---|---|
| 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ì |
| 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
Portas
Uma port 端口 é um conector físico para conectar um peripheral 外围设备:
- USB (Universal Serial Bus) — uso geral (teclados, drives, telefones).
- HDMI (High Definition Multimedia Interface) — vídeo digital e áudio para uma tela.
- VGA (Video Graphics Array) — saída de vídeo analógica antiga para um monitor.
- Ethernet (RJ-45) — LAN cablada. Jacks de áudio — fones de ouvido/microfone.
Portas diferentes usam sinais diferentes, então um cabo HDMI não se encaixa em uma porta USB. O USB-C é incomum por transportar vídeo, dados e energia.
"Explique como o computador se conecta ao monitor através do HDMI": a porta HDMI envia o vídeo e o áudio como um único sinal digital por um único cabo, então nenhuma conversão para analógico é necessária e a imagem não é degradada; o cabo suporta resoluções de alta definição e a própria porta do monitor decodifica o sinal. Um dispositivo USB é plug-and-play: quando conectado, o computador o detecta, identifica-o, carrega ou instala o driver necessário, e pode fornecer energia, tudo sem reinicialização.
| Inglês | Chinês | Pinyin |
|---|---|---|
| port/pɔːt/ | 端口 | duān kǒu |
| peripheral/pəˈrɪfərəl/ | 外围设备 | wài wéi shè bèi |
4.1
Ciclo Fetch-Execute
A CPU repete o fetch-execute cycle 取指-执行周期, uma execução por instrução de máquina.
Fetch
- o endereço do PC é copiado para o MAR.
- o PC é incrementado para apontar para a próxima instrução.
- um sinal de read vai pelo barramento de controle.
- a memória coloca a instrução no barramento de dados.
- ela é copiada para o MDR, depois para o CIR.
O exame pede esses passos em register transfer notation 寄存器传送记法, onde [X] significa o conteúdo do registro X e [[MAR]] significa o conteúdo do local de memória cujo endereço está no 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
A ordem importa: o PC é incrementado imediatamente após seu endereço ser copiado, para que um jump executado posteriormente ainda possa sobrescrevê-lo. Durante a execução, a mesma notação descreve cada instrução; para LDD 200, por exemplo, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].
*As transferências de registro em uma busca: PC → MAR → memory → MDR → CIR, com o PC incrementado
Decode
A CU decodifica a instrução no CIR — qual operação e quais operandos ou endereços.
Execute
A CU a executa: aritmética/lógica vai para a ALU (resultado para o ACC); load/store move dados entre memória e um registro; um branch altera o PC. Então o ciclo se repete.
*O ciclo fetch-execute, com verificação de interrupções a cada vez
O ciclo fetch-execute
Toque ao redor do loop que a CPU repete bilhões de vezes por segundo. Observe como o fetch usa os registradores PC/MAR/MDR/CIR, depois decode e execute agem sobre o que foi buscado.
O ciclo busca-executa
Passe por como a CPU executa uma instrução — busque da memória, decodifique, então execute, repetidamente.
| Inglês | Chinês | 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ì |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | 寄存器传送记法 | jì cún qì chuán sòng jì fǎ |
4.1
Interrupts
Um interrupt 中断 é um sinal que pauses o ciclo normal para que a CPU possa lidar com um evento urgente (uma tecla pressionada, um pacote chegando, uma falha de hardware, divisão por zero, o timer do SO).
Lidando com um:
- termine a instrução atual.
- save the state (PC e registros).
- carregue o endereço da interrupt service routine 中断服务程序 (ISR) no PC e execute-a.
- a ISR lida com o evento.
- restore o estado salvo e continue.
Interrupts permitem que o sistema responda prontamente sem a CPU verificar constantemente dispositivos, e são como o SO faz multitarefa.
"Explique como uma interrupção de um dispositivo de entrada é detectada e manuseada no ciclo F-E" é uma resposta de quatro marcas com estes pontos: o dispositivo envia um sinal de interrupção que define a flag de interrupção no interrupt register 中断寄存器; o processador verifica esse registro no end of every fetch-execute cycle, após a execução da instrução atual terminar; se uma flag estiver definida e a interrupção tiver prioridade maior que a tarefa atual, o conteúdo do PC e dos outros registros é salvo no pilha 栈; o endereço da rotina de serviço de interrupção é carregado no PC e a rotina é executada; quando termina, os valores salvos são restaurados do stack e o programa interrompido continua de onde parou.
Causas dignas de menção: uma interrupção de hardware de um dispositivo (uma tecla pressionada, um buffer de impressora vazio, um pacote de rede chegando), uma interrupção de software de uma falha (divisão por zero, uma instrução ilegal, overflow aritmético), uma interrupção de timer do sistema operacional marcando o fim de uma fatia de tempo, e um aviso de falha de energia.
*Como uma interrupção se encaixa no ciclo fetch-execute
| Inglês | Chinês | Pinyin |
|---|---|---|
| interrupt/ˈɪntərʌpt/ | 中断 | zhōng duàn |
| 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 |
4.2
Assembly language and machine code
Programa
| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| Demonstrar compreensão da relação entre linguagem assembly e código máquina | |
| Descrever as diferentes etapas do processo de ensamblagem para um ensamblador de duas passagens | Aplicar o processo de ensamblador de duas passagens a um programa simples dado em linguagem assembly |
| Rastrear um programa simples dado em linguagem assembly | |
| Demonstrar compreensão de que um conjunto de instruções são agrupadas | Incluindo os seguintes grupos: • Movimentação de dados • Entrada e saída de dados • Operações aritméticas • Instruções incondicionais e condicionais • Instruções de comparação |
| Demonstrar compreensão e ser capaz de usar diferentes modos de endereçamento | Incluindo imediato, direto, indireto, indexado, relativo |
Fonte: Programa Cambridge International
A CPU realmente executa machine code 机器码 — padrões de bits, específicos para uma arquitetura. Assembly language 汇编语言 é uma forma legível, com uma instrução por instrução de máquina, escrita usando mnemonics 助记符 como LDD, ADD, JMP. Um assembler 汇编器 traduz para machine code.
*Um assembler transforma mnemonics em padrões de bits de machine code
Two-pass assembler
Um assembler de duas passadas lê a fonte duas vezes:
- pass 1 constrói uma symbol table 符号表: sempre que um label 标签 (como
LOOP:) aparece, registre seu endereço; nenhum código ainda. - pass 2 gera código: traduza cada instrução, e quando uma se refere a um label (como
JMP LOOP), procure seu endereço na symbol table.
Duas passadas lidam com forward references 前向引用 (um jump para um label definido depois).
Worked example. Aplique o processo de duas passadas a este programa, cuja primeira instrução está no endereço 100.
LDD COUNT
LOOP: DEC ACC
CMP #0
JPN LOOP
END
COUNT: 5
Pass 1 lê cada linha, conta o endereço que ocupará e registra todos os labels na symbol table: LOOP = 101 (a linha DEC) e COUNT = 105 (a linha de dados). Nenhum código é produzido. Pass 2 lê o programa novamente e traduz cada linha em machine code, substituindo cada mnemonic por seu opcode 操作码 e cada endereço simbólico pelo número da symbol table: LDD COUNT torna-se o opcode para LDD com operand 操作数 105, e JPN LOOP torna-se o opcode para JPN com operand 101. O jump back para LOOP poderia ter sido resolvido em uma passada, mas um jump forward para um label ainda não visto não poderia, que é por que o assembler faz duas.
Example instruction set
Cambridge usa um pequeno conjunto genérico, impresso na tabela de referência do exame, com um registro de propósito geral, o acumulador (ACC), e um registro índice (IX). Um operand escrito #n é um número decimal, Bn um binário e &n um hexadecimal; <address> é um número de localização ou um label.
| Grupo | Instrução | O que faz |
|---|---|---|
| Movimento de dados | LDM #n |
carrega o número n no ACC (imediato) |
LDD <address> |
carrega o conteúdo do endereço no ACC (direto) | |
LDI <address> |
o endereço contém outro endereço; carrega o conteúdo deste último no ACC (indireto) | |
LDX <address> |
adicione IX ao endereço e carregue o conteúdo do resultado em ACC (indexado) | |
LDR #n |
carregue o número n em IX | |
MOV <register> |
copie ACC para o registro nomeado (IX) | |
STO <address> |
armazene o conteúdo de ACC no endereço | |
| Entrada e saída | IN |
leia uma tecla pressionada e coloque seu código ASCII em ACC |
OUT |
exiba o caractere cujo código ASCII está em ACC | |
| Aritmética | ADD <address> / ADD #n |
adicione o conteúdo do endereço, ou o número, a ACC |
SUB <address> / SUB #n |
subtraia de ACC | |
INC <register> / DEC <register> |
adicione 1 ou subtraia 1 de ACC ou IX | |
| Comparação | CMP <address> / CMP #n |
compare ACC com o conteúdo do endereço, ou com n, e defina a flag |
CMI <address> |
compare ACC com o conteúdo do endereço retido no endereço (indireto) | |
| Salto | JMP <address> |
salte para o endereço incondicionalmente |
JPE <address> / JPN <address> |
salte se a última comparação foi igual / não igual | |
| Manipulação de bits | AND, OR, XOR com #n, Bn, &n ou <address> |
operação bit a bit em ACC |
LSL #n / LSR #n |
desloque ACC logicamente n posições para a esquerda ou direita | |
END |
termine o programa |
A questão "as instruções da linguagem assembly são agrupadas" pede os nomes dos grupos e uma instrução de cada: movimento de dados, entrada e saída, aritmética, saltos incondicionais e condicionais, comparação e manipulação de bits.
Como funciona um ensamblificador de duas passadas
Passe passo a passo. O ensamblificador lê seu código duas vezes: a passada 1 apenas encontra onde cada label está, para que a passada 2 possa preencher os endereços — é assim que um jump para uma label definida depois ainda funciona.
| Inglês | Chinês | Pinyin |
|---|---|---|
| operand/ˈɒpərænd/ | 操作数 | cāo zuò shù |
| 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 |
| opcode/ˈɒpkəʊd/ | 操作码 | cāo zuò mǎ |
4.2
Modos de endereçamento
O modo de endereçamento 寻址方式 (the modes of addressing) diz como a CPU encontra o operando:
- endereçamento imediato 立即寻址 — o operando é o valor na instrução.
LDM #10carrega 10. - endereçamento direto 直接寻址 — a instrução contém um endereço; o operando é o valor lá.
LDD 200. - endereçamento indireto 间接寻址 — a instrução contém um endereço que contém outro endereço, que é o dado.
LDI 200. - endereçamento indexado 变址寻址 — endereço efetivo é
address + index register; usado para arrays.LDX 100com IR = 5 lê endereço 105.
(Endereçamento relativo 相对寻址 dá o endereço como um offset do PC — usado para saltos.)

Exemplo resolvido. Memória contém: local 200 = 250, local 250 = 99, local 105 = 7. O registro índice contém 5. O que está no acumulador após cada um de LDM #200, LDD 200, LDI 200 e LDX 100? Siga até onde cada modo precisa olhar. LDM #200 é imediato - o operando é o número escrito na instrução, então o acumulador contém 200. LDD 200 é direto - vá ao local 200 e pegue o que está lá: 250. LDI 200 é indireto - local 200 contém 250, que é outro endereço, então vá para local 250: 99. LDX 100 é indexado - some o registro índice ao endereço, $100 + 5 = 105$, e leia local 105: 7. Conte as etapas para mantê-los distintos: imediato 0, direto 1, indireto 2, indexado 1 (uma vez que o índice foi adicionado).
| Inglês | Chinês | Pinyin |
|---|---|---|
| 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
Rastreamento de um programa assembly
Para rastrear ele: faça uma tabela com colunas para PC, ACC, registro índice, cada variável e quaisquer flags. Passe pelas instruções, atualizando a tabela após cada uma; siga os ramos quando mudarem o PC; pare em END. Um padrão comum é um loop sobre um array usando endereçamento indexado.
Exemplo resolvido. Rastreie este programa. Endereço 200 contém 5 e endereço 201 contém 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
Escreva uma linha para cada instrução executada, preenchendo apenas as colunas que mudam:
| Instrução | ACC | 200 | 201 | Saída |
|---|---|---|---|---|
| início | 5 | 0 | ||
LDD 200 |
5 | |||
CMP #0 |
||||
JPE 108 |
não taken | |||
OUT |
caractere com código 5 | |||
DEC ACC |
4 | |||
STO 200 |
4 | |||
LDD 201 |
0 | |||
JMP 100 |
||||
LDD 200 |
4 |
e assim por diante, até LDD 200 carregar 0, a comparação definir a flag igual, JPE 108 ser taken e o programa terminar. Três coisas que o examinador verifica: um CMP não muda nenhum registro, apenas uma flag; um salto não taken ainda conta como executado; e OUT sai um caractere, então vai na coluna de saída, não na coluna ACC. "Diga o efeito de mudar LDD 10 para LDM #10": o ACC conteria o número 10 em vez do conteúdo do endereço 10.
4.3
Deslocamentos binários
Programa
| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| Demonstrar compreensão e realizar deslocamentos binários | Lógico, aritmético e cíclico Deslocamento para a esquerda, deslocamento para a direita |
| Demonstrar compreensão de como a manipulação de bits pode ser usada para monitorar/controlar um dispositivo | Realizar operações de manipulação de bits Testar e definir um bit (usando máscara de bits) |
| Etiqueta de Instrução | Opcode | Operando | Explicação |
| AND #n / Bn / &n | Operação AND bitwise do conteúdo do ACC com o operando |
| AND | Operação AND bitwise do conteúdo do ACC com o conteúdo de |
| XOR #n / Bn / &n | Operação XOR bitwise do conteúdo do ACC com o operando |
| XOR | Operação XOR bitwise do conteúdo do ACC com o conteúdo de |
| OR #n / Bn / &n | Operação OR bitwise do conteúdo do ACC com o operando |
| OR | Operação OR bitwise do conteúdo do ACC com o conteúdo de |
| LSL #n | Bits no ACC são deslocados logicamente n posições para a esquerda. Zeros são introduzidos na extremidade direita |
| LSR #n | Bits no ACC são deslocados logicamente n posições para a direita. Zeros são introduzidos na extremidade esquerda |
| Rótulo de uma instrução | |
| Fornece um endereço simbólico | |
| Todas as questões assumirão que há apenas um registrador de uso geral disponível (Acumulador) ACC denota Acumulador IX denota Registrador Indexado pode ser um endereço absoluto ou simbólico # denota um número decimal, ex. #123 B denota um número binário, ex. B01001010 & denota um número hexadecimal, ex. &4A |
Fonte: Programa Cambridge International
Um deslocamento lógico 逻辑移位 move todos os bits para a esquerda ou direita por algumas posições, preenchendo novas posições com 0.
- deslocamento à esquerda por 1 (
LSL #1) — bits movem-se para a esquerda, um 0 entra pela direita; para um número sem sinal isso é × 2. - deslocamento à direita por 1 (
LSR #1) — bits movem-se para a direita, um 0 entra pela esquerda; para um número sem sinal isso é integer ÷ 2.
Deslocar por $n$ posições multiplica ou divide por $2^{n}$. Exemplo: 00001011 (11) LSL #1 → 00010110 (22).
Bits deslocados fora da extremidade são perdidos, então a multiplicação só está correta enquanto eles eram zeros. LSL #2 no inteiro two's complement 11001010 dá 00101000: os dois 1s que caíram da esquerda foram embora, o bit de sinal mudou, e o resultado já não é mais quatro vezes o original.
Um deslocamento aritmético à direita mantém o bit de sinal para que um número negativo com sinal continue negativo. Um deslocamento cíclico 循环移位 (rotate) devolve o bit que cai numa extremidade de volta na outra, então nenhum bit é perdido.
"Mostre o resultado de um deslocamento aritmético à direita de 3 posições em 10011110": copie o bit de sinal em cada lugar vazio, 11110011. O mesmo deslocamento em 01011100 dá 00001011. Um deslocamento cíclico à esquerda de 1 em 10000110 dá 00001101: o 1 inicial reaparece à direita.

A diferença entre os dois deslocamentos à direita é um único bit. Pegue 11110000, que é 240 lido como sem sinal e $-16$ lido como com sinal. LSR #1 traz um 0 e dá 01111000 $= 120$, que é a metade correta de 240. ASR #1 copia o bit de sinal e dá 11111000 $= -8$, que é a metade correta de $-16$. Nenhum está errado — cada um reduz pelo metade sob uma leitura.

Manipulação de bits para monitoramento/controle
Dispositivos embutidos muitas vezes usam um bit 位 de um registro por sinal (ex. bit $n$ = LED $n$). Usando uma máscara 掩码 — máscara de bits — você pode:
- definir bit $n$:
R = R ORuma máscara com bit $n$ definido. - limpar bit $n$:
R = R ANDuma máscara com bit $n$ limpo e o resto definido. - alternar bit $n$:
R = R XORuma máscara com bit $n$ definido. - testar bit $n$:
R ANDa máscara, depois verifique se o resultado é diferente de zero.

Manipulação de bits é rápida, usa pouca memória e permite que um byte contenha até 8 estados liga/desliga.
No conjunto de instruções do exame estes são AND, OR e XOR com uma máscara escrita como operando decimal, binário ou hexadecimal. Com o ACC contendo 10101100:
| Instrução | Máscara | Resultado em ACC | Efeito |
|---|---|---|---|
AND B00001111 |
00001111 |
00001100 |
mantém apenas os quatro bits inferiores (limpa os outros) |
OR #1 |
00000001 |
10101101 |
define o bit menos significativo, deixando o resto inalterado |
XOR &FF |
11111111 |
01010011 |
inverte todos os bits |
AND B00001000 então CMP #0 |
00001000 |
00001000 |
testa bit 3: a comparação não é igual, então o bit 3 estava definido |
LSL #2 |
10110000 |
desloca à esquerda duas posições, perdendo os dois bits superiores | |
LSR #3 |
00010101 |
desloca à direita três posições, zeros entrando pela esquerda |
"Escreva a instrução que define o bit menos significativo em 1 e deixa os outros inalterados": OR #1, ou OR B00000001. Para limpar um bit use AND com uma máscara que tenha um 0 nesse lugar e 1s nos outros; para testar um bit, AND com uma máscara que tenha um 1 apenas nesse lugar, depois compare o resultado com zero. Em um dispositivo de monitoramento, um bit de um registro por sensor permite que um único AND verifique se um sensor específico está ligado, e um OR ativa o bit de controle de um atuador sem perturbar os outros.
Desloque e mascare os bits de um byte
Escolha um operador e veja cada bit resultante. Um deslocamento à esquerda (<<) moves every bit up one place (×2); a right shift (>>) move-os para baixo (÷2); AND com uma máscara limpa os bits que você não quer.
| Inglês | Chinês | Pinyin |
|---|---|---|
| bit/bɪt/ | 位 | wèi |
| mask/mæsk/ | 掩码 | yǎn mǎ |
4.3
Definições aceitas pelo examinador
Uma questão de definição é avaliada contra wording fixo. Aprenda estas exatamente, e dê apenas uma resposta.
| Termo | Definição |
|---|---|
| conceito de programa armazenado | as instruções do programa e os dados estão ambos armazenados na memória principal, e as instruções são buscadas e executadas uma de cada vez |
| registro | um local de armazenamento pequeno e muito rápido dentro do processador com um propósito específico |
| Contador de Programa | o registro que contém o endereço da próxima instrução a ser buscada |
| Registro de Endereço de Memória | o registro que contém o endereço do local de memória sendo lido ou gravado |
| Registro de Dados de Memória | o registro que contém o dado ou instrução acabou de ser lido de, ou prestes a ser gravado em, memória |
| Registro de Instrução Atual | o registro que contém a instrução atualmente sendo decodificada e executada |
| Acumulador | o registro de uso geral que contém o resultado da última operação aritmética ou lógica |
| memória cache | memória pequena e rápida próxima ao processador que contém instruções e dados frequentemente usados |
| interrupção | um sinal de um dispositivo ou programa que faz o processador pausar a tarefa atual e executar uma rotina de serviço de interrupção |
| linguagem assembly | uma linguagem de baixo nível em que cada instrução mnemônica corresponde a uma instrução de código de máquina |
| endereçamento imediato | o operando é o valor escrito na instrução |
| endereçamento direto | o operando é o conteúdo do endereço escrito na instrução |
| endereçamento indireto | o endereço na instrução contém o endereço do operando |
| endereçamento indexado | o endereço do operando é o endereço na instrução mais o conteúdo do registro índice |
| endereçamento relativo | o endereço do operando é dado como um offset em relação ao endereço da instrução atual |
| deslocamento lógico | cada bit se move para o número de posições especificado e zeros preenchem os lugares vazios |
4.3
Dicas de prova
- Aprenda o ciclo busca-execução em termos de transferência entre registros (PC, MAR, MDR, CIR, ACC) e o que incrementa o PC.
- Nomeie a função de cada registro; o ** barramento de endereços é unidirecional**, o barramento de dados é bidirecional.
- Diferencie os modos de endereçamento (imediato, direto, indireto, indexado) — uma questão frequente.
- Explique como a velocidade do clock, número de núcleos, tamanho do cache e comprimento da palavra afetam o desempenho.
- Para um deslocamento binário, declare se é lógico ou aritmético; um deslocamento à esquerda multiplica por 2, um deslocamento à direita divide por 2.
Erros comuns
- Dizer que o PC armazena a instrução atual, ou que o MDR armazena um endereço. O PC armazena o endereço da próxima instrução; o MDR armazena dados ou uma instrução, nunca um endereço.
- Deixar fora o incremento do PC da busca, ou colocá-lo após a execução. Ele ocorre assim que o endereço é copiado para o MAR.
- Ler
LDD 10como "carregar 10".LDD 10carrega o conteúdo do endereço 10;LDM #10carrega o número 10. - Colocar um valor na coluna ACC para
CMPouOUT. Uma comparação define apenas uma flag; uma saída vai para a coluna de saída. - Dizer que uma interrupção é tratada "imediatamente". O processador termina a instrução atual e verifica interrupções no final do ciclo.
- Usar um deslocamento lógico à direita em um número negativo em complemento de dois. Apenas um deslocamento aritmético mantém o bit de sinal.
Aulas interativas sobre este tópico
Passe por ele passo a passo, com exercícios de verificação instantânea.