Este é meu! |
O Z80 se beneficiou de um processo de fabricação mais moderno que o 8080, o que lhe permitiu operar com apenas 5V de alimentação e usar uma quantidade maior de transistores (quase o dobro do 8080). O clock passou a ser de fase única, com amplitude de 5V. Não dava para ligar o cristal direto, mas o circuito do oscilador podia ser feito facilmente. Com estas simplificações, sobraram pinos para não precisar multiplexar sinais e acrescentar um sinal de interrupção não mascarável (que seria usado no ZX-81 para gerar sinais de vídeo enquanto o programa rodava). Novos modos de uso de interrupção simplificaram os periféricos. O Z80 incluía ainda lógica para fazer o refresh de memória dinâmica (a memória dinâmica precisa ser acessada periodicamente para não perder o conteúdo).
Inicialmente o Z80 operava com clock de até 2,5MHz. Modelos seguintes subiram este limite para 4, 6 e 8. Atualmente existem modelos que suportam até 20MHz e versão derivadas que chegam a 50MHz.
No lado da arquitetura, foram acrescentados dois registradores de 16 bits (IX e IY), usados em novos modos de endereçamento. Estes registradores simplificam o código necessário para acessar matrizes e estruturas.
Existem duas cópias completas dos registradores. O processador utiliza apenas uma de cada vez, mas existem instruções para chavear entre as duas cópias. O objetivo é permitir salvar rapidamente o contexto ao tratar uma interrupção (limitado a não ter interrupções dentro de interrupções).
Além dos novos modos de endereçamento, o Z80 acrescentou várias instruções novas. Um problema foi onde colocá-las. Das 256 combinações de um byte, somente 12 não correspondiam a instruções no 8080. Oito delas foram usadas diretamente para novas instruções. As quatro restantes foram usadas como prefixo:
- CB é usado como prefixo para novas instruções de manipulação de bits
- ED é usado como prefixo para novas instruções
- DD é um prefixo que afeta as instruções que fazem referência ao operando M (posição de memória apontada por HL) e algumas instruções que fazem referência ao par HL. As referências a HL são substituídas por IX ou IX+d (onde d é um deslocamento constante de 8 bits com sinal)
- FD é análogo a DD, mas usa IY
- DD CB é usado nas instruções de manipulação de bits usando IY
- FD CB é usado nas instruções de manipulação de bits usando IY
Embora o Z80 reconheça a linguagem de máquina do 8080, os mnemônicos utilizados na linguagem Assembly da Zilog são diferentes (pois os mnemônicos do 8080 são protegidos por direito autoral). Por exemplo, a sequência 06 09 carrega o valor 9 no registrador B. No Assembly do 8080, esta instrução é codificada como MVI B,9 enquanto que no Assembly do Z80 a sintaxe é LD B,9.
Enquanto que a Intel usava mnemônicos diferentes para cada formato de instrução, a Zilog agrupou instruções semelhantes no mesmo mnemônico; a distinção da operação é feita pelo operando. Por ecxemplo, as várias instruções de movimentação usam o mesmo mnemônico LD. A sintaxe para os operandos é diferente, inclusive para permitir as novas formas de endereçamento.
O Z80 foi um imenso sucesso. Muitos computadores pessoais e videogames clássicos usaram o Z80. A resposta imediata da Intel foi o 8085, uma variante do 8080 com algumas melhorias de hardware e suporte a clock mais alto, mas praticamente sem mudanças na arquitetura interna e no conjunto de instruções (mais precisamente tem duas instruções novas para tratar um mascaramento de interrupções). A resposta a longo prazo foi o 8088, um microprocessador de 16 bits mas com barramento de dados de 8 bits. A Microsoft sugeriu para a IBM usá-lo no seu computador pessoal - e o resto, como dizem, é história.
3 comentários:
Isso é um microprocessador ou um microcontrolador?
Ops... Microprocessador é claro! Corrigido.
Só passando para elogiar seu blog, já está no meu feed há algum tempo e sempre leio coisas boas aqui, quando vi Zilog Z80 fiquei animado, adorava ler o manual desse cara, um dos processadores mais bacanas que li na época, parabéns!
Postar um comentário