Você está na página 1de 105

Processamento e

Linguagem de Mquina
O processador
Programao Assembler
(Linguagem de Mquina)
O PROCESSADOR
Literatura
Tanenbaum e Stallings
Abordagens similares mas divergentes
Foco maior em funcionamento ou arquitetura
Literaturas complementares

Arquiteturas recentes (online)


SOC System on a chip
Hewlett Packard: The Machine
Componentes
A Unidade de Controle e a Unidade Lgica e Aritmtica
constituem a Unidade Central de Processamento.
Dados e instrues precisam entrar no sistema, e
resultados saem dele.
Entrada/sada.
necessrio um armazenamento temporrio de cdigo e
resultados.
Memria principal/cache.
CPU e BUS

*Stallings
Registradores
Espao de trabalho (entrada/sada) no proc.
Quantidade (8-32/proc.), capacidade e funo
dependem do modelo da arquitetura
Nvel mais alto de memria

deciso muito importante na arquitetura


Tipos de Registradores

De propsito geral (podem ser combinados)


De dados
De endereos
De posio de memria de programa
Indicadores de condio (status)
Registrador de status
Comjunto de bits indicando
Condition Codes
Sign of last result
Zero
Carry
Equal
Overflow
Interrupt enable/disable
Supervisor Intel ring zero
Kernel mode
Allows privileged instructions to execute
Used by operating system
Not available to user programs
Exemplo de arq. de Registradores

*Stallings
Pentium 4 Registers

*Stallings
EFLAGS Register

*Stallings
Control Registers

*Stallings
Chips de CPU no passado
Chips de CPU hoje
Core CHIP
Die
Die
1 g. Core i7 Ivy Bridge (22nn)
6g
7g
Cannonlake (2017)
Cannonlake (2017)
Chips de CPU

Pinagem lgica de uma CPU genrica. As setas indicam sinais de entrada e sinais de
sada. Os segmentos de reta diagonal indicam que so utilizados vrios pinos. H um
nmero que indica quantos so os pinos para uma CPU especfica.

*Tanenbaum
O 8051

Pinagem fsica do 8051.


*Tanenbaum
O 8051

Pinagem lgica do 8051.


*Tanenbaum
O UltraSPARC III (2)

Principais caractersticas do ncleo de um sistema UltraSPARC III.


*Tanenbaum
O barramento ISA

O barramento PC/AT tem dois componentes:


a parte do PC original e a parte nova. *Tanenbaum
Barramentos de computador

Sistema de computador com vrios barramentos.

*Tanenbaum
Barramentos de computador

Exemplos de mestres e escravos de barramentos.


Largura do barramento

Crescimento de um barramento de endereo ao longo do tempo.

*Tanenbaum
Relgio do barramento

Temporizao de leitura em um barramento sncrono.

*Tanenbaum
Relgio do barramento

Especificao de alguns tempos crticos.


Barramentos assncronos

Operao de um barramento assncrono.


Operaes de barramento

Transferncia de bloco.
Operaes de barramento

Utilizao do controlador de interrupo 8259A.


Arbitragem de barramento

(a) rbitro de barramento centralizado de um nvel usando encadeamento em


srie (daisy chaining).
(b) O mesmo rbitro usando dois nveis.
Arbitragem de barramento (2)

Arbitragem de barramento descentralizada.


Pinagem lgica do Pentium 4

Pinagem lgica do Pentium 4.


Nomes em letras maisculas so
nomes oficiais usados pela Intel para
sinais individuais. Nomes em
maisculas e minsculas so grupos
de sinais relacionados ou descries
de sinais.
Paralelismo no barramento de memria
do Pentium 4

Requisies com paralelismo no barramento de memria do Pentium 4.


O barramento PCI

Arquitetura de um dos primeiros sistemas Pentium. Os barramentos representados


por linhas mais largas tm mais largura de banda do que os representados por
linhas mais finas, mas a figura no est em escala.
O barramento PCI

A estrutura do barramento de um Pentium 4 moderno.


Arbitragem de barramento PCI

O barramento PCI usa um rbitro de barramento centralizado.


Transaes no barramento PCI

Exemplos de transaes no barramento PCI de 32 bits. Os trs primeiros ciclos so


usados para uma operao de leitura, em seguida um ciclo ocioso e depois trs ciclos
para uma operao de escrita.
PCI Express

Sistema PCI Express.


Pilha de protocolos do PCI Express

(a) Pilha de protocolos do PCI Express.


(b) Formato de um pacote.
Barramento Serial Universal

Hub-raiz USB envia quadros a cada 1,00 ms.


Decodificao de endereo

Localizao de EPROM, RAM e PIO em nosso espao de endereo de 64 KB.


Decodificao de endereo (2)

Decodificao de endereo completo.


Decodificao de endereo (3)

Decodificao parcial de endereo.


Instruction
Cycle
Pipeline de
Instruo de 6
estgios
Linguagem de Mquina
Linguagem de mquina
Unidade de controle faz a leitura da prxima
instruo da memria (instruction pointer)
Cada operao tem um cdigo exclusivo, uma
sequncia de 8 bits indicando a operao:
Ex. ADD, MOVE, JUMP, BREAK.
L bloco de dados que segue a instruo, de acordo
com o cdigo dela
Um segmento de hardware aceita o cdigo e emite
os sinais de controle para transferncia de dados e
acionamento da ULA
Instruction Set Archtecture ISA
Op code Cdigo da instruo (binrio)
Smbolo nome da instruo (JMP, ADD, BRK)
Address posio de memria do dado
Data Entrada direta de dado (parmetro)
X86
1 byte
OP Codes
X64 OP Codes
Estrutura de uma instruo
http://porkrind.org/a2/
https://www.scullinsteel.com/apple2/
PROGRAM COUNTER OU INSTRUCTION POINTER
Tipos de Instrues
UCP: UNIDADE CENTRAL DE PROCESSAMENTO

UCP Didtico de 8 bits:


Estrutura Interna do Processador: Tpica von Neumann
Mem. Data Reg ULA: Unidade Lgica Aritmtica
Mem. Addr. Reg.
Interface com
Memria Instruc. Reg. MPC Endereo ROM
Program Counter
Controle Mem

R2 - Dados
R1 - Dados
Controle Dados
Microprograma
ROM
Acumulador 1K x 36 bit
A B (exemplo)

C, Z

ULA Operaes
ULA
Controle Shift
Shift Register

C
INSTRUES DE UM BYTE

AND REGISTRADOR X
Mem. Addr. Reg
Mem. Data Reg. Exemplo:
Instruc. Reg. MPC AND ACC, R1: (ACC ACC AND R1)
Program Counter
Stack Pointer 1: FETCH INSTRUO
Controle Mem Q1: PC Via de Endereos
Q2: Comando de Leitura
R2 - Dados Q3: Memria Via de Dados
R1 - Dados Q4: Via de Dados IR
Controle Dados Microprograma
ROM
Acumulador 1.024 x 36 bit 2: Acumulador = Acumulador AND R1
(exemplo) Q1: R1 Barramento B
A B
Q2: ULA: Operao AND
C, Z Q3: ULA: Reteno Barramento A
Q4: Barramento C Acumulador
ULA Operaes
ULA 3: PC = PC + 1
Controle Shift Q1: ULA: Bloqueia Barramento A
Shift Register
Q2: PC Barramento B
C Q3: ULA: Incrementa Barramento B
Q4: Barramento C PC
INSTRUES DE DOIS BYTES

AND CONSTANTE VALOR CONSTANTE


Mem. Addr. Reg
Mem. Data Reg.
Exemplo:
Instruc. Reg. MPC
AND ACC, 5A: (ACC ACC AND 5A)
Program Counter
Stack Pointer
Controle Mem 1: FETCH INSTRUO
R2 - Dados
R1 - Dados 2: PC = PC + 1
Controle Dados Microprograma
ROM 3: FETCH CONSTANTE
Acumulador 1.024 x 36 bit
A B (exemplo)
4: Acum. = Acum. AND Constante
C, Z
5: PC = PC + 1
ULA Operaes
ULA
Controle Shift
Shift Register

Exemplo: http://www.6502.org/tutorials/6502opcodes.html
INSTRUES DE TRS BYTES - 1

LOAD ENDEREO 1 ENDEREO 2 Exemplo:


LOAD A0F1: (ACC [A0F1])

Endereo de 16 bits 1: FETCH INSTRUO


2: PC = PC + 1
3: FETCH ENDEREO 1 (+signif.)
LEITURA DE UM DADO DA MEMRIA RAM: 4: PC = PC + 1
INSTRUO LOAD 5: FETCH ENDEREO 2 (-signif.)
Especificar o endereo de 16 bits da posio 6: MDR [ENDEREO]
da memria a ser lida Q1: MAR Via de Endereos
Q2: Comando de Leitura
Exemplo: leitura da posio A0F1, que Q3: Memria Via de Dados
contm o valor 7C Q4: Via de Dados MDR

MEMRIA RAM 7: Transferncia para Acumulador


FFFF ACC MDR
Q1: ULA: Bloqueia Barramento A
Acumulador Q2: MDR Barramento B
A0F1 7C 7C Q3: ULA: bypass Barramento B
Q4: Barramento C Acumulador
0000 8: PC = PC + 1
FLUXO DE INFORMAES PARA LEITURA

(A0F1) Memria RAM


A0F1
MAR: Memory Address

Via de
Via de Endereos Interna: 16 bits
Endereos
(7C)
MDR: Memory Data 7C
7C

Via de dados Interna: 8 bits Via de Dados

DADOS
WR
RD
P/D
Microprocessador
UCP: CONTROLE E ACESSO MEMRIA

MAR: Memory Address PC: Program Counter

Via de
Via de Endereos Interna: 16 bits
Endereos

MDR: Memory Data IR: Instruction Reg.


Bloco de
Memria

Via de dados Interna: 8 bits Via de Dados

DADOS PROGRAMAS
WR
RD
P/D
Microprocessador
Execuo da Instruo
EXECUO DE UMA INSTRUO

FETCH: LEITURA DE UMA INSTRUO DA MEMRIA

Processador Bus de endereo Memria


16 bits
16 bits
Program Counter
Endereo 0010 = C1

0011 = C2

0012 = C3
8 bits
Instruo 0013 = C4
Instruction Reg.
0014 = C5

Comando
Leitura

Processador: 8 bits dados e instrues 8 bits


Memria: 16 bits de endereo e 8 bits de dados: 64K x 8 = 512K bits
DIAGRAMA DE TEMPOS DO PROCESSADOR
CICLO DE INSTRUO

Ciclo de Mquina
Quadratura Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Clock: Oscilador

Q1

Q2

Q3

Q4

PC PC PC + 1

Fetch: leitura instruo


Executa instruo
Incrementa PC
EXECUO DE UMA INSTRUO

CICLO 1: FETCH

Processador Memria
16 bits
Q3
Program Counter
Endereo 0010 = C1
Q1 0011 = C2

0012 = C3
8 bits
Dados 0013 = C4
Instruction Reg.
0014 = C5
Q4
Comando
Leitura
Q2

Q1: Processador transfere PC para a Via de Endereos


Q2: Comando de Leitura: Memria decodifica o endereo
Q3: Memria transfere o contedo da posio do endereo para Via de Dados
Q4: Processador transfere Bus Dados para IR (registrador de instrues)
EXECUO DE UMA INSTRUO
MICROPROGRAMA E SEQUENCIALIZAO
Exemplo de montagem do MPC

MPC: MicroProgram Counter IR 8 bits


Endereo
IR MPC
ROM 8 bits
Program Counter
Controle Mem MPC 10 bits
0 0 - Q1
R1 0 1 - Q2
Controle Dados
1 0 - Q3
Microprograma 1 1 - Q4
ROM
1.024 x 36 bit
(exemplo) Endereo: 10 bits
C, Z

Sada:
ULA ROM
Operaes 36 bits 1.024 x 36 bit
ULA Sinais de
Shift Register Controle Shift Controle
EXECUO DE UMA INSTRUO
EXEMPLOS DE COMANDOS PARA ULA
MICROPROGRAMA - 1

Memria tipo ROM (Read Only Memory), extremamente rpida, com 10 bits de endereo, ou
seja 210 ou 1.024 registros.
Endereo da memria: registrador especial da UCP, chamado de MPC (Micro Program
Counter).
Tamanho do registro: 36 bits.

MPC 10 bits

Endereo: 10 bits

ROM
Sada: 1.024 x 36 bit
36 bits
35 ... ...1 0
... ...
Um registro de 36 bits
MICROPROGRAMA - 2

Tamanho do registro: cada bit do registro dever


Mem. Data Reg corresponder a um sinal de controle necessrio para a
Mem. Addr. Reg. operao da UCP. O seu estado desejado estar
Instruc. Reg. gravado na memria ROM.
Program Counter
Controle Mem

R2 - Dados
R1 - Dados MPC
Controle Dados

Controle Acum Endereo: 10 bits


Acumulador
A B
F0 Sada:
F1 ROM
36 bits 1.024 x 36 bit
ENA
ULA ENB Sinais de
Operaes INVA Controle
ULA INC
Controle Shift
Shift Register

C
MICROPROGRAMA 3

IR 8 bits
MPC formado por 10 bits (na nossa UCP didtica).
Vamos dividir o MPC em duas partes: uma parte fixa
formada pelos 8 primeiros bits, e uma parte varivel
MPC 10 bits
com os dois bits menos significativos. Utilizando um
0 0 - Q1 circuito contador de dois bits, e sincronizado pelo
0 1 - Q2 relgio da UCP, temos um gerador de endereos do
1 0 - Q3 MPC cujos dois bits menos significativos varia de 00
1 1 - Q4 a 11.
Se a parte fixa de 8 bits for preenchida pelos valores
lidos do IR (Instruction Register), temos um endereo
Endereo: 10 bits
de 10 bits que varre quatro posies sequenciais, de
Sada: IR-00 a IR-11.
36 bits Se para cada uma das quatro posies, atribuirmos
Sinais de ROM
1.024 x 36 bit ao contedo do registrador os sinais necessrios para
Controle a realizao das funes correspondentes aos quatro
passos Q1, Q2, Q3 e Q4, implementaremos o
mecanismo necessrio para a execuo do Ciclo de
Mquina da Instruo.
MICROPROGRAMA 4
ENA ENB
Contedo dos
RD Acc F1 INVA RD R1
registradores
IR: fixa var. WR Acc F0 INC WR R1

Q1 10101010 0 0

MPC: Q2 10101010 0 1
endereos
Q3 10101010 1 0

Q4 10101010 1 1

Exemplo:
Acumulador = Acumulador AND R1

Execuo:
Q1: R1 Barramento B
Q2: ULA: Operao AND
Q3: ULA: Reteno Barramento A
Q4: Barramento C Acumulador
MICROPROGRAMA 5
RESUMO
MPC: MicroProgram Counter
IR MPC Endereo
ROM
Program Counter
Controle Mem

R1
Controle Dados
Microprograma
Ciclo de Mquina
ROM
1.024 x 36 bit Q1 Q2 Q3 Q4
(exemplo)
Clock
C, Z
00 Q1
ULA Operaes
01 Q2
ULA

Shift Register Controle Shift 10 Q3

11 Q4
EXECUO DE UMA INSTRUO
CICLO 2: EXECUO DA INSTRUO:
Exemplo:
0 0 - Q1 Acumulador = Acumulador AND R1
MPC
0 1 - Q2
1 0 - Q3 Execuo:
1 1 - Q4 Q1: R1 Barramento B
B
Q2: ULA: Operao AND
R1 Q3: ULA: Reteno Barramento A
RD R1 Q4: Barramento C Acumulador
Microprograma
ROM Ciclo de Mquina
Acumulador 1.024 x 36 bit
A WR AC (exemplo) Q1 Q2 Q3 Q4

ULA RD R1
Operaes
ULA OP: AND
Shift Register
OP: HOLD A
C
WR AC
EXECUO DE UMA INSTRUO
CICLO 3: INCREMENTA O PROGRAM COUNTER (PC):

Mem. Addr. Reg PC = PC + 1


Mem. Data Reg.
Instruc. Reg. MPC Execuo:
Program Counter Q1: ULA: Bloqueia Barramento A
RD PC Q2: PC Barramento B
WR PC Q3: ULA: Incrementa Barramento B
R2 Q4: Barramento C PC
R1
Ciclo de Mquina
Microprograma
ROM Q1 Q2 Q3 Q4
Acumulador 1.024 x 36 bit
A B (exemplo)

OP: HOLD A

ULA RD PC
Operaes
ULA OP: INC B
Shift Register
WR PC
C
DIAGRAMA DE TEMPOS DO PROCESSADOR
CICLO DE INSTRUO

Ciclo de Mquina
Quadratura Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Clock: Oscilador

Q1

Q2

Q3

Q4

PC PC PC + 1

Fetch: leitura instruo


Executa instruo
Incrementa PC
EXECUO DE UMA INSTRUO
RESUMO: EXECUO DA INSTRUO ACC ACC AND R1
Mem. Addr. Reg
Mem. Data Reg. Um ciclo de Instruo =
Instruc. Reg. MPC Trs ciclos de mquina
Program Counter
1: FETCH
Controle Mem
Q1: PC Via de Endereos
R2 - Dados Q2: Comando de Leitura
R1 - Dados Q3: Memria Via de Dados
Controle Dados Q4: Via de Dados IR
Microprograma
ROM
2: Acumulador = Acumulador AND R1
Acumulador 1.024 x 36 bit
(exemplo) Q1: R1 Barramento B
A B
Q2: ULA: Operao AND
C, Z Q3: ULA: Reteno Barramento A
Q4: Barramento C Acumulador
ULA Operaes
ULA 3: PC = PC + 1
Controle Shift Q1: ULA: Bloqueia Barramento A
Shift Register Q2: PC Barramento B
Q3: ULA: Incrementa Barramento B
C
Q4: Barramento C PC
Mapeamento dos
Endereos
ACESSO MEMRIA DE DADOS: CICLO DE INSTRUES

Processador Memria

16 bits
Q3
MAR: Memory
Address Reg.
Endereo 0AF0 = D1

Q1 0AF1 = D2

0AF2 = D3
Q4 8 bits
MDR: Memory
Dados 0AF3 = D4
Data Reg. 0AF4 = D5

Comando
Leitura
ou Escrita
Q2

LEITURA DA MEMRIA ESCRITA NA MEMRIA


Q1: MAR Via de Endereos Q1: MAR Via de Endereos
Q2: Comando de Leitura: Memria decodifica MDR Via de Dados
Q3: Memria Via de Dados Q2: Comando de Escrita: Memria decodifica
Q4: Via de Dados MDR Q3: Via de Dados Memria
Q4: Estabilizao Memria
UCP E ACESSO A OUTROS DISPOSITIVOS

UCP MEMRIA
Velocidade
Largura (em bits)
Tipo de Sinal

BARRAMENTO ou VIA

DISCOS MONITOR IMPRESSORA


ENDEREAMENTO DE DISPOSITIVOS E/S

EXEMPLO PARA DISPOSITIVOS MAPEADOS EM MEMRIA


rea Total de 64K Bytes: Divididos com Programas, Dados e Dispositivos E/S

0000 a FFFF Hexadecimal FFFF


= 64 K Bytes 32K Bytes para Dados (RAM)

7FFF
16K Bytes para Dispositivos E/S
3FFF
0000 16K Bytes para Programas (ROM)
ENDEREAMENTO DE DISPOSITIVOS E/S

EXEMPLO PARA REA DE MEMRIA DE 64K Bytes:


reas Separadas de 64K Bytes para Programas, Dados e Dispositivos E/S (uso dos sinais M/IO e P/D)

FFFF FFFF FFFF


64K Bytes 64K Bytes 64K Bytes
Dados Programas Dispositivos
(RAM) (ROM) E/S
0000 0000 0000

UCP P/D: Programa ou Dados


M/IO: Memria ou Dispositivos E/S
P/D
M/IO
Pilhas e Stack Pointer
STACK-POINTER: PONTEIRO DE PILHA
PILHA
Pilha:
Estrutura de Dados do tipo FILO
Tamanho (First In Last Out)
entrada
da Pilha sada

Stack Pointer: contm o endereo da memria (ponteiro) onde est localizado o ltimo
dado escrito (inserido) na pilha.
Exemplo: Se o ltimo dado da pilha estiver gravado no endereo 0AF4 (em hexadecimal), o
ponteiro ir conter o valor 0AF4.

PILHA INSERIR NA PILHA: PUSH RETIRAR DA PILHA: POP

Dado novo PILHA PILHA


Dado lido
Stack Pointer
(0AF4) Stack Pointer + 1
(0AF5) Stack Pointer -1
(0AF3)

Incrementa SP antes Decrementa SP depois


INSTRUO INSERO NA PILHA: PUSH ACC
Quatro ciclos de mquina
1: FETCH da Instruo PUSH
Mem. Addr. Reg Q1: PC Via de Endereos
Mem. Data Reg. Q2: Comando de Leitura
Instruc. Reg. MPC Q3: Memria Via de Dados
Program Counter Q4: Via de Dados IR
Stack Pointer
2: SP = SP + 1
Controle Mem
Q1: ULA: Bloqueia Barramento A
R2 - Dados Q2: SP Barramento B
R1 - Dados Q3: ULA: Incrementa Barramento B
Controle Dados Microprograma Q4: Barramento C SP
ROM
Acumulador 1.024 x 36 bit 3: ESCRITA NA MEMRIA
A B (exemplo) Q1: SP Via de Endereos
C, Z ACC Via de Dados
Q2: Comando de Escrita
ULA Q3: Via de Dados Memria
Operaes Q4: Estabilizao Memria
ULA
Controle Shift 4: PC = PC + 1
Shift Register
Q1: ULA: Bloqueia Barramento A
C
Q2: PC Barramento B
Q3: ULA: Incrementa Barramento B
Q4: Barramento C PC
Interrupo
INTERRUPES

SOLICITAO DE INTERRUPO
- Enviados pelos dispositivos que
necessitam de um atendimento
imediato pelo processador
- Interrupes so identificados Controlador
individualmente de Interrupes
- Possuem prioridades diferenciadas IRQ 0
RELGIO
IRQ 1
TECLADO
IRQ 2
MOUSE
IRQ 3
IRQ 4
IRQ 5
INT INT
IRQ 6
INTA INTA DISCO
IRQ 7
WR WR
RD RD
CS CS

Dados: D0~D7

Endereo: A0 ~ A2
UCP
SOFTWARE: TRATAMENTO DE INTERRUPES
Programa em execuo PILHA
Program Counter

Stack Pointer + 1

Program Counter INTERRUPO X

PC + 1 Rotina de Rotina de
Tratamento X Tratamento Y

Tratamento da Interrupo:
1. Identifica a origem da Interrupo
2. Salva o Program Counter (PC) na pilha
3. Carrega o PC com o endereo da rotina de
tratamento correspondente Interrupo
4. Executa a rotina de tratamento
5. Retorna ao ponto antes da Interrupo:
(retira o valor do PC da pilha e restaura)
INSTRUES DE TRS BYTES - 2

GOTO ENDEREO 1 ENDEREO 2

Exemplo:
Endereo de 16 bits GOTO 203F

SALTO INCONDICIONAL: INSTRUO GOTO ou 1: FETCH INSTRUO


JUMP 2: PC = PC + 1
Especificar o endereo de 16 bits da prxima 3: FETCH ENDEREO 1 (+signif.)
4: PC = PC + 1
posio do programa 5: FETCH ENDEREO 2 (-signif.)
6: PC ENDEREO
0000

GOTO Program Counter


01E0 203F Antes da instruo GOTO: 01E0

Depois da instruo: 203F


INSTRUES DE TRS BYTES - 3

CALL ENDEREO 1 ENDEREO 2

Exemplo:
Endereo de 16 bits CALL 203F
CHAMADA DE ROTINA: INSTRUO CALL
1: FETCH INSTRUO
Especificar o endereo de 16 bits da posio da rotina
2: PC = PC + 1
(01E0) PILHA 3: FETCH ENDEREO 1 (+signif.)
Programa PC 4: PC = PC + 1
Principal 5: FETCH ENDEREO 2 (-signif.)
Stack Pointer + 1 6: SP = SP + 1
0000
7: [SP] PC
8: PC ENDEREO
Rotina
203F
01E0 CALL PILHA RETURN
203F (01E0)
01E1
1: FETCH INSTRUO
PC
2: PC [SP]
3: SP = SP - 1
RETURN Stack Pointer -1 4: PC = PC + 1
NVEIS DE SUB-ROTINAS

Chamada de Rotinas de dentro das Rotinas


CALL 203F
Programa
(01E0) PILHA
Principal
PC
0000
Stack Pointer + 1

Rotina
203F
01E0 CALL
203F
01E1
Rotina
0592 CALL 0592
CALL
205E 0592 (205E)
PILHA
PC

Stack Pointer + 1
01E0
RETURN RETURN

Estouro da Pilha: Stack Pointer Overflow


INSTRUES: RESUMO
Instrues so executadas em ciclos de mquinas, que estabelecem os passos
necessrios at a sua execuo. O nmero de ciclos depende da instruo.
Instrues possuem tamanhos diferentes em bytes, sendo compostas por um
cdigo de operao (Op Codes) seguido por parmetros que podem ser valores
constantes, endereos, etc.

Tamanho: 1 byte OPCODE

2 bytes OPCODE VALOR

3 bytes OPCODE ENDEREO 1 ENDEREO 2

Etapas tpicas de um ciclo de instrues:


1 - Fetch da instruo, da memria para o registrador de instrues (IR)
2 - Incrementa o contador de instrues (PC), apontando-o para a prxima instruo
3 - Determina o tipo de instruo carregada (Decode)
4 - Se a instruo utiliza mais parmetros, busca por fetch sucessivos
5 - Se a instruo realiza acesso memria (leitura ou escrita), efetua o acesso
6 - Executa a instruo
7 - Vai para a etapa 1 para iniciar a execuo da prxima instruo
Exemplos de Linguagens
de Mquina
EXEMPLO DE ASSEMBLY DE UM PROCESSADOR HIPOTTICO
OBS: PROCESSADOR DE 8 BITs E ENDEREAMENTO DE 16 BITs

OPERAES COM INTEIROS BITs DE ESTADO (do Acumulador)


ADD 1-2 (1 ou 2 bytes) Z (Zero): = 1 se Acumulador = 0
C (Carry): = se Vai-um aps soma
SUB 1-2
AND 1-2 OPERANDO: REGISTRADORES ESPECIAIS
IOR 1-2 - Registrador (1 byte) ACC (Acumulador)
XOR 1-2 - Constante (2 bytes) PC (Program Counter)
COMP 1 IR (Instruction Register)
CLR 1 FORMATO: SP (Stack Pointer)
MAR (Memory Address Reg)
INC 1 Instruo Destino, Origem MDR (Memory Data Reg)
DEC 1 IND (Indirect Address Reg)
OPERAES DE DESLOCAMENTO REGISTRADORES DE DADOS
RL 1 (Rotate Left Acumulador) R0 a R7 Registradores de uso geral
RR 1 (Rotate Right Acumulador)
OPERAES DE FLUXO DE CONTROLE
OPERAES DE FLUXO DE DADOS GOTO 3 (Endereo 2 bytes)
MOV 1 (Acumulador Registrador) CALL 3
MOVC 1 (Acumulador Constante) RET 1 (Return)
PUSH 1 (Insere na Pilha) Condicionais
POP 1 (Retira da Pilha) JZ 3 (Jump on Zero)
LOAD 3 (Memria: Endereo 2 bytes) JNZ 3 (Jump on Non-Zero)
SAVE 3 (Memria: Endereo 2 bytes) JC 3 (Jump on Carry)
IN 3 (Dispositivos I/O: Endereo 2 bytes) JNC 3 (Jump in Non-Carry)
OUT 3 (Dispositivos I/O: Endereo 2 bytes)
NOP 1 (No Operation)
INSTRUES DE MQUINA: Exemplos Reais
PROGRAMAO ASSEMBLER

Simulator genrico
https://schweigi.github.io/assembler-simulator/
Editores Assembrer 6502:
http://www.asm80.com/
http://skilldrick.github.io/easy6502/
Compilador 8080 e z80:
http://asdasd.rpg.fi/~svo/i8080/
http://clrhome.org/asm/
Compilador online x86
https://www.tutorialspoint.com/compile_assembly_online.php
Exerccio
EXERCCIO DE PROGRAMAO EM ASSEMBLY

Utilizando o assembly 6502 (http://www.6502.org/tutorials/6502opcodes.html) e o emulador da pgina anterior,


desenvolver em linguagem de mquina (Assembly) um programa que implementa um relgio digital.

Dados:
- um gerador de sinais no endereo F000, que gera pulsos a cada 1 segundo;
- um display no endereo F001, que apresenta as horas;
- um display no endereo F002, que apresenta os minutos;
- um display no endereo F003, que apresenta os segundos.
1 segundo
Utilizar rtulos (labels) para identificar posies de endereos no programa.
O gerador de sinais e displays so dispositivos de E/S (I/O)

F000: Gerador F001: Horas F002: Minutos F003: Segundo


RD WR WR WR
UCP
CS CS CS CS

Dados: D0~D7

Endereo: A0 ~ A15

WR
RD

M/IO