Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados...
Transcript of Tópico: Introdução à Organização de Computadores · – Cada palavra é uma unidade de dados...
Instituto Federal de Minas Gerais
Campus Formiga
Tópico: Introdução à Organização de Computadoresde Computadores
Introdução à ComputaçãoProf. Diego Mello
Primeiros Computadores• No princípio, programar um computador era um feito
mais de engenharia elétrica do que de projeto de algoritmos
• Programar era sinônimo de conectar cabos à plugues
Diagrama esquemático do ENIAC.do ENIAC.
Fonte: Adaptado de [3]
Primeiros ComputadoresDois acumuladores do ENIAC ligados por fio para realizar uma adição.
As luzes de neon mostram os números +1203762893 e +3033331112.
Fonte: Computer History Museum
Primeiros Computadores
Programadoras em frente ao painel de controle do ENIAC.
Fonte: Computer History Museum
Primeiros Computadores
Um engenheiro do ENIAC e uma programadoraverificam a configuração próximo dos racks
multiplicadores. Os 20 acumuladores eram sua unidade funcional primária, unidade funcional primária, mas o ENIAC também tinha unidades especiais para multiplicação, divisão e raízquadrada.
Fonte: Computer HistoryMuseum.
Arquitetura de Von Neumann
• Nos primeiros computadores, havia necessidade de reconfigurar os cabos para cada novo problema a se resolver
• Mauchly e Eckert (ENIAC) – Imaginaram uma forma de armazenar as instruções do programa,
evitando o trabalho entediante de recabear o sistema. Idéia base para o EDVAC (1944).para o EDVAC (1944).
• Em 1945, John Von Neumann publica o conceito de programa armazenado– Sequência de instruções armazenados na memória para serem
usados pela máquina no seu processamento (programa)
– Computador pode ser usado como um dispositivo de propósito geral
Arquitetura de Von Neumann: Características
• Dispositivo de entrada no qual dados e instruções
podem ser inseridos
• Um armazenamento onde resultados podem ser inseridos e de onde instruções e dados podem ser inseridos e de onde instruções e dados podem ser buscados
• Uma unidade aritmética para processar dados
• Uma unidade de controle para buscar, interpretar e executar instruções a partir do armazenamento
• Um dispositivo de saída para entregar os resultados
para o usuário
Arquitetura de Von Neumann
• CPU– Registradores
– ALU
– Controle
• Memória
Fonte: Adaptado de [4]
• Memória
• Sistema I/O
Arquitetura de Von Neumann
• Memória– Células de memória arranjadas na forma de diversas palavras
– Cada palavra é uma unidade de dados que pode ser lida ou escrita
– Cada palavra tem um endereço
• Registradores• Registradores– Palavras de memória especiais, embutidas na CPU
– Contador de Programa (PC), Registrador de Instrução (IR), Acumuladores,
Memory Data Register (MDR) e Memory Address Register (MAR)
• Unidade Aritmética/Lógica (ALU)– Cálculos
– Comparações
– Realiza as operações aritméticas e lógicas nos registradores ou memória
Arquitetura de Von Neumann
• Em algumas implementações, existe um registrador especial para separar os dados das instruções na memória sequencial.sequencial.
• Instruction Pointer ou Program
Counter é um registro especial, que guarda o endereço da instrução a ser executada no próximo ciclo.
Fonte: Adaptado de [6]
Arquitetura de Von Neumann
• Unidade de Controle– Contador de Programa (PC):– Registrador de Instrução (IR)
• Contador de Programa– Contém o endereço da próxima instrução a ser carregada
• Registrador de Instrução– Contém a instrução buscada da memória para execução
• Sistema de Entrada/Saída– Acesso aos dispositivos externos à CPU
• Barramento– Estrutura na qual os dados e endereços fluem– O fluxo é gerenciado pela unidade de controle, por meio de sinais
Arquitetura de Von Neumann
• Ciclo de Execução de Von Neumann
– A próxima instrução a ser executada, cujo endereço é obtido do PC, é buscada da memória e armazenada no IR
– Instrução é decodificada
– Operandos são buscados da memória e armazenados em
registradores da CPU
– A instrução é executada na ALU
– O resultado é transferido dos registradores da CPU para a memória
Refinamento: Von Neumann + Sistema de Barramento
Fonte: Adaptado de [2]Arquitetura dos computadores modernos se assemelhaà esse modelo.
Organização de Sistemas Computacionais: Hierarquia de Níveis
Arquitetura, Compiladores, Linguagens Formais, Teoria Computação, Paradigmas
AED, Projeto de Algoritmos, Paradigmas de Programação
Eng. Software, AED, Programação, BD, IHM, SI
Fonte: Adaptado de [3]
Lógica, Eletrônica Digital, Sistemas Digitais, Arquitetura
Arquitetura/Organização de Computadores,
Microprocessadores, Progr.
Organização de Comp., Microprocessadores, Progr.
Sistemas Operacionais, Sistemas Distribuídos, Redes
Abstração de Memória
• Array de células adjacentes, cada qual capaz de armazenar 1 bit de informação: 0 ou 1.
• Estas células são organizadas para formar grupos de tamanho fixo.– 1 byte = 8 bits– 1 byte = 8 bits
• Word: a menor quantidade de memória endereçável
• À cada word está associado um endereço– Local da memória onde a word está armazenada.– Usado nas operação de memory read e memory write.
Abstração de Memória
Fonte: Adaptado de [8]
Memory Write (Escrita)
• A CPU carrega a word a ser escrita na memória para no registrador Memory Data Register (MDR)
• A CPU carrega o endereço onde a word deverá ser escrita no registrador Memory Address Registerescrita no registrador Memory Address Register(MAR)
• Um sinal especial, denominado de write, é gerado pela CPU para indicar que a word armazenada no MDR deve ser gravada no endereço contido no MAR.
Memory Write (Escrita)
Fonte: Adaptado de [8]
Memory Read (Leitura)
• O endereço da word a ser recuperada da memória é armazenado no Memory Address Register (MAR)
• Um sinal de read é gerado pela CPU para indicar que a word cujo endereço está anotado no MAR deve ser word cujo endereço está anotado no MAR deve ser recuperado da memória e armazenado no registrador Memory Data Register (MDR).
• Após um determinado tempo (atraso de leitura da memória) a word requerida estará armazenada no registrador MDR e está pronta para ser lida pela CPU
Memory Read (Leitura)
Fonte: Adaptado de [8]
Pilha
• É uma estrutura de dados onde o último item (dado) armazenado é o primeiro a ser recuperado.
• É util para fazer chamadas de função durante a • É util para fazer chamadas de função durante a execução de um programa.
– Argumentos da função são empilhados antes da chamada
– A chamada é feita e desloca a execução do programa para outra parte do código
– Dentro da função os argumentos são lidos e processados
Operações em Pilha
• Registro:
– Stack Pointer (SP): marca o topo da pilha
• Operação Push• Operação Push
– Insere uma word no topo da pilha
• Operação Pop
– Recupera a word do topo da pilha
Operações em Pilha
Inserindo o valor 5A na pilha com PUSH
Fonte: Adaptado de [8]
Retirando o valor 5A na pilha com POP
Conjunto de Instruções
• Conjunto de Instruções (Instruction Set): é o vocabulário de comandos entendido por uma dada arquitetura.
• Cada arquitetura tem seu próprio conjunto de instruções
• Entretando, a hierarquia de camadas dos sistemas computacionais permite que o mesmo programa rode em arquiteturas compatíveis.
Operandos
• Qualquer informação envolvida em uma operação de CPU precisa ser endereçada.
• Na terminologia de computação, denominamos essa • Na terminologia de computação, denominamos essa informação de operando.
• Nas instruções, temos
– opcode: qual é a operação a ser realizada
– endereço: local onde se aplica a operação
Operandos
• Operação / Operando Origem / Operando Destino
• Exemplo de operação– add, sub, write e read
• Operando de Origem– Constante, Valor na Memória, Valor no Registrador
• Operando de Destino– Registrador ou Endereço de Memória
Tipos de Instrução: Movimentação de Dados
• São instruções usadas para movimentar dados entre as diferentes unidades da máquina
Operacao Descrição
MOVEMove uma word ou bloco de dados de uma origem (registrador ou
• LOAD R1 , R2
• STORE 1022, R1
• MOVE R2 , 2045
MOVEmemória) para um destino
LOAD Carrega dados da memória para um registrador
STORE Armazena dados de um registrador para a memória
PUSH Armazena dados de um registrador para a pilha
POP Recupera dados da pilha para um registrador
Tipos de Instrução: Aritméticas e Lógicas
• São usadas para realizar operações aritméticas e lógicas nos conteúdos de registradores e memória
Operacao Descrição
ADD Soma aritmética de dois operandos
SUB Diferença aritmética de dois operandos
• ADD R1, R2
• SUB R1, R2, R0
• INC R1
SUB Diferença aritmética de dois operandos
MULT Produto de dois operandos
DIV Divisão de dois operandos
INC Incrementa o conteúdo de um registrador em 1 unidade
DEC Decrementa o conteúdo de um registrador em 1 unidade
Tipos de Instrução: Aritméticas e Lógicas
• São usadas para realizar operações aritméticas e lógicas nos conteúdos de registradores e memória
Operacao Descrição
AND Realiza o E lógico de dois operandos
OR Realiza o OU lógico de dois operandos
• AND R1, R2
• NOT R1
• SHIFT R1
OR Realiza o OU lógico de dois operandos
XOR Realiza o OU Exclusivo de dois operandos
NOT Realiza o complemento de um operando
SHIFT Deslocamento do conteúdo de um registrador
COMPARE Realiza a comparação lógica de dois operandos e seta o flag correspondente
ROTATE Rotação do conteúdo de um registrador
Tipos de Instrução: Controle de Sequência
• Instruções de sequência são usadas para mudar a sequência na qual as instruções são executadas
• Tipos– Branching incondicional: Jump
– Branching condicional: Jump de acordo com os flags– Branching condicional: Jump de acordo com os flags
– Call
• Independente do tipo, todas alteram o registro contador de programa (PC)
• Pode ser usada para fazer repetições
Tipos de Instrução: Controle de Sequência
• JUMP 950 ; Incondicional
FLAG Valor
Negative (N) 1 se o resultado da operação mais recente é negativo, 0 caso contrário
Zero (Z) 1 se o resultado da operação mais recente é zero, 0 caso contrário
Overflow (V) 1 se o resultado da operação mais recente causa overflow, 0 caso contrário
Carry (C) 1 se o resultado da operação mais recente resulta em um 'vai um', 0 caso contrário
JUMP 950 ; Incondicional
• JNZ 950 ; Jump se != 0
• JNEG 100 ; Jump se Negativo
• JE 1250 ; Jump se == 0
• JGE 3000 ; Jump se >= 0
• JLE 5000 ; Jump se <= 0
Tipos de Instrução: Controle de Sequência
• Exemplo de laço com condicional
50 LOAD 3, R0
51 LOAD 0, R1
52 LOAD 100, R252 LOAD 100, R2
53 LOOP: ADD R0, R1, R1
54 DEC R2
55 JNZ LOOP
• Qual será o valor contido no registrador R2 após a execução do código acima?
Tipos de Instruções: Controle de Sequência
• Instruções CALL são usadas para fazer com que a execução de um programa seja transferido para uma sub-rotina.
• Execução retorna para o código principal após um RET
• Implementam as chamadas de função das linguagens alto nível
Tipos de Instrução: Controle de Sequência
...
50 CLEAR R0
51 MOV 5, R1
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505
...
500 17
Exemplo: Empregando CALL e RET para deslocar o controle de fluxo do programa para uma sub-rotina
500 17
501 13
502 10
503 5
504 55
505 0
...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
...
para uma sub-rotina
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
0
XXXX
50
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
0
5XX
51
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
0
5500
52
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
0
5500
53
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
17
5500
1250
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
17
5501
1251
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
17
4501
1252
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
17
4501
1253
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
30
4501
1250
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
30
4502
1251
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
30
3502
1252
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
30
3502
1253
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
504 55
505 0
40
3502
1250
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
40
3503
1251
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
40
2503
1252
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
40
2503
1253
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
45
2503
1250
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
45
2504
1251
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
45
1504
1252
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
45
1504
1253
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
1504
1250
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
1505
1251
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
0505
1252
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
0505
1253
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
0505
1254
504 55
505 0
Tipos de Instrução: Controle de Sequência
• Exemplo:
...
50 CLEAR R0
51 MOV 5, R1
...
500 17
501 13
502 10
503 5
504 55
R0
R1
R2
PC
52 MOV 500, R2
53 CALL SOMA
54 MOVE R0, 505...
1250 SOMA: ADD R0,(R2),R0
1251 INC R2
1252 DEC R1
1253 JGE SOMA
1254 RET
100
0505
54
504 55
505 100
Tipos de Instrução: Entrada e Saída
• Instruções de I/O são usados para transferir dados entre o computador e seus periféricos
• IN: transfere dados de um dispositivo de entrada para o processadorprocessador– Acessa o Input Data Register através do endereço do dispositivo
– Coloca o resultado lido no IDR no acumulador
• OUT: transfere dados do processador para um dispositivo de saída– Acessa o Output Data Register através do endereço do
dispositivo
– Coloca o valor do acumulador no ODR
Ex: Conjunto de Instruções Z80Mnemonic: Description: Mnemonic: Description:
ADC ADD WITH CARRY NOP NO OPERATION
ADD ADD OR --
AND LOGICAL AND OTDR OUTPUT, DEC HL, DEC B, REPEAT IF B>0
BIT BIT TEST OTIR OUTPUT, INC HL, DEC B, REPEAT IF B>0
CALL CALL SUB ROUTINE OUT OUTPUT TO PORT
CCF COMPLEMENT CARRY FLAG OUTD OUTPUT, DEC HL, DEC B
CP COMPARE OUTI OUTPUT, INC HL, DEC B
CPD COMPARE AND DECREMENT POP POP FROM STACK
CPDR COMPARE DECREMENT AND REPEAT PUSH PUSH INTO STACK
CPI COMPARE AND INCREMENT RES RESET BIT
CPIR COMPARE INCREMENT AND REPEAT RET RETURN FROM SUB ROUTINE
CPL COMPLEMENT ACCUMULATOR RETI RETURN FROM INTERRUPT
DAA DECIMAL ADJUST ACCUMULATOR RETN RETURN FROM NON MASKABEL INTERRUPT
DEC DECREMENT RL ROTATE LEFT registerDEC DECREMENT RL ROTATE LEFT register
DI DISABLE INTERRUPTS RLA ROTATE LEFT ACUMULATOR
DJNZ DEC JUMP NON-ZERO RLC ROTATE LEFT THROUGH CARRY register
EI ENABLE INTERRUPTS RLCA ROTATE LEFT THROUGH CARRY ACCUMULATUR
EX EXCHANGE REGISTER PAIR RLD ROTATE LEFT DIGIT
EXX EXCHANGE ALTERNATE REGISTERS RR ROTATE RIGHT register
HALT HALT, WAIT FOR INTERRUPT OR RESET RRA ROTATE RIGHT ACCUMULATOR
IM INTERRUPT MODE 0 1 2 RRC ROTATE RIGHT CIRCULAR register
IN INPUT FROM PORT RRCA ROTATE RIGHT CIRCULAR ACCUMULATOR
INC INCREMENT RRD ROTATE RIGHT DIGIT
IND INPUT, DEC HL, DEC B RST RESTART
INDR INPUT, DEC HL, DEC B, REPEAT IF B>0 SBC SUBTRACT WITH CARRY
INI INPUT, INC HL, DEC B SCF SET CARRY FLAG
INIR INPUT, INC HL, DEC B, REPEAT IF B>0 SET SET BIT
JP JUMP SLA SHIFT LEFT ARITHMETIC register
JR JUMP RELATIVE SRA SHIFT RIGHT ARITHMETIC register
LD LOAD DATA TO/FROM REGISTERS/MEMORY SRL SHIFT RIGHT LOGICAL register
LDD LOAD DECREMENT SUB SUBTRACTION
LDDR LOAD DECREMENT AND REPEAT XOR EXCLUSIVE OR
LDI LOAD AND INCREMENT
LDIR LOAD INCREMENT AND REPEAT
NEG NEGATE ACCUMULATOR 2'S COMPLEMENT
Ex: Conjunto de Instruções PIC
Ex: Conjunto de Instruções 8086
Arquitetura 8086
Arquitetura 8086
• AX (AH / AL): Acumulador– Aritmética, Lógica e Transferência de Dados
– Multiplicação/Divisão
– Entrada/Saída
• BX (BH / BL): Registro de Endereço Base
Arquitetura 8086
• CX (CH / CL): Contador
– Segmentos de código iterativo usando a instrução LOOP
– Operações repetitivas em string usando a instrução REP
– Quantidade (CL) de bits a rotacionar ou deslocar
Arquitetura 8086
• DX (DH / DL): Registro de Dados
– Concatena DX:AX em registros de 32 bits para algumas operações de MULT e DIV
– Especifica o endereço de portas em operações IN e OUT
Arquitetura 8086
• SI: Indexador de Origem (Source index Register)
– Pode ser usado para apontar para um endereço
– Usado como origem em algumas instruções de string
– Endereço de offset relativo a DS
Arquitetura 8086
• DI: Indexador de Destion (Destination index Register)
– Pode ser usado para apontar para um endereço
– Usado como destinoem algumas instruções de string
– Endereço de offset relativo a ES
Arquitetura 8086
• BP (Base Pointer)– Usado para acessar parâmetros passados para a pilha– Endereço de offset relativo a SS
• SP (Stack Pointer)– Aponta para o item no topo da pilha– Endereço de offset relativo a SS
Arquitetura 8086
• CS: Code Segment– Aponta para o segmento que contém o código
• DS: Data Segment– Aponta para o segmento que contém as variáveis do programa
• ES: Extra Segment– Segmento extra, usado de acordo com o que o programador quiser
• SS: Stack Segment– Aponta para o segmento que contém a pilha
Arquitetura 8086
• IP: Instruction Pointer
– Aponta para a próxima instrução a ser executada
– Endereço de offset relativo à CS
Arquitetura 8086
• Carry Flag (CF)
– 1 quando houver um overflow sem sinal (‘vai um’): 255 + 1 = 0
• Parity Flag (PF)
– 1 quando houver um número par de bits 1 no resultado
• Auxiliary Flag (AF)
– 1 quando houver um overflow sem sinal em um nibble
Arquitetura 8086
• Zero Flag (ZF)
– 1 quando o resultado de uma operação resulta zero
• Sign Flag (SF)
– 1 quando o resultado é negativo (tem sinal)
• Interrupt Enable Flag (IF)
– 1 quando a CPU reage a uma interrupção de dispositivo externo
Arquitetura 8086
• Direction Flag (DF)
– Processamento de cadeira de dados. 1 se processamento for pra ordem direta, 0 se processamento for ordem reversa
• Overflow Flag (VF)
– 1 quando houver overflow com sinal (100 + 50)
Linguagem de Montagem (Assembly)
#include <stdio.h>
void Testa(int num1, int num2)
{
if(num1 < num2)
{
printf("Hello World\n");
}}
}
void main()
{
int a;
int b;
a = 222;
b = 333;
Testa(a,b);
}
Compilação: # gcc codigo.c -S -masm=intel -o codigo.asm
Linguagem de Montagem.file "codigo.c"
.intel_syntax noprefix
.section .rodata
.LC0:
.string "Hello World"
.text
.globl Testa
.type Testa, @function
Testa:
.LFB0:
.cfi_startproc
push rbp
.LFE0:
.size Testa, .-Testa
.globl main
.type main, @function
main:
.LFB1:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
sub rsp, 16
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
mov eax, DWORD PTR [rbp-4]
cmp eax, DWORD PTR [rbp-8]
jge .L1
mov edi, OFFSET FLAT:.LC0
call puts
.L1:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.cfi_def_cfa_register 6
sub rsp, 16
mov DWORD PTR [rbp-8], 222
mov DWORD PTR [rbp-4], 333
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
mov esi, edx
mov edi, eax
call Testa
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size main, .-main
.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5)
4.6.3"
.section .note.GNU-stack,"",@progbits
Importante!
• Princípio chave dos computadores atuais– Instruções são armazenadas na memória como números
– Programas são armazenados na memória para serem lidos ou escritos, porém como números
• Como instruções são armazenadas como números• Como instruções são armazenadas como números– Programas são distribuídos como arquivos de números
binários
– Computadores podem herdar programas prontos que sejam compatíveis com seu conjunto de instruções
– ‘Compatibilidade binária’ -> Indústria se alinha com um pequeno número de arquiteturas de conjunto de instruções
Linguagem de Máquina
• Linguagem de máquina: Representação binária usada para comunicação dentro de um sistema computacional
• Código de máquina: sequencia de instruções em • Código de máquina: sequencia de instruções em linguagem de máquina.
• Formato da Instrução: uma forma de representação de uma instrução composta de campos de números binários.
Linguagem de Maquina
Fonte: Bochs x86 PC Emulator. Disponível em: http://sourceforge.net/projects/bochs/
Ementa: Arquitetura e Organização de Computadores
• Circuitos Combinacionais
• Circuitos Sequenciais
• Multiplexadores e Demultiplexadores
• Circuitos Aritméticos
• Circuitos Comparadores
• Arquitetura de Von Neumann: CPU e organização
• Barramentos
• Hierarquia de Memória
• Dispositivos de Entrada e Saída
Referências
• [1] Shiva S. G., Computer Design and Architecture, 3th Edition. Editora Dekker. ISBN: 0-8247-0368-5
• [2] Shiva S. G., Computer Organization, Design and Architecture, 4th Edition. Editora CRC Press. ISBN: 0-8493-0416-4
• [3] Rojas R., Hashagen U. The First Computers – History andArchitectures. Editora MIT Press. ISBN: 0-262-18197-5
• [4] Null L., Labur J. The Essencials of Computer Organization andArchitecture. Editora Jones and Bartlett Publishers. ISBN: 0-7637-0444-X
Referências
• [5] Duntemann J. Assembly Language – Step By Step. Editora John Wiley and Son. ISBN: 0-471-57814-2
• [6] Blum R. Professional Assembly Language. Editora John Wiley andSons. ISBN: 0-7645-7901-0
• [7] Patterson D., Hennessy J. Computer Organization and Design – TheHardware/Software Interface, 3rd Edition. Editora Morgan Kaufmann. ISBN: 1-55860-604-1.
• [8] Abd-El-Barr M., El-Rewini H. Fundamental os ComputerOrganization and Architecture, 7th Edition. Editora John Wiley and Son. ISBN: 0-471-46741-3.