Professional Documents
Culture Documents
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
*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
*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
*Tanenbaum
Barramentos de computador
*Tanenbaum
Relgio do barramento
*Tanenbaum
Relgio do barramento
Transferncia de bloco.
Operaes de barramento
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
Exemplo: http://www.6502.org/tutorials/6502opcodes.html
INSTRUES DE TRS BYTES - 1
Via de
Via de Endereos Interna: 16 bits
Endereos
(7C)
MDR: Memory Data 7C
7C
DADOS
WR
RD
P/D
Microprocessador
UCP: CONTROLE E ACESSO MEMRIA
Via de
Via de Endereos Interna: 16 bits
Endereos
DADOS PROGRAMAS
WR
RD
P/D
Microprocessador
Execuo da Instruo
EXECUO DE UMA INSTRUO
0011 = C2
0012 = C3
8 bits
Instruo 0013 = C4
Instruction Reg.
0014 = C5
Comando
Leitura
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
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
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
R2 - Dados
R1 - Dados MPC
Controle Dados
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
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):
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
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
UCP MEMRIA
Velocidade
Largura (em bits)
Tipo de Sinal
BARRAMENTO ou VIA
7FFF
16K Bytes para Dispositivos E/S
3FFF
0000 16K Bytes para Programas (ROM)
ENDEREAMENTO DE DISPOSITIVOS E/S
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.
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
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
Exemplo:
Endereo de 16 bits GOTO 203F
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
Rotina
203F
01E0 CALL
203F
01E1
Rotina
0592 CALL 0592
CALL
205E 0592 (205E)
PILHA
PC
Stack Pointer + 1
01E0
RETURN RETURN
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
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)
Dados: D0~D7
Endereo: A0 ~ A15
WR
RD
M/IO