EA960 Organização de Computadores 2º Semestre de 2000 · Texto (seqüência de caracteres) que...
Transcript of EA960 Organização de Computadores 2º Semestre de 2000 · Texto (seqüência de caracteres) que...
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 49____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
CPU
Barramento de Endereço
Barramento de Dados
Barramento de Controle
Memória Interfacesde
E/S
Arquitetura típica de um computador
CPU ou UCP - componente ativo que controla a operação dos outros elementos através dos barramentos de endereços, dados e controle.Memória - arranjo linear de células unitárias de armazenamento. Cada célula possui um endereço e um conteúdo. A memória é utilizada para armazenar instruções e operandos.Interface de E/S - permite a troca de informações com o mundo exterior. Responsável pela compatibilização elétrica e temporal computador/mundo exterior.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 50____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Barramento de Dados - transporta dados (instruções ou operandos) de/ou para a CPU. No MC6800 o barramento de dados tem 16 bits de largura.
Barramento de Endereços - indica o endereço de memória ou de E/S que está sendo acessado para uma escrita (envio de informação pela CPU) ou leitura (recebimento de informação pela CPU). No MC6800, o barrramento de endereço tem 24 bits de largura.
Barramento de Controle - contém sinais de controle para permitir a comunicação organizada entre CPU, Memória e E/S. Sinais típicos do barramento de controle, incluem: Sinal de Leitura, Sinal de Escrita.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 51____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Programação de baixo nível
O aprendizado da programação de baixo nível (em linguagem de máquina ou linguagem de montador) de qualquer máquina passa pelo entendimento/aprendizado:
da organização dos registradores internos à CPU;
da organização da memória e forma de acesso;
do jogo de instruções;
de ferramentas de apoio à programação;
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 52____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Ferramentas de apoio à programação de baixo nível - Montador
Montador ou Assembler é um programa para a conversão da linguagem nativa de uma máquina expressa em um formato mnemônico (a denominada linguagem de Montagem) para o formato executável (a denominada linguagem de máquina).
Linguagem de Montagem ou Assembly
MOVE D0,D1 ADD D1,D2
Linguagem de Máquina (código executável)
binário hexa 0011 0010 0000 0000 $3200 1101 0100 0100 0001 $D441
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 53____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Montador
Programa Fonte
Linguagem de Montagem
Programa Objeto
Linguagem de Máquina
ORG $100 MOVE D0,D1 ADD D1,D2 END
0011001000000000
1101010001000001
Montador
(Processo de Montagem)
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 54____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Programa Fonte
Cada linha do programa fonte rótulo instrução/diretiva comentário
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 55____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Rótulo
Texto (seqüência de caracteres) que serve de referência simbólica a um endereço (ou valor).
Instrução/diretiva
No campo instrução/diretiva podemos ter uma instrução de máquina no formato mnemônico (por exemplo: MOVE D0,D1) ou um diretiva de montador (pseudo-instrução)
Comentário
Texto utilizado pelo programador para documentar o programa. É ignorado pelo Montador.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 56____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Diretivas de Montador ou Pseudo-Instruções
São instruções para o montador - não de máquina.
Serve para controlar o trabalho do montador.
Não são convertidas para um código de máquina executável.
Diretivas Típicas
EQU (equate): associa um rótulo a um valor. Facilita a leitura e manutenção do programa.
MAXVALOR EQU 100 . .
. CMP #MAXVALOR,D0
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 57____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
DC (define constant): Define valor constante que deve ser carregado em memória. No caso de 68000, que admite 3 tipos de dados - byte (8 bits), word (16 bits) e long word 32 bits), o tamanho da constante é qualificado por “.B”(byte), “.W” (word) e “.L” (long word).
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 58____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
DS (define space): Reserva área de armazenamento em memória. No 68000 existe as variações “.B”, “.W” e “.L” para contemplar os diferentes tipos de dados (byte, word, long word) diretamente suportados pelo processador.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 59____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
ORG (origin): Define um novo valor para o contador de posição (location counter). O contador de posição mantém o registro do endereço de memória (posição na memória) onde o próximo item (por exemplo, instrução) do programa deve ser armazenado.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 60____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
END (end): Indica ao montador o final do código fonte.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 61____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Exemplo
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 62____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Registradores da CPU MC68000Três classes:
Registradores de DadosRegistradores de EndereçoRegistradores dedicados
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 63____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Registradores de Dados
Registradores utilizados para armazenar temporariamente operando e/ou resultados (propósito geral).
8 registradores de 32 bits: D0, D1, …, D7
A transferência para um registrador de dados pode ser:
Byte (8 bits) - 8 bits menos significativoWord (16 bits) - 16 bits menos significativosLong Word (32 bits) - todos os bits do registrador
MOVE.B D0,D1 MOVE.W D0,D1 MOVE.L D0,D1
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 64____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Registradores de Endereço
Registradores utilizados para preferencialmente conter endereços.
8 registradores de 32 bits: A0, A1, …, A7
A transferência de/para um registrador de endereço só pode ser:
Word (16 bits) -16 bits menos significativos (afeta todos os bits do registrador - extensão conservando o sinal).Long Word (32 bits) - todos os bits do registrador
Toda vez que um número de bits menor do que 32 bits for utilizado na definição de um endereço haverá a extensão conservando o sinal.
MOVEA.W D0,A1 MOVEA.L D0,A1
O registrador A7 é o Stack Pointer
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 65____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Registradores Dedicados
PC (program counter) - indica o endereço onde reside a próxima instrução
SR (status register - registrador de estado): contém bits de condição (Carry, Overflow, Negative, Zero) e bits de controle do modo de operação do processador (máscara de interrupção, bit modo supervisor/usuário, bit de execução passa-a-passo).
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 66____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Registrador de Estado (SR)
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 67____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Bits de Condição
C - Carry: indica um “vai-um” como resultado de uma operação aritmética ou lógica
V- oVerflow: indica se o resultado de uma operação está incorreto se interpretado como resultado de uma operação entre números com sinal em complemento de 2.
Z - Zero: indica se o resultado da operação é zero.
N - Negative: indica se o resultado é negativo (o bit mais significativo do resultado é 1)
X - eXtended: é uma cópia do carry que não é afetado por algumas instruções, podendo ser preservado no retorno de sub-rotina ou após o armazenamento do resultado.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 68____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Máscara de Interrupção
I2I1I0 - permite a habilitação seletiva de interrupções. Só são atendidos pedidos de interrupção de nível superior ao da máscara.
S (supervisor) - Indica o modo de operação do processador - supervisor ou usuário:
O modo supervisor é um modo privilegiado de processamento, reservado tipicamente para programas de gerenciamento (sistemas operacionais, monitores, etc.), onde se faz necessário o acesso irrestrito a todos os recursos da máquina (SSP - A7 pilha do supervisor).
O modo usuário é um modo de processamento não privilegiado, onde certas instruções não são permitidas, bem como determinados tipos de acesso à memória e controle de interrupções (USP - A7 pilha do usuário).
T (trace) - execução passo-a-passo.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 69____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Organização e Acesso à Memória
Memória arranjo linear de células de 8 bits (byte) - cada célula de 8 bits está associada a um endereço (por exemplo: $000001)
Tipos de dados e formas do acesso
Byte (8 bits) - acesso de 8 bitsWord (16 bits) - acesso de 16 bitsLong Word (32 bits) - 2 acessos de 16 bits
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 70____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Armazenamento dos dados
ByteUma célula de memória (1 endereço)Qualquer endereço de memória
WordDuas células (2 endereços)Apenas a partir de endereços pares (endereço par; endereço par + 1).Byte mais significativo primeiro (Big Endian).
Long WordQuatro células (4 endereços)Apenas a partir de endereços pares (endereço par; endereço par + 1; endereço par + 2; endereço par + 3).Byte mais significativo primeiro (Big Endian)
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 71____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Armazenamento dos dados
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 72____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Acesso a memória - Detalhe do hardware
Barramento de Endereços
23 sinais para especificar endereço: A23, A22
… A01
2 sinais para controlar o acesso a Bytes/Words: UDS* LDS* (fazem os papel do A00) (* indica sinal ativo baixo).
UDS* LDS* Tipo acesso 0 0 Acesso Word 0 1 Acesso Byte – endereço par 1 0 Acesso Byte - endereço ímpar 1 1 Inativos
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 73____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Acesso à Memória Esquemático Simplificado
A23
A01
.
.
.
.
.
.
A23
A21
A01
.
.
.
.
.
.
A23
A21
A01
.
.
.
.
.
.
CS*
UDS*
LDS*
D15
D16
D08
.
.
.
D07
D06
D00
.
.
.
.
.
.
.
.
.
D7 D6
D0
.
.
.
D7 D6
D0
.
.
.
CPU
Memória Par
CS*
Memória ÍmPar
A21
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 74____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento (especificando a localização dos operandos)
Imediato
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 75____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Absoluto
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 76____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Direto a registrador
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 77____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Indireto via registrador de endereço
MOVE.W (A0),D0
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 78____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Indireto via registrador de endereço com pós-incremento
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 79____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Indireto via registrador de endereço com pré-decremento
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 80____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Indireto via registrador de endereço com deslocamento
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 81____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Indireto via registrador de endereço com índice
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 82____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Modos de Endereçamento
Relativos ao PCcom deslocamentocom índiceimplícito (BRANCH)
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 83____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Jogo de InstruçõesAs instruções podem ser agrupadas nas seguintes categorias:
Instruções de Movimento de Dados: instruções para a transferência de dados entre registradores, entre registrador e memória, entre posições de memória, entre registrador e interface de E/S, etc.
Instruções Aritméticas e Lógicas: instruções que efetuam operações aritméticas e lógicas, tais como, adição, subtração, multiplicação, divisão, operações lógicas ou (or), e (and) , ou exclusivo (xor), operações de manipulação de bits: deslocamento, “setar” bit, zerar bit, etc.
Instruções de Controle da execução do programa: instruções que controlam o fluxo de execução do programa, tais como, desvio incondicional, desvio condicional, chamada de subrotina, retorno de sub-rotina, “halt”, “stop”, etc.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 84____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Instruções de Movimento
MNEMÔNICO SIGNIFICADO
EXG troca conteúdo entre registradores LEA carrega endereço efetivo LINK "link" MOVE transfere dado da fonte para o destino MOVEA transfere dada para registrador de endereço MOVEM transfere para conjunto de registradores MOVEP transferência de dados para periférico PEA empilha endereço efetivo SWAP troca as palavras (16 bits) de registrador UNLK” unlink"
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 85____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Instruções Aritméticas e Lógicas
MNEMÔNICO SIGNIFICADO ABCD adição BCD (binary coded decima) ADD adição binária de dados ADDA adição binária de endereços ADDI adição binária com operando imediato ADDQ adição binária rápida ADDX adição binária com bit de extensão AND função lógica E ANDI função lógica E com operando imediato ASL deslocamento aritmético para a esquerda ASR deslocamento shift aritmético para a direita BCHG testa bit e inverte BCLR testa bit e zera BRA salto incondicional BSET testa bit e faz verdadeiro BTST testa bit CHK testa registrador contra limites CLR zera operando CMP compara operando CMPA compara operando tipo endereço CMPI compara operando imediato CMPM comparação múltipla DIVS divisão com sinal DIVU divisão sem sinal EOR função lógica OU EXCLUSIVO EORI OU EXCLUSIVO com operando imediato
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 86____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Instruções Aritméticas e Lógicas (cont)
MNEMÔNICO SIGNIFICADO EXT extensão de sinal LSL deslocamento lógico para a esquerda LSR deslocamento lógico para a direita MULS multiplicação com sinal MULU multiplicação sem sinal NBCD nega BCD NEG nega NEGX nega com bit de extensão NOT complemento lógico OR função lógica OU ORI OU com operando imediato ROL roda para a esquerda ROR roda para a direita ROXL roda para a esquerda com extensão ROXR roda para a direita com extensão SBCD subtração BCD Scc faz verdadeiro dependente da condição SUB subtração binária de dado SUBA subtração binária de endereço SUBI subtração binária com operando imediato SUBQ subtração binária rápida SUBX subtração binária com bit de extensão TAS testa e faz verdadeiro
TST testa
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 87____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Instruções de Controle
MNEMÔNICO SIGNIFICADO
Bcc salto condicional BRA salto incondicional BSR salto para subrotina DBcc testa condição, decrementa e salta ILLEGAL instrução ilegal JMP salto JSR salto para subrotina NOP nenhuma operação RESET inicializa dispositivos periféricos RTE retorno de exceção RTR retorno e recuperação do CCR RTS retorno de subrotina STOP pára TRAP "trap"
TRAPV "trap on overflow"
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 88____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Codificação das Instruções
Duas variações encontradas na prática:
Tamanho fixo - todas as instruções são codificadas com o mesmo número de bit.
Tamanho variável - as instruções possuem tamanho variável, em geral, múltiplos de byte ou word. No caso do MC68000, as instruções são de tamanho variável múltiplo de word, podendo variar de 1 a 5 palavras. O tamanho depende do número dos operandos (0, 1 ou 2) e dos modos de endereçamento utilizados.
EA078 Micro e Minicomputadores: Hardware - Prof. J.M. De Martino 89____________________________________________________________________________
____________________________________________________________________________Capítulo 3 - Programação do 68000
Exemplos de Codificação das Instruções
MOVE.B D1,D2MOVE.W A1,D2MOVE.L D2,(A3)MOVE.L (A3),D2MOVE.B (A0)+,D3MOVE.L (A4),(A2)+MOVE.W D2,-(A5)MOVE.B -1(A2),$1000(A0)MOVE.W $3F(A1),63(A3)MOVE.W $1000,$2000MOVE.B $10000,$20000