Foto de Konstantin Lanzet |
Os Primeiros Microprocessadores
O que é um microprocessador e qual a diferença de um microcontrolador? Bem, às vezes a diferença fica meio nebulosa, mas basicamente um microprocessador costuma ter apenas o processador e um microcontrolador costuma ter também memória e interfaces de entrada e saída. Quando o 8080 foi projetado, a quantidade de transistores que se consegui colocar em um integrado era bastante limitada (o 8080 utiliza cerca de 4500 transistores) e muita funcionalidade era "empurrada" para fora do chip e implementada por CIs especializados de suporte ou por portas lógicas básicas.Você provavelmente já ouviu falar que a Intel projetou o primeiro microprocessador comercializado, o 4004, para tentar (sem sucesso) ganhar uma concorrência para fornecimento de CI para calculadoras. O Intel 4004 era um microprocessador de 4 bits, o que obviamente era limitado para algumas aplicações. Um ano depois a Intel lançou o 8008 de 8 bits. Mais dois anos e foi lançado o 8080, uma expansão da arquitetura do 8008.
O 8080 foi o primeiro microprocessador largamente usado e se tornou bastante popular na primeira geração de microcomputadores, em parte graças ao sistema operacional CP/M-80. Quando a Intel partiu para um microprocessador de 16 bis (o 8086) uma certa compatibilidade de arquitetura com o 8080 foi um requisito, e os chips x86 atuais ainda trazem algumas marcas disto.
O Hardware de um Microcomputador com o 8080
Como dito, nesta época as coisas ainda eram meio toscas. Começando pela alimentação: o 8080 requer +5, +12 e -5 Volts!O clock era outro problema. Não tanto a limitação a 2MHz (razoável para a época), mas a necessidade de dois sinais defasados e uma tensão da ordem de 10V. A solução? O CI 8224 da Intel. Alimentado por +5 e +12V, gera os sinais de clock a partir de um cristal.
Para ficar em 40 pinos, alguns sinais de controle foram multiplexados com a via de dados (isto é, o mesmos pinos usados para receber e enviar dados para memória e dispositivos de entrada e saída são usados para fornecer alguns sinais de controle). Além disso, o esquema de interrupções requer que o dispositivo coloque uma instrução na via de dados. O 8228 simplifica tudo isto, funcionando como um controlador da via de dados e gerando sinais de controle decodificados.
A Arquitetura do 8080
Às vezes se cria polêmica quando se fala que um processador é de "x bits". Não no caso do 8080: a unidade lógica aritmética (ALU), os registradores e as vias de dados interna e externa são de 8 bits. Se bem que algumas instruções permitem manipular pares de registradores como um registrador de 16 bits (útil para endereçar a memória, já que o 8080 tem 16 linhas de endereço permitindo até 64Kbytes de memória).Fonte: Wikimedia Commons |
- O acumulador é sempre um dos operandos da ALU
- Existem seis registradores de 8 bits: B, C, D, E, H e L. Como dito, algumas instruções trabalham com eles em pares BC, DE e HL
- O par HL é tipicamente usado para endereçar a memória (H = high e L = low)
- O program counter (PC) é o ponteiro para a próxima instrução a executar
- O stack pointer (SP) aponta para o último byte salvo na pilha
- A pilha pode ficar em qualquer endereço da memória e não tem tamanho fixo
- Empilhar (PUSH) decrementa o SP e desempilhar (POP) incrementa o SP. Ou seja, a pilha cresce do endereço mais alto para o endereço mais baixo.
Lembrança do tempo de faculdade |
O 8080 possui um conjunto de instruções bem organizado (o que certamente facilitou o seu circuito). Uma instrução pode ter de 1 a 3 bytes e a sua execução pode levar de 4 a 16 ciclos (o 8080 não possui nenhum paralelismo interno, as etapas de fetch e execução precisam ser executadas sequencialmente). O programador assembler logo aprendia uns truques (como usar XRA A ao invés de MVI A,0 para zerar o acumulador).
Muitas horas gastas em cima desta referência rápida da Siemens |
A linguagem da máquina! |
8 comentários:
Muito interessante o KIT. Até que enfim algo não direcionado a "joguinho".
Pensei que ao clicar na capa do livro, seria aberto uma página com o .PDF dele...
Estou colaborando com alguns sites e digitalizando alguns livros antigos.
Veja: https://www.datassette.org/livros/biblioteca-basica-informatica-br
O 4 e o 22 fui eu que fiz, estou com o 6 pronto para "Uppar" e mais uns 6 (dos pares) escaneados e indo para "remasterização".
Precisamos salvar e disponibilizar essas raridades que não se encontram em nenhum lugar mais.
Sou contra a pirataria de livros (vc. como autor sabe porque). Mas sou mais contra ainda a "queima de Alexandria".
Uma busca rápida pelo título com o google traz vários resultados. Por exemplo, esta versão personalizada para a Radio Shack: https://archive.org/details/8080-8085_Assembly_Language_Programming_1977_Intel
Muito bom DQ, este kit RC2014 estou "paquerando" desde que o Juca me mostrou há uns meses, só o preço dele não está pro meu bolso por hora.
E aproveitando estamos montando uma plaquinha Z80, você pode indicar um (uns?) compilador C pra ele ?
até,
Marcelo, eu ainda não comecei a mexer com o software (e vou começar com Assembly). Mas no grupo do RC2014 eles falam no Z88DK (https://sourceforge.net/projects/z88dk/). Além do compilador próprio, o Z88DK suporta o SDCC. A wiki do projeto tem alguns comparativos. A página http://www.z80.info/z80sdt.htm parece um pouco antiga, mas lista mais algumas opções.
Ótimo material, DQ!
Uma dúvida: qual a referência completa para o material da Siemens que você mencionou (a imagem com o "conjunto de instruções") ?
Abs!
Demorou um pouco, mas aqui está a referência rápida da Siemens: https://drive.google.com/file/d/0BxAzQY17Vad0MExJYTFjV09QQWc/view?usp=sharing
Muito obrigado, Daniel.
Estou voltando às origens - estudando o 8080 - e gostei muito da sua contribuição (tanto os artigos como a referência).
Com certeza, me poupou um bom tempo.
Diante do auxílio, me coloco à disposição.
Grande Abraço!
www.newbie.eti.br
Postar um comentário