41
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 Interfaces de E/S z 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.

EA960 Organização de Computadores 2º Semestre de 2000 · Texto (seqüência de caracteres) que serve de referência simbólica a um endereço (ou valor). zInstrução/diretiva

Embed Size (px)

Citation preview

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