Escolar Documentos
Profissional Documentos
Cultura Documentos
Cpu Process Adores PDF
Cpu Process Adores PDF
Notas de Aula
Microprocessador 8085
Microprocessador 8088
Goinia, 2006
2
Observaes
2. No se pretende, com o uso desta apostila, dispensar os livros didticos indicados na referncia
bsica, mas apenas facilitar o ensino da disciplina em questo, reunindo num s volume o
material a ser usado em sala de aula.
3. A apostila est distribudas em captulos que cobrem dois dos trs temas principais, que so:
Obs.: As 96 horas de aulas tericas sero ministradas em 48 aulas de 2 horas cada uma.
As 32 horas de aulas prticas sero ministradas em 16 aulas de 2 horas cada uma.
BIBLIOGRAFIA BSICA
Microprocessador 8085:
Microprocessador 8086:
Microcontrolador 8051:
6. SILVA JR., Vidal Pereira da, Aplicaes Prticas do Microcontrolador 8051, rica, So Paulo,
1994.
7. GIMENEZ, Salvador P., Microcontroladores 8051: Teoria do hardware e do software /
Aplicaes em controle digital / Laboratrio e simulao, Pearson Education do Brasil Ltda, So
Paulo, 2002. ISBN: 85.87918-28-1
8. NERYS, Jos Wilson L., Apostila de Microprocessadores
EMENTA
PROGRAMA
2 - Arquitetura do 8085:
- Princpio Bsico de Operao de um Microprocessador
- Diagrama de Blocos do Microprocessador 8085
- Pinagem;
- Principais Caractersticas;
- O Sistema Mnimo;
- Modos de Endereamento;
- Busca e Execuo de Instrues.
- Interrupes
- Temporizadores
- Comunicao Serial
- Simulao Digital
- Construindo um Sistema Baseado no Microcontrolador 8051
8 - Atividades de Laboratrio
LABORATRIO
Laboratrio Contedo
1 Uso do Kit do 8085
Programa de Simulao ABACUS
2 Instrues de transferncia de dados (uso do Kit e do simulador ABACUS)
3 Instrues aritmticas (uso do Kit e do simulador ABACUS)
4 Instrues lgicas (uso do kit e do simulador ABACUS)
5 Programao 8085 (uso do kit e do simulador ABACUS)
6 Programao 8085 com Interrupo
7 Programao 8085 com Interrupo
8 Microprocessador 8086: caractersticas bsicas
9 Microcontrolador 8051: Sequncia de LEDs e Motor de passo (uso de Kit e de
simulador)
10 Microcontrolador 8051: Motor de corrente contnua (uso de Kit e de simulador)
11 Microcontrolador 8051: Conversores AD e DA (uso de Kit e de simulador)
12 Projeto usando 8051
13 Projeto usando 8051
14 Projeto usando 8051
15 Projeto usando 8051
16 Projeto usando 8051
AVALIAO
9. MICROCONTROLADORES 8086/8088.....................................................................................104
Data da mesma poca do baco o octograma chins Yin Yang, o qual tido como a primeira representao
binria dos nmeros de 0 a 8. Foi criado pelo imperador chins Fou-Hi para representar a interao entre as duas
energias que juntas so o fundamento da totalidade.
1614 LOGARITMO O cientista escocs JOHN NAPIER criou os logaritmos. Atravs das tabelas criadas,
as operaes de multiplicao e diviso tornaram-se mais simples, pois eram substitudas por operaes
de adio e subtrao, reduzindo o tempo de processamento.
1642 PASCALINE O cientista francs BLAISE PASCAL criou uma calculadora capaz de realizar
operaes de adio e subtrao. A mquina implementada utilizava rodas e engrenagens, com as quais
era possvel representar nmeros decimais de 0 a 9. Pascal desenvolveu essa mquina para ajudar seu
pai na coleta de impostos. A mquina teve mais de 50 verses diferentes em uma dcada.
1671 O matemtico alemo francs GOTTFRIED LEIBNIZ criou uma calculadora de 4 funes, capaz de
realizar operaes de adio, subtrao, multiplicao e diviso. a antecessora das calculadoras atuais.
O problema comum s calculadoras at esta poca era a necessidade de entrar com todos os resultados
intermedirios.
1801 CARTO PERFURADO O Tecelo francs JOSEPH MARIE JACQUARD aperfeioou o tear
construdo por Vaucanson. Ele construiu uma mquina de tear que memorizava em cartes perfurados
os padres de desenho dos tecidos e depois os reproduzia com fidelidade, lendo comandos na presena
ou ausncia de orifcios. A verso seguinte do Tear, em 1804, era totalmente automatizada e podia fazer
desenhos muito complicados. Esse considerado o primeiro registro de programao semelhante de
computadores modernos.
Para ampliar seus negcios, a TMC se uniu com duas pequenas empresas para formar a CTRC
(Computing Tabulation Recording Company), em 1914. Em 1924, a CTRC se tornou uma empresa
internacional e mudou seu nome para IBM (Internacional Business Machine).
1936 COMPUTADORES Z1, Z3 e Z4 O cientista alemo KONRAD ZUSE criou o computador - Z1,
baseado em rel eletro-mecnico. Criou tambm o computador Z3, que foi o primeiro computador de
propsito geral controlado por programa. Criou ainda o Z4, computador projetado para o
desenvolvimento de msseis. Ele foi destrudo por bomba na 2a. guerra mundial.
1943 COLOSSO Na Inglaterra, em 1943, Alan Turing, do Servio de Inteligncia Britnico, construiu o
Colosso, de dimenses gigantescas. A mquina, abrigada em Bletchley Park, tinha 2000 vlvulas e lia
smbolos perfurados numa argola de fita de papel, inserida na mquina de leitura fotoeltrica,
comparando a mensagem codificada com sequncias conhecidas at encontrar uma coincidncia.
Processava cerca de 5 mil caracteres por segundo e foi usada para descodificar as mensagens dos
alemes, tendo sido decisiva no resultado final da guerra.
Colosso Mark I
1944 MARK I Na Universidade de Harvard em 1937, o professor Howard Aiken, financiado pela IBM,
comeou a construir o Mark I, concludo em 1944. Baseado em um sistema decimal, manipulava
nmeros de at 23 dgitos e tinha medidas grotescas: 15 m de comprimento e 2,5 m de altura; 760.000
peas envoltas em vidro e ao inoxidvel brilhante; 800 km de fios e 420 interruptores para
controle.trabalhava sob o controle de um programa perfurado em uma fita de papel. Adio e subtrao
em 0,3 s, multiplicao em 3 s e diviso em 12 s,
1946 ENIAC (Electronic Numerical Integrator and Computer) - 1o Computador de propsito geral a
vlvula: 18.000 vlvulas, 30 toneladas, 15.000 ps quadrados, 140 kW, representao e aritmtica com
nmeros decimais, 5.000 adies /seg. Projetado pela Ballistics Research Labs. Foi aproveitado no
desenvolvimento da Bomba H.
1946 VON NEWMANN MACHINE A Mquina de Von Newman, ou Mquina de Touring introduziu o
conceito de programa armazenado (Stored Programa Concept) no qual a memria conteria, alm de
dados, programas. Os computadores modernos so baseados na mquina de Von Newman.
1950 UNIVAC (Universal Automatic Computer) Lanado pela SPERRY, foi o 1o Computador de
aplicao cientfica e comercial. Seguiram UNIVAC II e UNIVAC 1100 series .
1947 TRANSISTOR Inveno do transistor pelos cientistas John Bardeen, William Shockley e Walter
Brattain. Passou a ser usado em escala comercial somente em 1952 pela Bell Laboratories.
1958 CIRCUITO INTEGRADO O engenheiro Jack Kilby, da Texas Instruments, criou o Circuito
Integrado.
1960 IBM 7090, 7094 Computador transistorizado. Utilizao de linguagens de programao de alto nvel,
tais como FORTRAN, COBOL e PASCAL.
1971 4004 (INTEL) - 1o microprocessador a ser lanado, de 4 bits, com aplicao voltada para calculadoras
(manipulao de nmeros em BCD) - 45 instrues - 640 Bytes de memria - clock de 108 KHz -
60.000 instrues/seg. (OBS: desempenho superior ao ENIAC) - 2.300 transistores.
1972 8008 (INTEL) - 1o microprocessador de 8 bits, com aplicao voltada para terminais (que trabalham com
caracteres - codificao ASCII) - 48 instrues - 16KB de memria - clock de 200 KHz - 300.000
instrues/seg. 3500 transistores.
1974 8080 (INTEL) - Processador de 8 bits, de propsito geral - 72 instrues - opera com 12V - clock de 2
MHz - 640.000 instrues/s. 64KB de memria. 6.000 transistores.
1975 Z80 (ZILOG), 6502 (MOS) Utilizado pelo 1o APPLE (APPLE 1) em 1976 por Steve Wozniak e Steve
Jobs (data da fundao da APPLE).
1976 8085 (INTEL) 8080 operando com 5V - 2 instrues a + que o 8080 - melhor performance. 5 MHz -
370.000 instrues/s. 6500 transistores.
1978 8086 (INTEL) - Processador 16 bits (barram. externo de 16 bits e registradores de 16 bits). 5 MHz - 0.33
MIPS, 8 MHz - 0.66 MIPS e 10 MHz - 0.75 MIPS. 29.000 transistores.
1979 8088 (INTEL) - Processador 16 bits (barram. externo de 8 bits e registradores de 16 bits) - 133
instrues - chip utilizado no primeiro PC em 1981. O PC/XT seria lanado em 1983 com HD de 10
MB e 128 Kbyte RAM. 29.000 transistores. Lanado o 68.000 (MOTOROLA) que foi utilizado no
Machintosh em 1984
1982 80186/188 - 80286 - 80287 (INTEL) PC/AT 16 bits, modo protegido, 24 linhas endereos.
1985 80386 (INTEL) Processador de 32 bits - bus ext. de dados de 32bits - 275.000 transistores. 16MHz -
2.5 MIPS, 20 MHz - 2.5 MIPS, 25 MHz - 2.7 MIPS, 33 MHz - 2.9 MIPS.
1989 80486 (INTEL) - Processador de 32 bits: 386 que incorpora o 387 (coprocessador), cache interna (L1)
de 8KB e maior performance - 235 instrues - 1,2 milhes de transistores. 25 MHz - 20 MIPS, 33
MHz - 27 MIPS, 50 MHz - 41 MIPS.
1991 WEB Tim Berners-Lee desenvolve a Rede Mundial de Computadores (World Wide Web). O primeiro
servidor Web lanado. O conceito de conexo de vrios usurios a um nico computador por via
remota nasceu no MIT no final da dcada de 50 e incio da dcada de 60. As idias bsicas da Internet
foram desenvolvidas em 1973 por Bob Kahn e Vint Cerf.
1993 Pentium 60 MHz e 66 MHz - Processador de 32 bits bus ext. de 64 bits - 5V - 3 milhes de
transistores. Primeiro processador de 5a gerao.
1994 Pentium 90 MHz e 100 MHz - Alimentao de 3,3V (maior confiabilidade). 3.2 milhes de transistores.
1996 Pentium Pro 200 - Incorpora cache L2 de 256kB, utilizando tecnologia MCM (Multi-Chip Module) - 5
milhes de transistores - idealizado para programas de 32 bits. Usa memria de 64 bits.
1997 Pentium 200MMX (Pentium MultiMidia eXtensions): contm 57 novas instrues dedicadas para
programas de Multimdia. 4.5 milhes de transistores. 200 MHz e 166 MHz. Barramento de 64 bits.
Cada instruo MMX equivale a vrias instrues comuns.
1997 Pentium II 233, 266, 300MHz utiliza o slot I. 7,5 milhes de transistores (tecnologia 0.35 micron),
cache L2 com 512kB - 242 pinos - 64GB de memria enderevel. Poder de processamento de 32 bits
do Pentium Pro e maior eficincia no processamento de 16 bits. Instrues MMX.
1998 Pentium II 450 MHz - Cache L2 de 512 kB, 7.5 milhes de transistores, tecnologia 0.25 micron,
barramento de 64 bits. 64 GB de memria enderevel.
1999 Pentium III 450 e 500 MHz (at 1,2 GHz) Barramento de sistema de 100 MHz ou 133 MHz, cache L2
de 512 kB, processador de 32 bits, 9,5 milhes de transistores, tecnologia 0.25 micron, 64 GB de
memria enderevel. 70 novas instrues voltadas para multimdia e processamento 3D.
2000 Pentium IV at 2 GHz, barramento de sistema de 400 MHz, Cach L1 de 32 kB e L2 de 256 kB, 42
milhes de transistores.
A quantidade cada vez maior de transistores numa nica pastilha foi acompanhada da reduo do
tamanho fsico dos transistores. Essa reduo mostrada na Fig. 1.2.
A reduo do tamanho do transistor resulta no aumento da velocidade de operao e tambm na reduo
das conexes internas, alm de permitir a insero de um nmero cada vez maior de transistores numa nica
pastilha. O aumento da capacidade de integrao de transistores resulta ainda na reduo do consumo de energia
eltrica e do custo dos microprocessadores. H um postulado que diz que o gate de um transistor no pode ser
menor do a largura correspondente a 10 tomos. A previso de pesquisadores da Intel a dimenso do gate dos
transistores alcanaro esse valor por volta do ano 2017 (http://www.intel.com/update/archive/issue2/focus.htm).
COMPUTADOR (definies):
Microcomputador:
- Computador que tem a CPU implementada em um nico chip: o microprocessador
Minicomputador:
- Multi-usurio;
- grande capacidade de armazenamento;
- operao com matrizes e ponto flutuante melhorada;
Supercomputador:
- Computador idealizado para resolver problemas matemticos de processos reais, tais como:
aerodinmica, meteorologia, fsica, etc
- altssima performance (GFLOPs) para repetidas operaes aritmticas (iterao);
- operaes com matrizes e nmeros em ponto flutuante;
- mercado limitado.
Computadores Analgicos:
- operam diretamente com grandeza fsica (variveis contnuas);
Computadores Digitais:
- operam com variveis discretas (nmeros).
CPU
Control Unit - Unidade de Controle (UC) - tem por funo bsica o controle das demais unidades da CPU de
uma forma lgica e sincronizada.
ALU (Aritmetic and Logic Unit) - Unidade Lgica e Aritmtica (ULA) - realiza funes bsicas de
processamento de dados (adio, subtrao, funes lgicas, etc.).
Registers - Registradores - So usados para o armazenamento interno da CPU. Existem diversos registradores na
CPU e o principal deles chamado de Acumulador.
CPU interconnection - o barramento interno da CPU; ele permite a comunicao entre a Unidade de
Controle, a Unidade Lgica e Aritmtica e os Registradores.
1.4.2 Memria
o local de armazenamento de dados e programas. Possui palavras de tamanho fixo, sendo cada
palavra vinculada a um endereo nico. Possui ainda linhas de controle, sendo as principais: READ (leitura) /
WRITE (escrita).
Existem dois tipos bsicos de memria: Memria somente para leitura (ROM), onde ficam
armazenados permanentemente informaes fundamentais para o funcionamento do computador e cujos dados
no so perdidos na falta de energia; e a memria RAM, que permite gravar e apagar dados de acordo com os
interesses do usurio, e cujo contedo perdido quando o computador desligado. A memria RAM divide-se
ainda em Memria Dinmica (DRAM) e memria esttica (SRAM), que sero melhor detalhadas
posteriormente. A principal caracterstica a ser destacada neste ponto a baixa velocidade de acesso da memria
RAM.
Com o passar dos anos os processadores tornaram-se cada vez mais rpidos, o mesmo no acontecendo
com as pastilhas de memria, que evoluram de forma bem menos acentuada (em particular, a memria
dinmica, que possui velocidade de acesso bem menor que a esttica, mas bem mais barata). Para evitar com
que a baixa velocidade de acesso da memria comprometesse o desempenho dos processadores mais modernos,
um tipo especial de memria RAM foi criado: a memria CACHE.
A memria CACHE consiste numa pequena quantidade de memria RAM esttica (SRAM) usada para
acelerar o acesso RAM dinmica. Quando h necessidade de ler dados da memria dinmica, estes so antes
transferidos para a memria cache. Enquanto o processador l dados da memria cache, mais dados so
antecipadamente transferidos da memria dinmica para a memria cache, de forma que o processamento torna-
se mais rpido.
a unidade atravs da qual o usurio se comunica com o sistema. Ela abriga componentes
responsveis pelo interfaceamento do sistema com perifricos tais como teclado, LCD, mouse, impressora e
monitor. tambm atravs da unidade de entrada e sada que so enviados sinais de interrupo para a CPU.
1.4.4 Barramento
Barramento o meio fsico usado para o transporte de um conjunto de sinais digitais usados para
comunicao entre o processador, a memria e o meio externo. O barramento especfico para a comunicao
entre o processador e a memria chamado de barramento de sistema. Para a comunicao com os perifricos os
trs tipos mais comuns de barramento hoje so: barramento ISA, usado para interfaces seriais, paralelas,
interface para drivers e alto falante; barramento PCI, usado para interfaces IDE e USB; e barramento AGP,
usado para placas de vdeo 3D de alto desempenho.
Um barramento constitudo de um barramento de dados, um barramento de endereos e um
barramento de controle. O barramento de dados nos computadores mais modernos possui at 64 linhas (bits) e
permite o fluxo bidirecional de dados. O microprocessador 8085, objeto de estudo na primeira parte do presente
curso, possui 8 bits de dados e, por esta razo, denominado de processador de 8 bits.
A quantidade de posies de memria que um computador pode acessar ditada pela quantidade de bits
do barramento de endereos. Um barramento com 32 bits pode acessar at 4.294.967.296 (232) posies de
memria, o que corresponde a 4 GB de memria (4.294.967.296 = 4 1024 1024 1024 = 4 GB). Todos os
processadores da classe Pentium possuem barramento de endereo com 32 bits. Os processadores Pentium II,
Pentium III e Celeron possuem barramento de endereo de 36 bits, podendo ento acessar at 64 GB de
memria.
O barramento de controle de um computador comporta uma srie de sinais com finalidades diversas.
Alguns exemplos so: sinal RW que indica se a operao uma leitura ou uma escrita, sinal MIO, que indica se
a operao envolve a memria ou a unidade de entrada e sada, sinal de RESET, entradas das interrupes, sinal
de CLOCK, etc.
Barramento ISA - O barramento ISA (Industry Standard Architecture) formado por slots de 8 e 16 bits
existentes nas placas de CPU e foi originado no IBM PC, na verso de 8 bits, e aperfeioado no IBM PC AT,
quando foi criada a verso de 16 bits. Permite transferncia de dados em grupos de 8 ou 16 bits a um clock de
8 MHz. Embora possua velocidade de transferncia pequena para os padres atuais, o barramento ISA ainda
muito utilizado para placas tais como fax/modem, placas de som e placas de rede, cujos desempenhos no
ficam comprometidos com a baixa velocidade de transferncia do barramento.
Barramento PCI - O barramento PCI (Peripheral Component Interconnect) foi desenvolvimento pela Intel,
quando do desenvolvimento do processador Pentium. Ele opera com 32 ou 64 bits, apresenta taxa de
transferncia de at 132 MB/s, com 32 bits e possui suporte para o padro PnP (Plug and Play). Seu clock
geralmente de 33 MHz, para valores de clock interno acima de 150 MHz.
Barramento AGP - O barramento AGP (Accelerated Graphics Port) foi devolvido pela Intel com o intuito de
aumentar a taxa de transferncia entre a CPU e a placa de vdeo, melhorando o desempenho de operao com
grficos. Esse barramento foi incorporado CPU de processadores Pentium II mais modernos. A principal
vantagem do AGP o uso de maior quantidade de memria para armazenamento de texturas para objetos
tridimensionais, alm de alta velocidade no acesso a essas texturas para aplicao na tela.
Aumento de clock
Aumento do nmero interno de bits
Aumento do nmero externo de bits
Reduo do nmero de ciclos para executar cada instruo
Aumento da capacidade e velocidade da memria cache
Execuo de instrues em paralelo
FLOPS - FLOating point instructions Per Seconds (Instrues com Ponto Flutuante Por Segundo). tambm
uma unidade de desempenho do microprocessador. Indica a capacidade de trabalhar com nmeros
decimais.
Representao em Ponto Fixo - Sistema numrico no qual o ponto est implicitamente fixo ( direita do digito
mais a direita);
Representao em Ponto Flutuante - Sistema numrico no qual um nmero real representado por um par
distinto de numerais: uma mantissa (ou significante) e um expoente. Possibilita representao de
nmeros fracionrios.
Bit - Abreviatura para 'Binary Digit', ou, Dgito Binrio. Pode assumir valor 0, que corresponde a tenso O V, ou
1, que representa normalmente uma tenso de 5 V ou 3.3 V.
Byte - Conjunto (cordo) de 8 bits. a unidade bsica de dados nos computadores, que tambm utilizam alguns
mltiplos de 8, tais como 16 bits (Word) e 32 bits (Dword).
BYTE
nibble superior nibble inferior
Bit 7 Bit 6 Bit 5 Bit 5 Bit 3 Bit 2 Bit 1 Bit 0
Set de instrues - Conjunto de Instrues. Conjunto de Mnemnicos (siglas que fazem lembrar uma ao) que
representam todas as instrues do processador. Cada processador possui o seu set de instrues
particular.
CISC - Complex Instruction Set Computer: Tecnologia atribuda s CPUs de um modo geral, que contm set de
instrues complexo. O barramento de comunicao entre as unidades que compem a CPU comum a
todas as unidades, ou seja, no h comunicao direta entre unidades, atravs de um barramento
exclusivo.
RISC - Reduced Instruction Set Computer: Computador com set de instrues reduzido. Principais
caractersticas:
Conjunto de instrues limitado e simples;
Grande nmero de registradores de propsito geral;
Pipeline otimizado. Em outras palavras, h comunicao direta entre algumas unidades, atravs de
barramento exclusivo, possibilitando, assim, o processamento paralelo de intrues.
BIOS - Basic Input/Output System o conjunto mnimo de instrues necessrias para a inicializao do
computador. Tambm gerencia o fluxo de dados entre o sistema operacional do computador e os
dispositivos perifricos conectados.
Memria EPROM - (Erasable Programmable Read Only Memory) - So memrias somente de leitura usadas
para a gravao de programas. A gravao feita atravs de uma gravadora especfica e os dados
gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse processo gravar/apagar
por vrias vezes.
Memria EEPROM ou E2PROM - (Electrically Erasable Programmable Read Only Memory) - So memrias
que podem ser usadas tanto para leitura quanto para escrita porque a gravao pode ser atravs de
gravadora especfica ou pelo sistema. So apagadas eletricamente. o feita atravs de uma gravadora
especfica e os dados gravados podem ser apagados atravs de raios ultravioletas. Pode-se repetir esse
processo gravar/apagar por vrias vezes.
1o dgito: Armazena as unidades (ou 100 = 1). No ex.: seis unidades (ou 6 100);
2o dgito: Armazena as dezenas (ou 101 = 10). No ex.: quatro dezenas (ou 4 101);
3o dgito: Armazena as centenas (ou 102 = 100). No ex.: trs centenas (ou 3 102);
A ponderao dada pelo nmero 10 elevado potncia representada pela coluna, sendo que a 1a
coluna da direita 0.
1 + 2 + 0 + 8 + 0 + 0 + 64 + 128 = 20310
A ponderao dada pelo nmero 2 elevado potncia representada pela coluna, sendo que a 1a coluna
0, a segunda coluna 1 e assim sucessivamente.
O Sistema Hexadecimal baseado nos mesmos princpios do decimal, apenas utiliza base 16. Utiliza 16
dgitos: 0 a 9, A, B, C, D, E e F. Exemplo: Ex.: 20DH ou 20Dh ou 20D16
O sistema hexadecimal mais fcil de trabalhar que o sistema binrio e geralmente utilizado para
escrever endereos. Cada dgito hexadecimal convertido em 4 dgitos binrios equivalentes. Cada nmero
binrio convertido em hexadecimal convertendo-se grupos de 4 bits em seus dgitos hexadecimais
equivalentes.
6. Quantas posies de memria podem ser endereadas com um barramento de endereos de 16 bits? E de
20 bits?
11. Converta os nmeros abaixo (que esto na base indicada) para hexadecimal
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Edio do Autor, Florianpolis, SC,
2000.
[2] http://www.intel.com/research/silicon/moorespaper.pdf
[3] www.maebee.com.br
[4] http://www.intel.com/intel/intelis/museum/exhibits/hist_micro/hof/
[5] http://www.computerhistory.org/timeline/
Principais Caractersticas:
Unidade responsvel pelo tratamento das 5 interrupes externas do 8085. Essas interrupes so
vetoradas, o que significa que h um endereo fixo, pr-definido, para cada uma (RST n salta para a
posio de memria 8 vezes n: RST 5.5 = 4410 = 2Ch; RST 6.5 = 34h; RST 7.5 = 3Ch.). As interrupes
RST 5.5, RST 6.5 e RST 7.5 podem ser mascaradas, ou seja, elas podem ser bloqueadas via "software". J a
interrupo TRAP no pode ser bloqueada e a interrupo de maior prioridade do 8085. Ela normalmente
ativada quando h problemas de falta de energia, para um desligamento seguro do microprocessador. A
interrupo INTR, na verdade, um canal para expanso da capacidade de interrupo. Atravs desse canal
um CI especial (Exemplo: CI 8259) conectado ao 8085, de modo a permitir um nmero maior de
interrupes. O sinal INTA\ faz parte da comunicao entre o 8085 e o CI usado para expanso da
capacidade de interrupo.
atravs dessa unidade que o microprocessador recebe e envia dados de forma serial, ou seja, bit a bit, ao
invs de um byte por vez. O pino SID (Serial Imput Data) usado para a entrada de dados de forma serial e
o pino SOD (Serial Output Data) usado para a sada de dados de forma serial.
Esta unidade responsvel por gerar todos os sinais de controle do 8085, tais como os sinais de leitura
(RD\) e escrita (WR\) de memria, os sinais de liberao de barramento para um perifrico (HLDA) e o
sinal de habilitao de endereo para um perifrico (ALE). Todas as unidades internas do 8085 so
controladas por esta unidade, que contm, dentre outros, um contador em anel para sincronizao da
operao de todas as unidades do 8085. Os sinais de controle para outras unidades so enviados aps a
decodificao das instrues vindas do Registrador de Instrues (IR). Recebe ainda sinais do registrador
de Flags e da unidade de interrupes.
responsvel por todo o processamento realizado na CPU (execuo de instrues aritmticas e lgicas).
controlada por sinais internos emitidos pela Unidade de Controle. Tem como entrada os registradores A
(Acumulador) e TEMP (Temporrio). responsvel pela sinalizao de status das operaes (FLAGS).
um registrador de 8 bits.
Registrador "Acumulador"
o principal registrador da CPU. utilizado como Buffer temporrio de entrada da Unidade Lgica e
Aritmtica (ALU ou ULA). Freqentemente o registrador de entrada ou sada da CPU. utilizado
implicitamente na maioria das instrues. um registrador de 8 bits, o que permite trabalhar com nmeros
sem sinal de 0 a 255 e nmeros com sinal de -128 a +127. O resultado das operaes resultantes da ULA
enviado para o Acumulador.
Registrador "TEMP"
um registrador auxiliar usado para a entrada de dados da Unidade Lgico-Aritmtica. Os dados desse
registrador so enviados para a ULA juntamente com os dados do Acumulador.
tambm conhecido como registrador F (de Flags), ou registrador PSW (Program Status Word) um
registrador de 8 bits (mas somente 5 bits so utilizados) que armazena o estado da ltima operao
realizada na ULA. So 5 as flags do 8085, conforme mostrado a seguir:
Registrador F
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
S Z AC P CY
AC = Auxiliar de Carry = flag usada como auxiliar de transporte. Assume valor 1 quando h transporte do
bit 3 para o bit 4. usada em operaes BCD
um registrador de 8 bits que armazena o primeiro byte da instruo (OPCODE), ou seja, o contedo da
memria apontado (endereado) pelo registrado PC.
o registrador responsvel pela decodificao de cada instruo e de definio dos ciclos de mquina que
sero controlados pela unidade de controle.
Registradores B, C, D, E, H e L
So registradores de propsito geral de 8 bits e que podem ser combinados aos pares para formar
registradores par (rp: register pair) para armazenar endereos (16 bits). Os pares formados so: BC, DE e
HL. O primeiro registrador de cada par armazena o byte mais significativo, isto , B, D e H.
Registrador par HL
Registrador usado como apontador de dados na memria RAM, semalhana do registrador PC, que
aponta instrues e dados na memria ROM (como ser visto numa seo posterior). O registrador HL
usado implicitamente em vrias instrues e referenciado nessas instrues M, de Memory.
O registrador apontador de pilha SP (Stack Pointer) um registrador de 16 bits usado como apontador de
dados numa regio especial da memria RAM, denominada de Pilha (Stack). Esse espao de memria
especialmente destinado a guardar temporariamente informaes de registradores que sero usados em
outra tarefa. A ordenao de elementos na pilha tal que somente um dado pode ser acessado num
determinado instante e a ltima palavra digital que entra a primeira que sai (Lista LIFO - Last In First
Out). O apontador de pilha (registrador SP) aponta sempre para o topo desta pilha (top of stack), ou seja,
para o ltimo dado que foi armazenado. Os dados normalmente armazenados so endereos de
chamadas/retornos de subrotina e endereos de retorno de interrupes, que automaticamente armazenados
pelo 8085 e ainda outros dados que podem ser armazenados pelo programador usando a instruo PUSH.
Posteriormente esses dados so retirados da pilha usando a instruo POP.
A freqncia de clock do 8085A deve ficar na faixa de 500 kHz a 3,125 MHz. J a freqncia de clock
do 8085A-2 deve ficar entre 500 kHz e 5 MHz. A freqncia de clock metade da freqncia do cristal
oscilador, como mostrado na expresso que segue. Isso ocorre porque o flip-flop que gera o clock divide o sinal
de entrada por 2.
f cristal
f clock =
2 J Q CL
X1
fcristal K Q CL
X2
Pinos de conexo do cristal. X1 pode ser uma onda Pino de alimentao. Vcc = +5 V
quadrada. Nesse caso, X2 pode ficar aberto. Requerimento de barramento. Ativo alto.
Indicas aos perifricos que a CPU est sendo ressetada Reconhecimento de HOLD. Indica que pedido foi aceito.
Pino de sada de dado serial. Sada de clock para os demais chips do sistema
Pino de entrada de dado serial. Reset do sistema. PC = 0000 h. Interrupes com mscara.
Pino da interrupo de maior prioridade. No mascarvel. 1 memria ou perif. prontos para acesso. 0 wait
Pino da interrupo que desvia para o endereo 3C h. Indica se a operao de entrada/sada ou com memria
Pino da interrupo que desvia para o endereo 34 h. Com S0 e IO/M\ indicam estados do ciclo de mquina
Pino da interrupo que desvia para o endereo 2C h. Sinal que habilita perifrico ou memria para leitura
Pino usado para expandir a capacidade de interrupo. Sinal que habilita perifrico ou memria para escrita
Reconhecimento de pedido de interrupo. Sinal para carga da parte baixa do endereo (no latch 74373)
M1 M2
CLK
T1 T2 T3 T4 T1 T2 T3
PC FORA PC+1PC INST IR SBE
A15 - A8 PC S PC S
ALE
RD\
WR\
IO-M\
M1 M2
CLK
T1 T2 Twait T3 T4 T1 T2 T3
PC FORA PC+1PC INST IR SBE
A15 - A8 PC S PC S
ALE
RD\
WR\
IO-M\
Microprocessador (CPU)
Contador de Programa
(PC)
Barramento
de Endereos Barramento de Dados
Acumulador Registrador de
A ou ACC Instrues (IR)
Opcode
Outros ROM
Registradores: Unidade de
Endereo Instruo
Decodificao de
0000 h ADD B
B, C, D, E, H, L Instrues
0001 h MOV B,A
Unidade de Controle
RAM
Endereo Contedo
Unidade Lgica e Aritmtica
(ALU)
O barramento de endereos de 16 bits, sendo que os 8 bits menos significativos so usados tambm
para a transferncia de dados, enquanto que os 8 bits mais significativos so exclusivos para endereos. Assim, a
chave de trs estados desempenha um papel essencial na operao do microprocessador. Durante a comunicao
entre dois blocos os outros blocos encontram-se no estado de alta impedncia, no havendo, portanto,
transferncia de dados desses blocos para o barramento ou do barramento para estes blocos. O diagrama de
temporizao para as duas instrues mostrado na Fig. 2.6.
M1 M2
CLK
T1 T2 T3 T4 T1 T2 T3
ADD B PC FORA PC+1PC INST IR B TMP SBE A+TMPA
A15 - A8 PC S PC S
ALE
RD\
WR\
IO-M\
Supondo-se que o acumulador contenha o valor 10h e que o registrador B (que faz parte do bloco
denominado "outros registradores") contenha o valor 5h, a adio do contedo de B ao contedo de A obtido
com a instruo ADD B. O resultado guardado no prprio acumulador. Posteriormente, com a instruo MOV
B,A o contedo de A copiado em B. Os passos para execuo das duas instrues em seqncia so dados a
seguir:
CICLO DE BUSCA:
1 Na descida do sinal de clock em T1 o Contador de Programa (PC) ativado, colocando o endereo atual no
barramento de 16 bits. O sinal ALE o trigger para a transferncia dos endereos de PC para o barramento.
2 Na subida do sinal de clock em T1 o endereo transferido do barramento para a memria ROM.
3 Na descida do sinal de clock (estado T2) o PC incrementado em 1, ficando pronto para apontar a prxima
instruo. O barramento est disponvel para outras operaes. Nesse instante, tambm, O sinal RD\ torna-
se baixo, habilitando uma operao de leitura. Como o sinal IO/M\ permanece baixo, trata-se de leitura de
memria.
4 Na subida do sinal de clock (ainda estado T2) nenhum bloco est ativo. O barramento continua disponvel.
5 Na descida do sinal de clock (estado T3) o cdigo da instruo ADD B, lida da memria ROM (endereo
transferido do barramento para a memria ROM no passo 2) transferido para o barramento.
6 Na subida do sinal de clock o bloco IR (Registrador de Instruo) carrega a instruo vinda da ROM e que
est presente no barramento. Termina o ciclo de busca da instruo ADD B.
7 Na descida do sinal de clock, no incio do estado T4, o contedo de B transferido para o barramento.
8 Na subida do clock no estado T4 o contedo de B, presente no barramento, transferido para um registrador
temporrio (TMP), para, depois, ser transferido para a unidade lgica e aritmtica.
9 Durante o estado T1 do ciclo de mquina M2 no h nenhuma operao na instruo ADD B, da uma outra
instruo pode utilizar o barramento para iniciar o ciclo de busca. No caso mostrado d-se incio ao ciclo de
busca da instruo MOV B,A. Portanto, h "sobreposio busca-execuo" (SBE). Busca da instruo
MOV B,A e execuo da instruo ADD B.
10 No estado T2 do ciclo de mquina M2 a instruo iniciada (MOV B,A) no usa o barramento de
dados/endereos. Nessa fase a instruo ADD B encerrada. Na descida do sinal de clock em T2 os
contedos de A (10 h) e do registrador temporrio TMP (B = 5 h) so simultaneamente transferidos para a
Unidade Lgica e Aritmtica (ULA), de onde o resultado da adio sai direto para o barramento. Na subida
do sinal de clock em T2 o resultado da operao carregado no acumulador (A = 15 h). Encerra a
execuo da instruo ADD B.
11 No estado T3 do ciclo de mquina M2 a instruo MOV B,A lida da ROM transferida para o Registrador
de Instrues e decodificada, encerrando o ciclo de busca dessa instruo.
12 No estado T4 do ciclo M2 o contedo de A transferido para um registrador temporrio para,
posteriormente, ser transferido para o registrador B.
D7 D6 D5 D4 D3 D0 D2 D1
MSB LSB
MSB = Most Significant Bit (Bit mais significativo)
LSB = Least Significant Bit (Bit menos significativo)
a) Instrues de 1 byte:
Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0
Opcode (byte 1) 1 0 0 0 0 0 0 0 = 80 h
b) Instrues de 2 bytes:
Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0
Operando (byte 2) D7 D6 D5 D4 D3 D2 D1 D0
Opcode (byte 1) 0 0 1 1 1 1 1 0 = 3E h
Operando (byte 2) 0 0 1 1 0 0 1 0 = 32 h
c) Instrues de 3 bytes:
Opcode (byte 1) D7 D6 D5 D4 D3 D2 D1 D0
Operando 1 (byte 2=LSB) D7 D6 D5 D4 D3 D2 D1 D0
Operando 2 (byte 3 = MSB) D7 D6 D5 D4 D3 D2 D1 D0
Os bytes 2 e 3 contm um dado ou um endereo de 16 bits. O byte 2 armazena o byte menos significativo
do endereo (low-order addr) ou o byte menos significativo do dado de 16 bits (low-order data). O byte 3
armazena o byte mais significativo do endereo (high-order addr) ) ou o byte mais significativo do dado (high-
order data)
Exemplo: STA 1234h - guarda o contedo do acumulador na posio de memria indicada pelo
endereo addr
((byte 3)(byte 2) (A)
Opcode (byte 1) 0 0 1 1 0 0 1 0 = 32 h
Operando 1 (byte 2) 0 0 1 1 0 1 0 0 = 34 h
Operando 2 (byte 3) 0 0 0 1 0 0 1 0 = 12 h
No ciclo de busca (primeiro ciclo de mquina) o microprocessador 8085 transfere o primeiro byte da
instruo (opcode = cdigo de operao) para o Registrador de Instruo (IR). Nos ciclos de mquina que se
seguem os outros bytes so buscados na memria. Primeiro o byte 2 transferido para um registrador
temporrio (Z), depois o byte 3 que transferido para um registrador temporrio (W).
Cada uma das instrues pode ser visualizada com um diagrama de temporizao que mostra cada passo
da instruo.
O primeiro ciclo de mquina do 8085 flexvel podendo ter de 4 a 6 ciclos de clock; os demias ciclos
de mquina contm 3 ciclos de clock. O ciclo de instruo pode ter de 1 a 5 ciclos de mquina, como mostrado a
seguir, onde M o ciclo de mquina e T o estado dentro do ciclo de mquina:
M1 M2 M3 M4 M5
T1 T2 T3 T4 T5 T6 T1 T2 T3 T1 T2 T3 T1 T2 T3 T1 T2 T3
1. Enumerar todos os registradores (endereveis ou no) do microprocessador 8085. Qual a capacidade (em
bits) de cada um deles?
9. Dizer, em poucas palavras, a funo de cada um dos seguintes pinos do 8085: HOLD, HLDA, INTR,
INTA, RST5.5, TRAP, READY, ALE, IO/M\, SID e SOD.
10. Apresentar um circuito combinacional para decodificar os sinais dos pinos RD\, WR\ e IO/M\ em
MEM_RD, MEM_WR, IO_RD, IO_WR. OBS: Utilizar apenas gates.
11. Codifique as instrues da tabela a seguir, coloque o endereo de cada instruo, escreva o significado de
cada instruo e responda s questes relativas tabela.
Operao End. Mnemnico Comentrio
(SP) 2090 h 2000
(H,L) 2050 h
(A) 53 h
(B) 0F h
(A) (A) + (B)
((H,L)) (A)
12. O diagrama de temporizao a seguir refere-se s instrues ADD B e MOV B,A do microprocessador
8085.
CLK
T1 T2 T3 T4 T1 T2 T3 T4
ADD B PC FORA PC+1PC INST IR B TMP SBE A+TMPA
A15 - A8 PC S PC S
ALE
RD\
WR\
IO-M\
(c) Marque, no diagrama, os estados T que correspondem ao perodo de execuo da instruo MOV B,A;
(d) Marque, no diagrama, com simbologia diferente da usada no item (a), os estados T que correspondem
ao perodo de busca da instruo ADD B;
(e) Explique o significado dos sinais RD\, WR\ e IO-M\ no diagrama dado.
[1] Ziller, Roberto M., "Microprocessadores - Conceitos Bsicos,"2a. Ed., Editora do Autor,
Florianpolis, SC, 2000.
[2] Kleitz, William, "Digital and Microprocessor Fundamentals - Theory and Applications," Prentice Hall,
Englewood Cliffs, New Jersey, 1990
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
Exemplo 1:
Para transferir o contedo do registrador B para o registrador A, o mnemnico da instruo MOV A,B. A cada
mnemnico corresponde um cdigo de operao (opcode) em hexadecimal. No caso dessa instruo 78 h.
Para transferir o contedo do registrador E para o registrador D, o mnemnico da instruo MOV D,E. O
opcode 53 h.
Exemplo 2:
Para transferir o contedo do endereo 234B h da memria, a instruo e o cdigo da instruo seriam:
LDA 234B h Opcode: 3A 4B 23 (O contedo do byte menos significativo digitado primeiro)
As instrues do 8085 fazem referncia aos dados de forma explcita ou implcita. H 4 maneiras
distintas de se fazer esta referncia:
DIRETO: O 2o e o 3o bytes da instruo contm o endereo da posio de memria onde se encontra o dado.
Exemplo: LDA addr = carrega o acumulador com o dado do endereo indicado
(A) ((byte 3)(byte 2))
REGISTRO: A instruo especifica o registrador ou o par de registradores onde o dado est armazenado.
Exemplo: MOV r1, r2 = move contedo do registrador r2 para o registrador r1
(r1) (r2)
INDIRETO POR REGISTRO: A instruo especifica o registrador par (rp) que contm o endereo da posio
de memria onde o dado est armazenado.
Exemplo: MOV r, M = move para o registrador r o contedo da memria localizado na posio
indicada pelo para HL
( r ) ((H)(L))
3. Grupo Lgico - ANDs, ORs, XORs, comparaes, rotaes, ou complementos de dados em registradores
ou entre memria e um registrador.
Exemplo: ANA r = os contedos do acumulador e do registrador r so submetidos ao operador
lgico AND. O resultado guardado de volta no acumulador.
(A) (A) (r)
5. Grupo de Controle, Pilha, Entrada e Sada - Inclui instrues para manuteno da pilha, leitura de portas,
escritas para portas, setar e ler mscaras de interrupo e setar e limpar flags.
Exemplo: IN porta = O dado de 8 bits presente na porta de entrada indicada carregado no
acumulador
(A) (data)
As instrues apresentadas na tabela anterior esto na forma genrica. Cada uma dessas instrues
representada por diferentes cdigos de operao (OPCODES) para diferentes registradores. Na tabela a seguir as
instrues de transferncia de dados so desmembradas em seus diferentes opcodes.
Obs.: No se esquecer de que a subtrao no 8085 no feita diretamente. A subtrao feita atravs de uma
adio com o complementar de 2.
Na operao com complementar de 2 houve um transporte (carry), mas na subtraao no 8085 a Flag CY
o complementar do carry, ou seja, CY = 0, como deveria ser o resultado de uma subtrao direta.
1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1
+ 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 1
1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0
Carry = 0 CY = 0 Carry = 1 CY = 1
Exemplo: Suponhamos que o acumulador contm o valor 1Bh e a instruo DAA usada. O resultado depois da
instruo DAA 21 h.
Exemplo:
Mnemnico Cdigo Comentrio
MVI A,09h 3E 09 Carrega acumulador com valor 09h
MVI B,03h 06 03 Carrega registrador B com valor 03h
MVI C,10h 0E 10 Carrega registrador C com valor 10h
LXI D,1234h 11 34 12 Carrega registrador duplo DE com valor 1234h
LXI H,0123h 21 23 01 Carrega registrador duplo HL com valor 0123h
INR A 3C Incrementa 1 ao acumulador. A = 09h + 01h = 0Ah
DCR C 0D Decrementa 1 do contedo de C. C = 10h - 01h = 0Fh
INX D 13 Incrementa 1 ao registrador par DE. DE = 1234h + 1h = 1235h
DCX B 0B Decrementa 1 do contedo do registrador par BC. BC = 030Fh - 1h = 030Eh
DAD B 09 Adiciona ao registrador par HL o contedo do registrador par BC. HL =
0123h + 0310h = 0433h
DAA 27 Corrige para decimal os nibbles inferior e superior do acumulador. Antes: A
= 0Ah. Depois: A = 10h
Exemplo especial: Programa em assembly do 8085 para fazer a adio de dois nmeros com mais de 8 bits
(maiores que 255). Os nmeros so: 452 e 926. 452 decimal = 1C4 h. 926 decimal = 39E h
Obs.: Aps a primeira adio (ADD C), a flag auxiliar de carry AC assume o valor 1, porque h transporte do
bit 3 para o bit 4. Tambm h transporte do bit 7 para o bit 8 (o qual est fora da capacidade do acumulador. A
ilustrao da adio acima mostrada abaixo em decimal, hexadecimal e binrio.
Binrio
Decimal Hexa
Byte Superior Byte Inferior
1 1 1 1 1 1 1 1 1
4 5 2 1 C 4 1 1 1 0 0 0 1 0 0
9 2 6 3 9 E 1 1 1 0 0 1 1 1 1 0
1 3 7 8 5 6 2 1 0 1 0 1 1 0 0 0 1 0
Obs.: Com exceo dos casos indicados, todas as intrues lgicas afetam as Flags
Mnemnico Simbologia NO de No de Modo de Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
ANA r (A) (A) (r) 1 4 registrador todas O contedo do acumulador passa por uma operao lgica AND com o
contedo do registrador indicado em r. A flag CY zerada e a flag AC
setada.
ANA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica AND com o
registrador contedo da posio de memria apontada pelo registrador par HL. A
flag CY zerada e a flag AC setada.
ANI dado8 (A) (A) (byte 2) 2 7 imediato todas o contedo do acumulador passa por uma operao lgica AND com o
dado fornecido no byte 2 da instruo. A flag CY zerada e a flag AC
setada.
XRA r (A) (A) (r) 1 4 registrador todas O contedo do acumulador passa por uma operao lgica XOR com o
contedo do registrador r indicado. As flags CY e AC so zeradas.
XRA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica XOR com o
registrador contedo do endereo de memria apontado pelo registrador par HL. As
flags CY e AC so zeradas.
XRI dado8 (A) (A) (byte 2) 2 7 imediato todas o contedo do acumulador passa por uma operao lgica XOR com o
dado fornecido no byte 2 da instruo. As flags CY e AC so zeradas.
ORA r (A) (A) (r) 1 4 registrador todas O contedo do acumulador passa por uma operao lgica OR com o
contedo do registrador indicado em r. As flags CY e AC so zeradas.
ORA M (A) (A) ((H)(L)) 2 7 indireto por todas O contedo do acumulador passa por uma operao lgica OR com o
registrador contedo da posio de memria apontada pelo registrador par HL. As
flags CY e AC so zeradas.
ORI dado8 (A) (A) (byte 2) 2 7 imediato todas O contedo do acumulador passa por uma operao lgica OR com o
dado presente no byte 2 da instruo. As flags CY e AC so zeradas.
CMP r (A) - (r) 1 4 registrador todas Compara o contedo do registrador r com o contedo do acumulador. Na
operao o contedo de r subtrado do contedo de A, sem que o
resultado seja guardado em A. Se o resultado da subtrao for zero, ou
seja (A) = (r), a flag de zero Z = 1. Caso contrrio, Z = 0. Se (A) < (r), a
flag de carry CY = 1. Caso contrrio, CY = 0.
CMP M (A) (A) - ((H)(L)) 2 7 indireto por todas Compara o contedo da posio apontada pelo par HL com o contedo
registrador do acumulador. Na operao o contedo da posio apontada por HL
subtrado do contedo de A, sem que o resultado seja guardado em A. Se
o resultado da subtrao for zero, ou seja (A) = ((H)(L)), a flag de zero Z
Instrues de Desvio:
Mnemnico Simbologia NO de No de Modo de Flags Comentrio
Genrico Ciclos Estados Endereamento Afetadas
JMP addr (PC) (byte 3)(byte 2) 3 10 imediato nenhuma (Jump to address) = O controle transferido incondicionalmente para a instruo
cujo endereo dado no segundo e no terceiro bytes da instruo de desvio.
Jcondio addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump to address if CCC) = Se a condio indicada for verdadeira o controle
(PC) (byte 3)(byte 2) transferido para a instruo cujo endereo dado no segundo e no terceiro bytes
da instruo de desvio. Caso a condio seja falsa, o processamento continua
sequencialmente.
JNZ addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Not Zero) = Desvia para o endereo indicado se o resultado da operao
(PC) (byte 3)(byte 2) aritmtica anterior a esta instruo no for zero, ou seja, desvia se Z = 0.
JZ addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Zero) = Desvia para o endereo indicado se o resultado da operao
(PC) (byte 3)(byte 2) aritmtica anterior a esta instruo for igual a zero, ou seja, desvia se Z = 1.
JNC addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if No Carry) = Desvia para o endereo indicado se a flag de Carry estiver
(PC) (byte 3)(byte 2) zerada (CY = 0).
JC addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Carry) = Desvia para o endereo indicado se a flag de Carry estiver
(PC) (byte 3)(byte 2) setada (CY = 1).
JPO addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Parity Odd) = Desvia para o endereo indicado se a paridade for mpar,
(PC) (byte 3)(byte 2) ou seja, se a flag de Paridade for zero (P = 0).
JPE addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Parity Even) = Desvia para o endereo indicado se a paridade for Par,
(PC) (byte 3)(byte 2) ou seja, se a flag de Paridade estiver setada (P = 1).
JP addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Plus) = Desvia para o endereo indicado se o valor no acumulador for
(PC) (byte 3)(byte 2) um nmero positivo, ou seja, tiver o stimo bit zerado, ou ainda se a flag de Sinal
estiver zerada (S = 0).
JM addr Se (CCC), ento, 2/3 7/10 imediato nenhuma (Jump if Minus) = Desvia para o endereo indicado se o valor no acumulador for
(PC) (byte 3)(byte 2) um nmero negativo, ou seja, tiver o stimo bit setado, ou ainda se a flag de
Sinal estiver setada (S = 1).
CALL addr ((SP) - 1) (PCH) 5 18 imediato e nenhuma (Call address) = Chamada de subrotina. O processamento desviado para o
((SP) - 2) (PCL) indireto por endereo indicado em addr, que dado pelos bytes 2 e 3 da instruo. Antes do
desvio para a subrotina, o endereo da prxima instruo guardado na pilha. O
(SP) (SP) - 2 registrador
byte superior do endereo da prxima instruo guardado na posio SP - 1 da
(PC) (byte 3)(byte 2) pilha e o byte inferior guardado na posio SP - 2 da pilha. Ao final da
subrotina a instruo RET faz o processamento voltar para o programa principal
no endereo que foi guardado na pilha.
Ccondition addr ((SP) - 1) (PCH) 2/5 9/18 imediato e direto nenhuma (Call address if CCC is true) = Chamada de subrotina condicional. O
((SP) - 2) (PCL) por registrador processamento desviado para o endereo indicado em addr se a condio
indicada em CCC for verdadeira. O endereo dado pelos bytes 2 e 3 da
(SP) (SP) - 2 instruo. Antes do desvio para a subrotina, o endereo da prxima instruo
(PC) (byte 3)(byte 2) guardado na pilha. O byte superior do endereo da prxima instruo guardado
na posio SP - 1 da pilha e o byte inferior guardado na posio SP - 2 da pilha.
Ao final da subrotina a instruo RET faz o processamento voltar para o
programa principal no endereo que foi guardado na pilha.
(a) O contedo guardado na pilha sempre de 16 bits. Assim, o microprocessador normalmente guarda
o contedo de PC, que j de 16 bits, mas o usurio normalmente guarda o contedo de
registradores de 8 bits, que ento so associados 2 a 2;
(b) Os registradores duplos que podem ser guardados na pilha so PSW (= A + Flags), B (= B + C), D (=
D + E) e H (= H + L);
(c) Para guardar o contedo de um desses registradores duplos usa-se a instruo PUSH rp;
(d) Para recuperar o contedo que foi guardado na pilha usa-se a instruo POP rp;
(e) Quando uma informao enviada para a pilha o byte mais significativo guardado primeiro; isso
significa que o byte menos significativo vai ser retirado primeiro porque o ltimo dado armazenado
o primeiro a ser retirado;
(f) A pilha do 8085 evolui do maior endereo para o menor, ou seja, a cada vez que uma informao (2
bytes) enviada para a pilha, o endereo do topo da pilha reduzido de 2. Ele acrescido de 2
quando a informao retirada da pilha;
(g) O apontador de pilha SP aponta sempre para o topo da pilha, mas ele incrementado de 1 antes de
cada byte ser armazenado.
Observaes:
(a) Apesar da regio da pilha continuar com o mesmo contedo aps as instrues POP rp, eles no acessveis
porque o Apontador de Pilha SP aponta para a posio original, de quando a pilha estava vazia;
(b) POP B vem antes de POP PSW porque a ordem de retirada da pilha inversa ordem de armazenagem.
3. Exemplo usando comparao entre registradores (A e B). A operao de comparao e volta repetida at o
valor de B alcanar o valor 08h, quando ento a flag de carry setada, fazendo o processamento encerrar.
4. Exemplo similar ao anterior, mas usando a instruo JC endereo, ao invs de JNC endereo.
6. Outra verso de programa que faz a multiplicao de 4 por 3. A instruo ADI Dado8 substituda pela
instruo ADD B. O acumulador vai assumir os valores 00 h, 04 h, 08 h e, finalmente, 0C h, isto 12
decimal.
8. Programa que gera uma contagem crescente, em hexadecimal, de 00 h a FF h e envia o resultado para a
sada 1.
Obs.: Nesse programa o acumulador inicia com valor 00h e encerra quando o acumulador volta para o valor 00h,
aps passar por todos os valores de 00 a FFh.
9. Subrotina de atraso de 1 ms. feita a suposio de que um programa chama a subrotina denominada atraso,
que dada logo a seguir. suposto um tempo de 1s para cada estado.
_____
_____
CALL atraso
_____
_____
4. Explique em poucas palavras como funciona a pilha no 8085. Mostre, atravs de um mapa de memria, a
evoluo da pilha quando se realiza as seguintes instrues, na seqncia mostrada:
PUSH B, PUSH D, ADD B, PUSH PSW, ADD D, POP PSW, OUT 90, POP D, POP B
5. Mostre, atravs de um mapa de memria, a evoluo da pilha quando se executam as seguintes instrues,
na seqncia mostrada:
PUSH PSW, PUSH B, CALL ADIO, (RET), MOV B, A, POP B, POP PSW
7. Considere o programa abaixo, em mnemnico, e responda as questes a seguir, sabendo que a subrotina no
endereo 0200 h provoca um retardo de 1ms e afeta o registrador B.
8. Escreva um programa que produz um retardo de 1 s, sabendo que o 8085 acionado por um cristal de 6
MHz.
9. Escreva, a partir do endereo 4050 h, uma sub-rotina que produza um retardo de 0.5 ms, aproximadamente.
Suponha que a freqncia do cristal do 8085 seja 4,096 MHz.
10. Escreva um programa (usando bytes imediatos para os dados) que soma os decimais 500 e 650.
11. Descreva as etapas do ciclo de execuo das instrues a seguir e explicar o que ocorre com os sinais de
controle envolvidos e os sinais de endereos e dados:
a) MOV B, M
b) LXI D, 4050 h
c) MOV E, B.
12. Faa o comentrio de cada linha do programa abaixo e, a seguir, explique qual a finalidade do programa
completo. Complete os endereos.
Reset
cone para
mostrar os
mnemnicos
LEDs para
Memria RAM: Chaves para
Endereo, cdigo entrada de dados
em hexadecimal
e mnemnico
Contedo da
memria RAM
O simulador conta com todas as possveis instrues do 8085, cujos mnemnicos so mostrados quando o
cone "Assembler" pressionado. Pode tambm ser mostrado atravs do "menu" chamado de "ferramentas". Os
mnemnicos, do jeito que aparecem no ABACUS, so mostrados a seguir.
Da mesma forma que o kit didtico, o ABACUS tem algumas sub-rotinas j prontas na memria ROM.
No caso do ABACUS so apenas 4, mostradas na tela a seguir, cujo acesso, no ABACUS, atravs do "menu"
"Opes".
Nesse momento interessante refazer o exemplo usado com o kit didtico. Trs detalhes devem ser
observados:
1. A memria RAM do ABACUS comea no endereo 2000 h, ao invs de 4000 h.
2. No h necessidade de usar uma subrotina para apagar o display no ABACUS. No kit essa subrotina
essencial.
3. fundamental definir a posio da pilha no ABACUS, atravs do comando LXI SP, xx xx. Caso
contrrio, pode ocorrer erros, com o simulador tentando acessar endereo fora da faixa permitida.
Exemplo 1: Faa no ABACUS um programa que executa uma contagem crescente em hexadecimal de 00
h at 60 h.
Exemplo 2: Faa no ABACUS um programa que executa, de forma ininterrupta, uma contagem
hexadecimal crescente de 00h at 60h seguida de uma contagem hexadecimal decrescente de 60h at 00h.
Label Mnemnico
Incio LXI SP,2090H
MVI A,00H
SP 2090 h
volta: PUSH PSW
A 00 h CALL MOSTRAA
POP PSW
CPI 60H
AA+1 Mostra A JZ decresce
cresce: INR A
N JMP volta
A = 60 h? decresce: DCR A
S PUSH PSW
CALL MOSTRAA
AA1
POP PSW
CPI 00H
Mostra A JZ cresce
JMP decresce
N
A = 00 h?
S
4. Faa no ABACUS um programa que seleciona e mostra no display o maior nmero contido em uma tabela
inserida na memria. A tabela contm nmeros aleatrios e tem incio no endereo 2050h e termine no
endereo 205Fh.
6. Faa no ABACUS um programa que seleciona e mostra no display os nmeros mpares contidos em uma
tabela inserida na memria. A tabela contm nmeros aleatrios e tem incio no endereo 2050h e termine
no endereo 205Fh. Use uma subrotina de atraso com D = 02 h entre os valores mostrados no display.
7. Faa no ABACUS um programa que faz a ordenao em ordem crescente de uma tabela contendo 16
nmeros de 8 bits. Os nmeros j esto na memria a partir do endereo 2050h e devem ser mantidos nessa
faixa de endereos, porm, ordenados.
9. Faa no ABACUS um programa que seleciona e mostra no display os nmeros maiores ou iguais a 20h e
menores que 50h, de uma tabela com 16 nmeros, comeando do endereo 2050 h.
Sugesto de tabela: 05h, 15h, 65h, 95h, 35h, 20h, 50h, 42h, 72h, 10h, 60h, 45h, 33h, 25h, 48h, 49h
11. Faa no ABACUS um programa que mostra um nmero (1 byte), lido pelo teclado, e multiplique este
nmero por outro nmero, tambm obtido pelo teclado, mostrando o resultado no display. O resultado
dever conter 2 bytes.
12. Faa no ABACUS um programa que leia do teclado uma temperatura em oC (um byte) e converta-a em oF
(graus Farenheit) mostrando o resultado no display. (o programa s deve aceitar temperaturas de entrada de
at 255 graus farenheit, ou seja, um byte na sada). Trabalhar em hexadecimal.
13. Faa no ABACUS um programa que adicione dois nmeros binrios de qualquer tamanho (N bytes cada
um). O tamanho dos nmeros binrios (N) est na posio 2040 h. Os nmeros comeam nas posies 2041
e 2061 (1o byte o menos significativo). O resultado deve substituir o nmero que comea na posio 2041.
14. Escrever uma sub-rotina que divida dois nmeros de 8 bits. Os dois nmeros esto nas posies 2050
(dividendo) e 2051 (divisor). O quociente deve ser armazenado na posio 2052 e o resto na posio 2053.
15. Faa no ABACUS um programa que l um nmero de 1 byte pelo teclado (dividendo), em seguida l outro
nmero de 1 byte pelo teclado (divisor), faz diviso e mostra o quociente no display de endereos e o resto
no display de dados.
16. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 3 + 5.
17. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 5- 2.
18. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 3( + 5).
19. Faa no ABACUS um programa que l um nmero "" pelo teclado e mostra no display o resultado da
operao 5( - 2).
20. O trecho de programa dado abaixo usado para montar uma tabela de 10 nmeros (cada um com dois
dgitos).
LABEL MNEMNICO LABEL MNEMNICO
LXI SP,2080h LEITURA: PUSH H
LXI H,2050h CALL LETECLA
MVI C,0Ah RLC
L_PRXIMO: CALL leitura RLC
MOV M,A RLC
PUSH H RLC
PUSH B MOV B,A
CALL MOSTRAA CALL LETECLA
POP B ORA B
POP H POP H
INX H RET
DCR C
JNZ L_PRXIMO
21. Codifique as instrues dadas a seguir usando o mnemnico do 8085; indique o endereo de cada instruo
e indique o contedo dos registradores pedidos e das flags de carry e de zero, aps a execuo da instruo
indicada.
60
30
30 70 Dado de entrada
(a)
Label Mnemnico
S
A < 15 h ?
S
A > 45 h ?
Mostra A
CC1
(b)
Label Mnemnico
EE+1 AAB
S
CY = 0?
N
AE
Mostra A
Fim
24. Faa, para executar no ABACUS, um programa que l um nmero x de 1 dgito pelo teclado e mostra no
display de dados o resultado de x2 2.
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
O laboratrio de microprocessadores conta com um Kit Didtico para realizao de experimentos usando
o microprocessador 8085. Esse Kit j possui vrias sub-rotinas no programa residente (chamado de programa
monitor). Elas so dadas a seguir, juntamente com uma breve descrio e com os endereos onde elas esto
armazenadas.
O programa a ser executado pelo Kit deve ser digitado atravs do teclado e deve ser usado o cdigo
hexadecimal de cada instruo. No exemplo anterior aparece uma coluna com os cdigos das instrues e com
os dados em hexadecimal. Por exemplo, o cdigo 3Eh corresponde instruo MVI A; logo a seguir aparece
00 h, que o dado a ser transferido para o acumulador.
Na instruo seguinte CALL APDIS, verifica-se que CD o cdigo da instruo de chamada de
subrotina CALL, A1 o byte menos significativo do endereo da subrotina chamada e 05 o byte mais
significativo do endereo.
Obs: Em toda instruo que contm endereo ou dado de 16 bits o byte menos significativo digitado
primeiro.
A figura a seguir ilustra o teclado e o display do Kit didtico. Cada uma das teclas do teclado da direita
apresenta 2 ou 3 funes. Uma delas um dgito hexadecimal, que vai de 0 a F. A outra uma das funes
explicadas a seguir.
RB, RC, RD, RE, RA e RF Estas teclas permitem visualizar no display de dados o contedo dos registradores
B, C, D, E, A e F. Elas devem ser precedidas da tecla XRG. Ou seja, quando se deseja visualizar, por
exemplo, o contedo do acumulador (registrador A), usa-se as teclas <XRG> <RA>
SP Permite visualizar o contedo do apontador de pilha, ou seja, o endereo atual de armazenagem ou leitura
da pilha. Usa-se as teclas <XRG> <SP>.
M Permite visualizar o contedo de memria cujo endereo dado pelo par HL. Ao digitar-se <XRG> <M>,
o contedo dos registradores H e L mostrado no display de endereos e o contedo da posio de memria
correspondente mostrado no display de dados.
SUB Substitui-se o contedo de uma determinada posio de memria por outro byte. Usa-se digitando essa
tecla, seguida do endereo desejado. O contedo atual aparece no display de dados quando, ento, pode-se
substitudo. Em seguida digita-se <EXC>. Resumindo:
<SUB> <endereo>
<novo contedo> <EXC>
DSP Permite mostrar (Display) o contedo de uma determinada posio de memria. Uso:
<DSP> <endereo desejado>
DNX Permite mostrar no display o contedo do prximo endereo de memria, aps o uso da tecla DSP.
Usando repetidas vezes essa tecla, pode-se percorrer todo o programa digitado.
DMN Permite mostrar no display de dados o contedo de memria do endereo anterior ao atual. usado da
mesma forma que a tecla DNX.
GO usada para executar o programa. Uso: <GO> <endereo de incio do programa> <EXC>
SST Permite executar o programa passo-a-passo. Uso: <SST> <endereo de incio do programa> <NXT>
RST usada para ressetar o programa, ou seja, zerar o contedo do contador de programa e de outros
registradores.
Como exemplo, mostra-se como o programa usado na seo anterior digitado no kit didtico.
<INS> <4000>, <3E>, <00>, <CD>, <0B>, <07>, <F5>, <CD>, <A1>, <05>, <F1>, <3C>, <C3>, <02>, <40>
<EXC>
Convm, neste ponto, usar a tecla <RST> para zerar o contador de programa.
Obs.: Somente o endereo inicial digitado. A cada novo dado digitado o endereo automaticamente
incrementado.
Obs.: Provavelmente a contagem ser to rpida que no ser vista no display porque nenhuma subrotina de
atraso de tempo foi usada.
Sugere-se, como exerccio, adicionar uma subrotina de atraso de tempo aps a instruo CALL DBYTE.
Usar, por exemplo, DEL 1, cujo endereo 0770 h. Assim, acrescenta-se essa subrotina CALL DEL 1 da
seguinte forma:
<INS> <4009>, <CD>, <70>, <07>, <F1>, <3C>, <C3>, <02>, <40> <EXC>
Obs.: No kit didtico no h como deslocar os comandos que j tinham sido digitados depois da instruo CALL
DBYTE. Assim, todos eles foram digitados novamente aps a instruo CALL DEL 1. Observar sempre que
o byte menos significativo de um endereo digitado primeiro. O endereo 4009 h foi usado porque ele o
primeiro endereo depois da instruo CALL DBYTE.
importante ainda frisar como feita a distribuio de memria no Kit Didtico. A memria ROM
consiste em uma pastilha de memria 2716, de 2 kbytes, o que significa 2048 posies de 8 bits cada uma. Sendo
2048 = 800 h, os endereos vo de 000 h at 7FF h. A memria RAM consiste em 6 pastilhas de memria 2114,
de 1 kbyte. Porm, cada posio de memria da pastilha 2114 contm apenas 4 bits, o que torna necessrio o uso
de duas a duas para formar 1 byte (8 bits). Em cada conjunto de 2 pastilhas em paralelo o de acesso vai de 000 h
at 3FF h.
A figura a seguir ilustra a distribuio de memria no Kit Didtico. Procura-se mostrar a memria do
modo como ela est colocada no kit.
Observar que o ltimo endereo de memria ROM 07FF h e que o ltimo endereo de memria RAM
4BFF h.
EXPERIMENTO 1
Objetivo: Familiarizao com o simulador ABACUS e com o kit didtico
2. Inclua, aps a instruo CALL MOSTRAA, uma subrotina de atraso de tempo com D = 05 h, execute o
programa novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser
includo mostrado a seguir:
Endereo Mnemnico
2009 MVI D, 05
200B CALL DELAY
200E POP PSW
200F INR A
2010 JMP 2005
4. Inclua, aps a instruo CALL DBYTE, a subrotina de atraso de tempo DEL 1 (50 ms), execute o programa
novamente e observe o aumento no tempo entre cada valor mostrado no display. O trecho a ser includo
mostrado a seguir:
5. Questes do Experimento 1
EXPERIMENTO 2
Objetivo: Familiarizao com as instrues de transferncia de dados
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
3. Questes do Experimento 2
EXPERIMENTO 3
Objetivo: Familiarizao com as instrues aritmticas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao End. Mnemnico 2Comentrio
(H,L) 2050h 2000 LXI H, 2050
((H,L)) 10 h 2003
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao End. Mnemnico Cdigo Comentrio
(H,L) 4050h 4000 LXI H, 4050 21 50 40
((H,L)) 10 h 4003
(E) 05 h
(A) 01 h
(B) FF h
(A) (A) + (B)
(A) (A) + ((H,L)) + CY
(A) (A) + 21 h
(A) (A) - (E)
(A) (A) - (B) - CY
(A) (A) - 33 h
(B,C) 2F01 h
(B) (B) + 1
(C) (C) - 1
(B,C) (B,C) - 1
3. Questes do Experimento 3
EXPERIMENTO 4
Objetivo: Familiarizao com as instrues lgicas do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
1. Codifique as operaes dadas na tabela a seguir e insira no ABACUS os mnemnicos resultantes. Depois,
execute cada instruo PASSO-A-PASSO, observando o que ocorre no registrador, ou nos registradores e
posies de memria envolvidas.
Operao End Mnemnico Comentrio
(A) 0F h 2000
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 2040 h
((H,L)) FF h
(A) (C) ((H,L))
(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
2. Complete a tabela dada a seguir, fazendo uma adaptao do que foi feito na tabela anterior. Acrescente os
cdigos das operaes e insira-os no kit didtico. Execute cada instruo PASSO-A-PASSO, observando o
que ocorre no registrador, ou nos registradores e posies de memria envolvidas.
Operao End Mnemnico Cdigo Comentrio
(A) 0F h 4000
(B) EA h
(C) 52 h
(A) (A) (C)
(H,L) 4040 h
((H,L)) FF h
(H,L) 0000 h
(A) (C) ((H,L))
(A) (A) 44 h
(A) (A) 23 h
(A) 33 h
(An+1) (An)
(A0) (A7)
(CY) ( CY )
(A) - (B)
3. Questes do Experimento 4
(a) Qual o contedo final dos registradores A, B, C, H e L no ABACUS?
(b) Qual o valor final das flags de carry CY e de zero, no ABACUS, aps a instruo de comparao (A) 33
h? E o contedo de A?
(c) Qual o contedo das flags de carry CY e de zero Z, no kit didtico, aps a instruo de comparao (A)
(B)? E o contedo de A?
EXPERIMENTO 5
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS
Roteiro:
1. O programa a seguir gera os mltiplos de 4, a partir de 4 at 20 h. Esses valores so armazenados na
memria a partir do valor dado para HL. Insira os mnemnicos no ABACUS e execute o programa.
Observe o resultado.
Label Mnemnico Label Mnemnico
INCIO
LXI SP, 2090 h POP B
LXI H, 2050 h INX H
MVI C,01 h INR C
MVI B,04 h JMP volta A 00 h
volta: MVI A,00 h fim: HLT
PUSH B
CALL produto produto: ADD B P1 A
MOV M,A DCR C AA+1
CPI 20h JNZ subrotina
JNC fim RET
2. O programa a seguir uma nova verso do programa anterior incluindo a subrotina para mostrar os
mltiplos de 4 no display de dados e retirando as instrues para armazenamento na memria.
Label Mnemnico Label Mnemnico
LXI SP, 2090 h JNC fim
MVI C,01 h POP B
MVI B,04 h INR C
volta: MVI A,00 h JMP volta
PUSH B fim: HLT
CALL produto
PUSH PSW produto: ADD B
CALL MOSTRAA DCR C
POP PSW JNZ subrotina
CPI 50h RET
3. O programa a seguir uma nova verso dos programas anteriores, onde o nmero para o qual se deseja os
mltiplos inserido atravs do teclado.
Label Mnemnico Label Mnemnico
LXI SP, 2090 h JNC fim
MVI C,01 h POP B
CALL LETECLA INR C
MOV B,A JMP volta
volta: MVI A,00 h fim: HLT
PUSH B
CALL produto
PUSH PSW produto: ADD B
CALL MOSTRAA DCR C
POP PSW JNZ subrotina
CPI 50h RET
4. Questes do Experimento 5
(a) Por que foram usadas as instrues PUSH B e POP B no primeiro programa?
(b) Por que foram usadas as instrues PUSH PSW e POP PSW no segundo e no terceiro programas?
(c) Observando o programa durante a execuo, verifica-se que ele vai ficando mais lento na medida em que os
mltiplos maiores vo sendo mostrados. Por que isso acontece?
(d) Voc pode sugerir uma maneira de resolver o problema citado no item anterior?
(e) Qual a finalidade da instruo CPI 50 h no segundo e no terceiro programas?
EXPERIMENTO 6
Objetivo: Programao com o assembly do 8085
Material: Computador com o simulador ABACUS e kit didtico
Roteiro:
N S
A = 00h ?
2. O programa a seguir uma nova verso do programa anterior, mas com contagem em decimal que vai de
00 a 99 e volta para 00, de forma ininterrupta.
Label Mnemnico Label Mnemnico
LXI SP, 2090 h decresce: PUSH PSW
MVI A,00 h CALL MOSTRAA
cresce: PUSH PSW POP PSW
CALL MOSTRAA ADI 99 h
POP PSW DAA
ADI 01 h CPI 00 h
DAA JNZ decresce
CPI 99 h JMP cresce
JNZ cresce HLT
3. O programa a seguir uma adaptao do programa anterior (contagem decimal) para ser executado no kit
didtico. Codifique o programa e insira-o no kit didtico.
Label Mnemnico Cdigo Label Mnemnico Cdigo
LXI SP, 4090 h decresce: CALL APDIS
MVI A,00 h PUSH PSW
cresce: CALL APDIS CALL DBYTE
PUSH PSW CALL DEL1
CALL DBYTE POP PSW
CALL DEL1 ADI 99 h
POP PSW DAA
ADI 01 h CPI 00 h
DAA JNZ decresce
CPI 99 h JMP cresce
JNZ cresce HLT
4. Questes do Experimento 6
(a) Por que a instruo INR A foi substituda pela instruo ADI 01 h no programa 2?
(b) Por que foi usada a instruo ADI 99 h nos programas 2 e 3, ao invs de DCR A, como no programa 1?
(c) Por que foi usada a instruo CALL APDIS no programa 3?
(d) Por que foi usada a instruo CALL DEL1 no programa 3?
(e) Substitua a instruo CALL DEL1 por CALL DEL2 e observe o efeito?
EXPERIMENTO 7
Objetivo: Programao com o assembly do 8085 e uso de INTERRUPES
Material: Computador com o simulador ABACUS e kit didtico
1. Execute os programas dados a seguir usando o simulador ABACUS e usando o mdulo didtico.
Programa 1: Usa subrotinas para gerar de forma ininterrupta uma sequncia crescente de 00 h a FF h no display
de dados, seguida de uma seqncia decrescente (FF h a 00 h). Complete os cdigos.
Programa 2: Adapte o programa 1 para que a contagem crescente seja chamada atravs da interrupo RST 7.5 e
a contagem decrescente seja chamada pela interrupo RST 6.5. Desabilite a interrupo RST 5.5.
crescente: DI F3 crescente: DI F3
PUSH PSW F5 PUSH PSW F5
CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI FF FE FF CPI FF FE FF
RZ C8 RZ C8
INR A 3C INR A 3C
JMP crescente C3 ___ ___ JMP crescente C3 ___ ___
decresc: DI F3 decresc: DI F3
DCR A 3D DCR A 3D
PUSH PSW F5 PUSH PSW F5
CALL MOSTRAA CD 6E 03 CALL APDIS CD 0B 07
MVI D,01h 16 01 CALL DBYTE CD A1 05
CALL DELAY CD F1 05 CALL DEL1 CD 70 07
POP PSW F1 POP PSW F1
CPI 00 FE 00 CPI 00 FE 00
RZ C8 RZ C8
JMP decresc C3 ___ ___ JMP decresc C3 ___ ___
20CB h: JMP decresc C3 ___ ___ 4BDA h: JMP decresc C3 ___ ___
20CE h: JMP crescente C3 ___ ___ 4BD7 h: JMP crescente C3 ___ ___
Perguntas:
2. Quais os comandos a serem usados para bloquear a interrupo RST 7.5 e usar a interrupo RST6.5
para a contagem crescente e a RST 5.5 para a contagem decrescente?
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Digibyte, Manual do Usurio do Kit Didtico KMD85, Abril de 1984.
O 8085 tem 8 instrues de recomeo por software (restart), que so: RST 0, RST 1, RST 2, RST 3,
RST 4, RST 5, RST 6 e RST 7. Estas instrues so para chamadas de subrotinas que so usadas com
frequncia. O efeito de uma instruo RST o mesmo de uma chamada de subrotina, com uso da pilha para
guardar o endereo de retorno. A diferena que cada instruo RST desvia o processamento para um endereo
predeterminado, como mostra a tabela abaixo. Um outro detalhe que a chamada de uma RST feita com
apenas 1 byte de cdigo, ao contrrio de uma chamada de subrotina normal, que feita com 3 bytes de cdigo.
Do mesmo modo que no caso de uma subrotina comum, quando uma instruo RET encontrada o
processamento volta para o programa principal.
INSTRUES DE RECOMEO
Instruo Efeito Cdigo de Posio do Vetor
Operao
RST 0 CALL 0000h C7 0000h
RST 1 CALL 0008h CF 0008h
RST 2 CALL 0010h D7 0010h
RST 3 CALL 0018h DF 0018h
RST 4 CALL 0020h E7 0020h
RST 5 CALL 0028h EF 0028h
RST 6 CALL 0030h F7 0030h
RST 7 CALL 0038h FF 0038h
Verifica-se da tabela acima que h apenas 8 posies (8 bytes) disponveis para cada instruo de
recomeo. Sendo assim, normalmente essas posies vetoradas so usadas apenas para desviar para uma
subrotina que frequentemente usada e que no caberia em apenas 8 posies. Uma instruo de desvio
incondicional JMP addr ento usada. A chamada da subrotina atravs de uma dessas instrues de recomeo
mais eficiente que a chamada direta da subrotina.
6.2 Interrupes
Alm das 8 instrues de recomeo por software, o 8085 possui 4 instrues de recomeo por hardware
(Interrupes Externas). Essas instrues so chamadas de TRAP (pino 6), RST 7.5 (pino 7), RST 6.5 (pino
8) e RST 5.5 (pino 9). Quando qualquer desses pinos ativado, os circuitos internos do 8085 produziro uma
chamada de subrotina ( CALL ) por hardware que desviaro o processamento para o endereo predeterminado. A
tabela das posies de recomeo por hardware (interrupes externas) dada a seguir.
As operaes de entrada e sada por interrupo usam uma das interrupes por hardware dadas na tabela,
de forma que, quando o perifrico est pronto para a transferncia de dados a interrupo selecionada acionada,
permitindo a transferncia de dados de uma forma mais rpida que a transferncia Programada.
Interrupes do 8085
Instruo Efeito Cdigo Posio Pino
de Operao do Vetor
TRAP CALL 0024h no tem 0024 h 6
RST 5.5 CALL 002Ch no tem 002C h 9
RST 6.5 CALL 0034h no tem 0034 h 8
RST 7.5 CALL 003Ch no tem 003C h 7
As interrupes externas tem uma ordem de prioridade, de forma que, no caso de dois ou mais pedidos
simultneos de interrupo, a ordem de atendimento :
8085
Ativada apenas por Nvel RST 6.5
TRAP - acionada simultaneamente por nvel e por transio. usada para eventos catastrficos tais
como falhas na alimentao eltrica e erros de paridade.
RST 7.5 - acionada por transio somente
RST 6.5 - acionada apenas por nvel
RST 5.5 - acionada apenas por nvel
INTR - acionada apenas por nvel. Essa interrupo em particular, permite a expanso da capacidade
de interrupes do 8085. Atravs desse pino um dispositivo de suporte pode ser usado para
aumentar os pinos de interrupo.
RESET IN
Pino 36
RECONHECIMENTO
DE TRAP
No circuito da Fig. 6.2 o sinal alto de clock habilita a porta AND na sada do Flip-Flop, enquanto que a
transio do clock do nvel baixo para o nvel alto faz com que a sada do Flip-Flop assuma o valor 1 e,
consequentemente, a sada geral do circuito da interrupo TRAP assume o valor 1, fazendo com que o
processamento seja desviado para o endereo 0024 h.
Um sinal baixo no pino RESET IN ou um sinal alto de RECONHECIMENTO DE TRAP limpa o pedido
de interrupo.
A Fig. 6.3 mostra os circuitos para as interrupes RST 7.5, RST 6.5 e RST 5.5. Observe que as portas
AND de sada dos circuitos das interrupes tem trs entradas. O sinal IE estando alto, todas as interrupes
esto habilitadas. Esse sinal fica alto quando a instruo EI (entrada do flip-flop) executada. Se nenhuma das
interrupes estiver com mscara, ento os sinais M7.5, M6.5 e M5.5 permanecem em nvel baixo e,
consequentemente as respectivas entradas das portas AND estaro altas. Dessa forma, todas as interrupes
estaro aptas a serem acionadas.
Um pulso ascendente (transio do nvel baixo para o nvel alto) no pino 7 faz com que a sada I7.5 do
flip-flop correspondente interrupo RST 7.5 fique alta, acionando essa interrupo.
Um nvel alto no pino 8 faz com que a interrupo RST 6.5 seja executada e um nvel alto no pino 9 faz
com que a interrupo RST 5.5 seja executada. Os sinais I7.5, I6.5 e I5.5 quando esto em nvel alto indicam que
h interrupo pendente.
Um sinal R7.5 alto limpa uma interrupo RST 7.5 pendente. Um sinal de Reconhecimento de
interrupo RST 7.5 tambm faz com que a sada do flip-flop seja zerada, limpando qualquer interrupo RST
7.5 pendente.
O bloqueio total das interrupo mostradas na Fig. 6.3 pode ser feito de trs maneiras distintas: (a) atravs
da instruo DI (Desable Interrupt), que desabilita todas as interrupes, com exceo da TRAP; (b) atravs de
um sinal alto no pino 36 (RESET IN) ou (c) atravs de um sinal alto de reconhecimento de qualquer interrupo.
1 I 7.5
D Q
Pino 7
Flip-flop
RST 7.5
R 7.5 CLR
RECONHECIMENTO
DE RST 7.5
EI IE
DI S Q
Flip-flop
RESET IN R
QUALQUER RECONHECIMENTO
DE INTERRUPO
Fig. 6.3: Circuitos das interrupes RST 7.5, RST 6.5 e RST 5.5
A setagem de mscara tambm mostrada na Fig. 6.3. Verifica-se que um sinal alto MSE (Mask Set
Enable) necessrio para habilitar qualquer das mscaras de interrupo. A partir da, desejando-se mascarar
(no permitir a execuo) a interrupo RST 7.5, o sinal M7.5' deve ser levado ao nvel alto. Desejando-se
mascarar a interrupo RST 6.5 o sinal M6.5' deve estar em nvel alto. E, finalmente, se a interrupo que se
deseja mascarar a RST 5.5, o sinal M5.5'deve ficar em nvel alto.
SMBOLO SIGNIFICADO/COMENTRIO
I7.5, I6.5, I5.5 Interrupes Pendentes - assumem valor 1 quando h interrupo pendente
IE Flag que indica (com valor 1) quando as interrupes esto habilitadas
M7.5, M6.5 e M5.5 Mscaras de Interrupo (Sinal baixo habilita as portas AND) - podem
desabilitar uma interrupo pendente. Sinal alto interrupo bloqueada
RST 7.5, RST 6.5 e RST 5.5 interrupes mascarveis podem ser bloqueadas via software
TRAP no mascarvel nem passvel de habilitao/desabilitao por EI/DI
EI Enable Interrupt - Instruo usada para habilitar todas as interrupes, exceto a
TRAP. Ativo alto.
DI Disable Interrupt - Instruo que Desabilita as Interrupes, exceto a TRAP
(baixo)
MSE Mask Set Enable - Habilita a setagem de mscara. Quando alto as mscaras
M7.5', M6.5' e M5.5' podem ser reconhecidas
RESET IN \ A inicializao do sistema desabilita as interrupes pendentes e zera o flip-flop
da TRAP
QUALQUER Quando qualquer das interrupes atendida, um sinal alto desabilita as
RECONHECIMENTO DE interrupes pendentes, menos a TRAP, evitando que a interrupo em
INTERRUPO execuo seja interrompida.
SIM Set Interrupt Mask - Instruo que seta as mscaras de interrupo, fazendo
com que determinada interrupo no seja ativada.
RIM Read Interrupt Mask - Intruo que l o estado das mscaras das interrupes.
Embora os endereos de desvio sejam os indicados na Fig. 6.2 e 6.3, os endereos de desvio no ABACUS
e no kit didtico so diferentes. Na verdade, como o usurio final no pode inserir instrues/dados na ROM do
ABACUS nem do kit didtico, o criador dessas ferramentas incluiu no programa monitor uma instruo de
desvio para a RAM, de forma que a cada interrupo o programa seja automaticamente desviado para um
endereo acessvel pelo usurio final. Esses endereos so dados na tabela a seguir.
Observaes.:
(a) comum usar a instruo EI como penltima instruo de uma subrotina, tendo em vista que o
microprocessador automaticamente desabilita todas as interrupes com o bit QUALQUER
RECONHECIMENTO DE INTERRUPO.
Subrotina: -----------
EI
RET
(b) Quando se deseja evitar que uma parte do programa principal seja interrompida por qualquer interrupo,
exceto a TRAP, usa-se o comando DI no comeo do trecho a ser protegido.
Programa principal: -----------
------------
DI
------------
------------
EI
Exemplo:
O programa a seguir, a ser implementado no ABACUS, a cada interrupo RST 5.5, mostra uma
contagem hexadecimal crescente de 00 h at FF h e d mais um passo e pra em 00 h.
Setagem de Mscara
Habilita Sada Serial
da Sada Serial
Irrelevante
Exemplo: Desejando-se habilitar apenas a interrupo RST 5.5 e mascarar as demais, o contedo do
acumulador antes da instruo SIM dado a seguir:
A execuo do comando RIM (Read Interrupt Mask) faz com que o estado das mscaras de interrupo
sejam transferidos para o acumulador.
A seguir mostrado o significado de cada bit do acumulador aps a execuo da instruo RIM.
tambm dado um exemplo, onde mostrado o contedo do acumulador e a interpretao de cada bit, aps a
execuo da instruo RIM.
Habilita
Serial Input Data - Dado de
-
Interrupt Enable
Entrada Serial
Interrupo
Exemplo: Aps a instruo RIM o contedo do acumulador ficou:
Significado:
INTR
Controlador
Microprocessador de
INTA
Interrupo 8 pedidos de
8085 interrupo
Dados 8259
1. O nvel lgico de um ou mais dos pinos IR (IR0 a IR7) levado a 1, setando o correspondente registrador de
pedido de interrupo IRR;
2. O 8259 envia um pulso alto para o 8085 atravs do pino INTR (pino 10);
3. O 8085 envia de volta um sinal baixo INTA (Interrupt Acknowledge) de reconhecimento de pedido de
interrupo;
4. Aps receber o sinal de OK, o 8259 o bit ISR (In Service Register) do pedido de maior prioridade, limpa o
registro de interrupo IRR correspondente e envia para o 8085 o cdigo de chamada de subrotina;
5. O 8085 responde com outro sinal INTA baixo solicitando o byte inferior do endereo da subrotina;
6. O 8259 envia o byte inferior de endereo correspondente ao pedido de interrupo;
7. Um outro sinal INTA baixo enviado pelo 8085 solicitando o byte superior do endereo da subrotina;
8. O 8259 envia o byte superior do endereo da subrotina para o 8085 e, em seguida, limpa o bit ISR
correspondente;
9. A seguir, o contedo do contador de programa (PC) enviado para a pilha e o processamento desviado
para o endereo indicado
Comunicao Serial: quando enviado um bit de cada vez. empregada, por exemplo, na comunicao via
linha telefnica (atravs de um modem), no mouse, cmara fotogrfica digital, impressora serial,
instrumentos eletrnicos, agendas eletrnicas. A taxa de transmisso medida em bit por segundo (bps ou
bit/s).
Comunicao Paralela: quando enviado um grupo de bits, simultaneamente. empregada, por exemplo,
na comunicao entre um computador e uma impressora paralela. A taxa de transmisso , em geral, medida
em bytes por segundo; OBS: a transmisso paralela utilizada em substituio transmisso serial quando a
distncia entre transmissor/receptor pequena e deseja-se maior velocidade de transferncia.
MTODOS DE CONTROLE DE ENTRADA E SADA
Referem-se a tcnicas de hardware e software utilizadas para controlar o fluxo de dados entre o
computador e seus perifricos. Os trs mtodos mais frequentemente encontrados so:
Microprocessador
bit 7
8 bits Porta 11 h STATUS
8085
Nesse exemplo, quando a CPU est pronta para receber dados ela envia um bit alto de INCIO (bit 6) para
o perifrico. Quando os dados esto prontos, um bit alto de STATUS (bit 7) enviado de volta CPU. Em
seguida os dados so transferidos do perifrico para a CPU. O grande problema nesse tipo de transferncia de
dados que a CPU fica aguardando o bit alto de STATUS, o que pode significar um tempo considervel, uma
vez que a maior parte do tempo gasto esperando o perifrico terminar o processamento de dados.
Nesse exemplo a CPU no precisa aguardar o processamento do perifrico. Quando o perifrico est
pronto para transferir ou receber os dados um bit de INTERRUPO enviado CPU. O processamento
normal da CPU interrompido para atender o pedido externo. Um bit de RECONHECIMENTO de interrupo
enviado para o perifrico, havendo ento a transferncia dados para a CPU.
HOLD
MEMRIA
Nesse tipo de operao as transferncias de dados so mais rpidas porque o acumulador no utilizado e
no h necessidade de leituras da memria ROM. O dados vo diretamente da memria para o perifrico, ou
vice-versa. O controlador de DMA fisicamente conectado aos barramentos de dados, endereos e controle,
dependendo apenas da liberao dos mesmos pela CPU. Dessa forma, quando o perifrico est pronto para a
transferncia de dados, um sinal de HOLD alto enviado CPU solicitando a liberao do barramentos. A CPU
responde com um sinal HLDA, informando que o processamento foi interrompido e os barramentos liberados. O
controlador de DMA realiza ento a transferncia de dados em alta velocidade e devolve o controle dos
barramentos para a CPU, enviando um sinal de HOLD baixo.
25. Explique como funciona uma interrupo no 8085. Explique habilitao e mscara de interrupo,
interrupo vetorada, interrupo por nvel, interrupo por transio. Exemplifique escrevendo as linhas de
programa para mascarar as interrupes RST 5.5 e RST 7.5.
26. Para que servem as instrues EI e DI? Descreva as instrues SIM e RIM.
28. Insira os bits adequados do acumulador para mascarar a interrupo RST 6.5 e deixar as demais livres.
29. Faa a leitura do acumulador mostrado abaixo, aps uma instruo RIM.
30. Zerar o flip-flop da interrupo RST 7.5, setar e habilitar as interrupes RST 7.5 e RST 6.5 e mascarar a
interrupo RST 5.5. Comente o valor de cada bit utilizado na instruo de setagem de mscara. Desenhe
um circuito simples com fototransistor que possa ser usado para acionar a interrupo RST 7.5 com a
interrupo de um sinal luminoso.
31. Faa um programa no ABACUS, usando o assembly do 8085, que mostre uma contagem decimal crescente
no display de zero a 50. Ao alcanar o valor 50, a interrupo RST 7.5 deve ser habilitada e o programa
deve ficar aguardando um pedido de interrupo. Quando a interrupo RST 7.5 for solicitada, a contagem
no display deve se tornar decrescente (e a interrupo desabilitada) at alcanar o valor zero. Alcanado o
valor zero, a interrupo deve ser habilitada novamente para iniciar outra contagem decimal at 50, e assim
sucessivamente.
32. Faa um programa no ABACUS que mostre uma contagem decimal no display, sendo que esta contagem
deve ser crescente at que ocorra uma interrupo RST 6.5, quando ento a contagem dever se tornar
decrescente. Caso ocorra uma nova interrupo RST 6,5 o programa deve voltar a contar na forma
crescente, ou seja, a cada interrupo muda-se o modo de contagem alternando entre crescente e
decrescente.
33. Como feita a comunicao entre o microprocessadore 8085 e o controlador de interrupo 8259?
35. Faa um programa no ABACUSusando a linguagem assembly do 8085 que mostre um valor zero no display
enquanto aguarda um pedido de interrupo RST 6.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal crescente no display de zero a 60, sem interrupes. Ao alcanar o valor 60, o programa
deve ficar esperando um pedido de interrupo RST 7.5. Ocorrida a interrupo, o programa deve fazer uma
contagem decimal decrescente no display at zero. A contagem deve se repetir caso ocorra novamente a
interrupo RST 6.5 e, depois, a RST 7.5.
36. Faa o comentrio de cada linha do programa a seguir e explique qual a finalidade do programa completo.
Complete os endereos.
37. mostrado a seguir o que representa cada bit do acumulador quando se deseja mascarar interrupes.
Escreva as instrues para mascarar as interrupes RST7.5 e RST6.5, em seguida, habilitar a RST5.5.
(a) Programa principal: Escreva as instrues para habilitar as chaves do ABACUS como entrada de dados
e os LEDs como sada de dados, mascarar as interrupes RST6.5 e RST5.5, habilitar a interrupo
RST7.5 e ficar aguardando num "loop" um pedido de interrupo;
(b) Subrotina: Escreva uma subrotina para rotacionar, de dois em dois (0-1, 1-2, 2-3, , 6-7), os LEDs para
a esquerda, quando h um pedido da interrupo RST7.5. O processamento volta para o "loop" quando
forem alcanados os LEDs 6 e 7.
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[2] Intel, MCS-80/85TM Family Users Manual, Outubro de 1979.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
A entrada de dados seriais para o 8085 pode ser feita atravs do pino 5 do microprocessador, que o
pino SID (Serial Input Data). Os dados seriais que chegam a esse pino so transferidos para o bit 7 do
acumulador a cada execuo da instruo RIM.
O pino 4, SOD (Serial Output Data) pode ser usado para a transferncia serial de dados para um
perifrico. Nesse caso, a instruo SIM usada para transferir o contedo do bit 7 do acumulador para o pino 4,
mas apenas se o bit 6 do acumulador, SOE (Serial Output Enable) estiver setado.
O programa acima repete o Lao 8 vezes, recebendo, portanto 8 bits para formar um byte. Esses bits
chegam atravs do pino SID, que transferido para o bit 7 do acumulador. Cada novo bit que carregado
isolado atravs da instruo ANI 80 h. A seguir, esse novo bit "juntado" (usando a instruo ORA B) aos bits
anteriores que j esto guardados em B. O acumulador, nesse momento contm todos os bits lidos. A rotao
direita necessria para receber um novo dado no bit 7. O contedo rotacionado do acumulador guardado em
B.
Supondo, por exemplo, que os bits 1 1 0 0 0 0 1 e 0 so carregados no 8085 usando o programa
anterior, tem-se:
Na primeira execuo de MOV B,A o contedo de B ser 0 1 0 0 0 0 0 0, porque o primeiro dado
(1) foi recebido no bit 7 do acumulador, mas foi rotacionado direita antes da transferncia para B.
Aps a segunda execuo de MOV B,A o contedo de B ser 0 1 1 0 0 0 0 0.
Aps a oitava execuo de MOV B,A o contedo de B ser 1 0 1 0 0 0 0 1. V-se aqui que o
primeiro dado (1) a ser carregado j voltou para o bit 7 de B, sendo, portanto necessrio fazer uma rotao
esquerda para encerrar o primeiro byte de entrada. Assim, aps sair do Lao, e aps a instruo RLC, o contedo
do acumulador (mas no o de B) conter o byte de entrada, que : 0 1 0 0 0 0 1 1. A leitura foi feita do bit
menos significativo para o bit mais significativo.
Os microcomputadores atuais utilizam uma pastilha especial para a comunicao serial. Os primeiros
PCs usavam o CI 8250:UART (Universal Asynchronous Receiver-Transmitter), que permitia o armazenamento
de apenas um byte por vez, limitando a velocidade de comunicao serial. Atualmente o CI utilizado o 16550,
que permite o armazenamento simultneo de at 16 bytes de informao. A seguir so dadas as caractersticas da
Interface Serial no PC:
Possui 2 interfaces seriais;
So interfaces assncronas;
So baseadas no CI 16550 UART (Universal Asynchronous Receiver /Transmiter); Este CI um upgrade do
CI 8250 da National utilizado PC original (com taxa de transmisso mxima de 9.600bit/s);
Caractersticas do CI 16550 UART:
Taxa de transmisso de at 115.200bit/s;
FIFO de 16 bytes; Esta FIFO armazena dados que foram recebidos pela interface serial mas que
no foram lidos pelo microprocessador; evita erro de overrun (perda de informao por
sobreescrita);
Funo Loopback (diagnstico);
Funes para controle de modem.
A placa me de um microcomputador Pentium possui 2 interfaces seriais: cada uma delas pode ser
configurada de duas formas:
Uma das consideraes que devem ser feitas ao se utilizar a comunicao serial entre perifricos e
computador (ou entre dois computadores) a seleo de parmetros de comunicao compatveis. Um dos
problemas mais comuns o de configurao de taxas de transmisso distintas entre o transmissor e o receptor.
Processo de comunicao no qual o transmissor e o receptor esto sincronizados pelo mesmo sinal de
clock. O transmissor envia continuamente caracteres de sincronismo sempre que no existir dado a ser
transmitido.
Na transmisso serial assncrona os bits de start e stop representam um grande overhead nos dados
transmitidos, reduzindo a taxa de transferncia de informaes. Na transmisso serial sncrona tambm
necessitamos de um certo tipo de overhead para sincronismo, pois como o receptor saberia quando o dado
significativo (para receb-lo e guard-lo) ?
O start bit (da comunicao assncrona) substitudo por um caracter de sincronismo. Este caracter diz ao
receptor que os dados esto a seguir. Os dados so transmitidos entre caracteres especiais que servem para
sincronismo e para informar quando iniciam e terminam os dados, para deteco de erros e para indicar o final
do pacote. Veja o formato tpico de um pacote de dados no exemplo do protocolo BISYNC logo abaixo:
Com este tipo de transmisso fica claro que o overhead reduzido: para uma mesma taxa de transmisso,
o modo sncrono ser mais rpido que o assncrono.
Interface RS-232: Interface proposta pela IBM na dcada de 60 e que vigora at hoje como a principal interface
para transmisso de dados (a baixas velocidades). Esta interface utiliza normalmente um conector DB25
(Conector em forma de "D" com 25 pinos). Pode ainda utilizar o DB9 (usado para conectar o mouse) e o DB15.
Seus circuitos eltricos so desbalanceados (ou seja, h um terra comum para todos os sinais). Quando a
interface RS-232 est inativa ela fica transmitindo Marca (-12V). Seus nveis eltricos so mostrados na tabela
abaixo.
Interface RS-422: Interface que proporciona taxa de transferncia de at 10 Mbit/s (para distncias de at
300m). Seus circuitos eltricos so balanceados (ou seja, cada sinal transmitido atravs de um par de
condutores: um positivo e um negativo, o que proporciona maior imunidade ao rudo). Esta interface geralmente
est disponvel em conectores DB37.
Como j foi enfatizado anteriormente, o microprocessador 8085 precisa de alguns componentes auxiliares
que, alm de conterem memrias ROM e RAM, possibilitem a comunicao do 8085 com ambiente externo.
Dois desses componentes so os Circuitos Integrados 8156 e 8355.
A Fig. 6.2 mostra um sistema mnimo baseado no 8085 e contendo uma pastilha de memria RAM (8156)
e uma de memria ROM (8355).
A13 ALE
CLK OUT
A10 IO-M\
A9 READY
A8 RESET IN\
RESET OUT
8 bits: AD0 a AD7 RD\
8085 WR\
CE A10 CE1\
A9
ALE ALE
A8 IO-M\
PA
IO-M\
RD\
RD\ RESET
PB
RESET CLK
READY
PC WR\
8156 PA 8355 PB
No sistema mnimo mostrado na Fig. 7.2 o pino de endereo A13 do 8085 usado para
habilitar/desabilitar a RAM e a ROM. Ele conectado ao pino CE (Chip Enable) da RAM e ao pino CE\ da
ROM. Isso significa que, quando o pino A13 est em nvel baixo, a ROM fica habilitada e a RAM desabilitada.
Quando em nvel alto a ROM fica desabilitada e RAM fica habilitada. Dessa forma, o endereo inicial da ROM
0000 h e o da RAM 2000 h, como demonstrado abaixo.
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Endereo Inicial da ROM
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
Endereo Final da ROM
0 0 0 0 0 1 1 1 1 11 1 1 1 1 1
0 7 F F
Endereo Inicial da RAM
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0
Endereo Final da RAM
0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1
2 0 F F
Como a ROM 8355 tem 2048 bytes (800 h) de memria, as posies ocupadas por estes bytes vo de 0 a
2047, que em hexadecimal 0000 h at 07FF h. O nmero de linhas de endereo necessrias so 11 (de AD0 a
A10) , porque 211 = 2048.
Como a RAM 8156 tem apenas 256 bytes de memria, os endereos desses bytes vo de 0 a 255 (00 h a
FF h). Da, como o endereo inicial escolhido para a memria RAM 2000 h na conexo do sistema mnimo
dado, o endereo final ser 20FF h. O nmero de linhas de endereo necessrias so 8 (de AD0 a AD7), porque 28
= 256.
A memria RAM do Kit didtico usado no laboratrio a RAM 2114, de 1 K de memria, mas de apenas
4 bits. Assim, utiliza-se duas-a-duas para forma 1 byte por endereo. No kit o endereo inicial da RAM 4000 h.
So necessrias 10 linhas de endereo: 210 = 1024 ( = 400h). Posies de memria: 0 a 1023 (000 h a 3FF h)
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
A Segunda RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a primeira
RAM, ou seja, endereo 4400 h.
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
A Terceira RAM 2114 do Kit didtico deve ser acessada a partir do primeiro endereo aps a segunda
RAM, ou seja, endereo 4800 h.
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Endereo Inicial da SEGUNDA RAM 2114 do Kit Didtico
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
4 8 0 0
Endereo Final da SEGUNDA RAM 2114 do Kit Didtico
0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1
4 B F F
Dessa forma, um circuito lgico deve ser usado quando h um conjunto de pastilhas de memria no
sistema mnimo. A Fig. 7.3 mostra o circuito lgico para conectar trs conjuntos de RAMs.
A14
CS\ RAM 2114
A10 4000h 43FFh
A11 Primeira RAM
Fig. 7.3: Circuito lgico para conexo de 3 conjuntos de RAMs 2114 ao sistema mnimo
Desejando-se conectar um quarto conjunto de RAMs, tem-se o circuito lgico da Fig. 7.4, a seguir.
A14
CS\ 2 RAM 2114
A10 4000h 43FFh
A11 Primeira RAM
Fig. 7.4: Circuito lgico para conexo de 4 conjuntos de RAMs 2114 ao sistema mnimo
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Desejando-se acrescentar mais 4 conjuntos de RAMs, de forma a ter um sistema mnimo com 8 Kbytes de
memria, precisa-se de mais um pino de seleo, que no caso o pino A12.
A14
2 RAM 2114
A10 CS\
A11 4000h 43FFh
A12 RAM 1
2 RAM 2114
ZONAS DE ENDEREO PARA A RAM CS\
2114, A PARTIR DE 4000h 4400h 47FFh
RAM 2
ZONA BYTES ENDEREO
1 1024 4000 43FF
2 1024 4400 47FF 2 RAM 2114
3 1024 4800 4BFF CS\
4800h 4BFFh
4 1024 4C00 4FFF RAM 3
5 1024 5000 - 53FF
6 1024 5400 57FF
7 1024 5800 5BFF 2 RAM 2114
8 1024 5C00 5FFF CS\
4C00h 4FFFh
9 1024 6000 - 63FF
RAM 4
10 1024 6400 67FF
11 1024 6800 6BFF
12 1024 6C00 6FFF 2 RAM 2114
13 1024 7000 - 73FF CS\
5000h 50FFh
14 1024 7400 77FF
15 1024 7800 7BFF RAM 5
16 1024 7C00 7FFF
17 1024 8000 - 83FF
2 RAM 2114
18 1024 8400 87FF CS\
19 1024 8800 8BFF 5400h 57FFh
20 1024 8C00 8FFF RAM 6
2 RAM 2114
CS\
5800h 5BFFh
45 1024 F000 F3FF RAM 7
46 1024 F400 F7FF
47 1024 F800 FBFF
48 1024 FC00 FFFF 2 RAM 2114
Total: 48 Kbytes = 49.152 bytes CS\
5C00h 5FFFh
RAM 8
A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Fig. 7.5: Circuito lgico para conexo de 8 conjuntos de RAMs 2114 ao sistema mnimo
As pastilhas 8156 e 8355 no so apenas memrias RAM e ROM; elas tambm contm portas de entrada
e sada paralela, alm de temporizadores.
As trs portas de Entrada e Sada da 8156 so: Porta A (8 bits), Porta B (8 bits) e Porta C (6 bits), que so
numeradas respectivamente como 21h, 22h e 23h no sistema mnimo da Fig. 7.2. Internamente, tem-se ainda
acesso a trs outras portas: Porta 20h, usada como registrador de status e de comando, Porta 24h, usada como
byte inferior do contador de temporizao e Porta 25h, usada como modo e contador (6 bits superiores) do
temporizador.
As duas portas de Entrada e Sada do 8355 so: Porta A (8 bits) e Porta B (8 bits), que so numeradas
respectivamente como 00h e 01h no sistema mnimo da Fig. 7.2. O endereamento dado na tabela a seguir:
O temporizador da 8156 possui decrementador pr-setvel, controlado pelas portas 20h, 24h e 25h. O
contador pode operar em 4 modos, mostrados nas figuras a seguir:
Comando D7 D6 D5 D4 D3 D2 D1 D0
Habilitao de interrupo A
Habilita;o de interrupo B
Temporizador
Porta A
Porta C
Porta B
Modo 00
Modo 01
Modo 10
Modo 11
D7 D6 Estado do Temporizador
0 0 No opera
0 1 Parar imediatamente
1 0 Parar depois de atingir contagem final
1 1 Comear contagem
Exemplo: Gerar uma onda quadrada de 1 kHz, sendo a frequncia de clock de 3 MHz
3MHz
Contagem final = = 3000 = 0BB8 h
1kHz
0 1 0 0 1 0 1 1
Instrues Comentrio
MVI A,B8h
OUT 24h
Onda quadrada contnua de 1kHz
MVI A,4Bh
OUT 25h
MVI A,Ceh
Comea contagem e dasabilita interrupes de A e B
OUT 20h
C B A Sada Selecionada
0 0 0 Yo
0 0 1 Y1
0 1 0 Y2
74LS138 0 1 1 Y3
1 0 0 Y4
1 0 1 Y5
1 1 0 Y6
1 1 1 Y7
A sada est ativa quando est em nvel zero. A pastilha 74LS138 habilitada fazendo G1 = 1, G2A = 0,
G2B = 0. Quando qualquer desses pinos est desativado o CI est desabilitado.
Voltando s 8 pastilhas de memria RAM do exerccio anterior, pode-se fazer o endereamento usando
um decodificador 74LS138. O pino A14 usado para habilitao geral (G1) e os pinos A10, A11 e A12 so usados
para seleo da pastilha correspondente a cada faixa de endereo.
A11 A14
A12 A10
2 RAM 2114
CS
4000h 43FFh
\
RAM 1
2 RAM 2114
CS\
4400h 47FFh
RAM 2
2 RAM 2114
CS\
4800h 4BFFh
RAM 3
2 RAM 2114
CS\
4C00h4FFFh
RAM 4
2 RAM 2114
CS\
5000h 50FFh
RAM 5
2 RAM 2114
CS\
5400h 57FFh
RAM 6
C B A Sada
A12 A11 A10 Selecionada
CS\ 2 RAM 2114
0 0 0 Yo
0 0 1 Y1 5800h 5BFFh
0 1 0 Y2 RAM 7
0 1 1 Y3
1 0 0 Y4
1 0 1 Y5 2 RAM 2114
1 1 0 Y6 CS\
5C00h 5FFFh
1 1 1 Y7
RAM 8
Fig. 7.9: Uso do decodificador 74LS138 para conexo de 8 RAMs ao sistema mnimo
Cada 74LS138 pode enderear 8 zonas de endereo So necessrios 6 decodificadores 74LS138 para
cobrir toda a memria possvel a partir da posio 4000 h at FFFF h.
(b) Qual a finalidade dos pinos CE, WR e IO/M de uma memria RAM?
(c) Quantas linhas de endereo so necessrias para a ROM e para a RAM?
(d) Conceitue ROM, EPROM, RAM esttica e RAM dinmica
2. Gerar um pulso contnuo na sada do temporizador da pastilha 8156, em uma freqncia de 1 kHz, sabendo
que a freqncia de clock de 1 MHz. D uma sugesto de como o temporizador pode ser usado para a
gerao de sinal PWM (Modulao de Largura de Pulso).
3. Explicar para que serve e como utilizado o decodificador 74139 num sistema com o microprocessador
8085. Esse decodificador tem duas entradas (A e B) e quatro sadas ( Y0 , Y1 , Y2 , Y3 ). Os habilitadores do
CI 74139 so G1 , G2 e G3 , como no caso do CI 74138. Faa um esquema mostrando uma aplicao.
4. Desenhar o circuito de conexo de 4 pastilhas de memria RAM, cada uma de 2 kbytes, a partir do endereo
1000 h, usando o decodificador 74139. Esse decodificador tem duas entradas (A e B) e quatro sadas ( Y0 ,
Y1 , Y2 e Y3 ). O habilitador da memria RAM o pino CE\. Os habilitadores do CI 74139 so G1, G2 e
G3 , como no caso do CI 74138. Inclua as linhas de endereos / dados.
5. Faa um programa que leia um byte da porta serial e o mostre no display. A cada interrupo RST 7.5 o
programa dever ler outro byte da porta serial e mostr-lo no display.
6. Faa um programa que leia um dado do teclado, e ento, envie este byte pela sada serial por 5 vezes
seguidas, com um intervalo de 1s entre cada repetio (destas 5 vezes). Em outras palavras, enviar o byte 5
vezes pela porta serial, parar por 1 segundo e tornar a enviar o byte por mais 5 vezes, parar por mais 1s... e
assim por diante. O bit menos significativo deve ser enviado primeiramente.
7. Faa um programa que leia dois nmeros pelo teclado, some estes nmeros e mostre o resultado no display,
repetindo esta operao indefinidamente. Caso ocorra uma interrupo RST 6,5, o programa passar a
subtrair esses nmeros (1o - 2o), mostrando o resultado no display. Aps uma nova interrupo RST 6,5 o
programa volta a somar os dois nmeros, e assim sucessivamente. Caso ocorra uma interrupo RST 5,5 o
ltimo resultado mostrado no display dever ser enviado pelo pino SOD, uma nica vez, aps o que o
processamento volta ao programa principal.
8. A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a
formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura a seguir), de
modo a formar uma memria RAM de 4 Kbytes. Pede-se:
(a) Quais so as linhas de endereo para a operao das RAMs 2114?
(b) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?
(c) Use portas lgicas para desenhar o circuito de habilitao dos grupos de RAMs a partir do endereo
1000h;
(d) Use o decodificador 74139 (figura a seguir) para a habilitao dos grupos de RAMs a partir do endereo
1000h. Os pinos A e B so usados para selecionar a sada e o pino G1 usado para habilitar a pastilha.
A Y0 \
Linhas de endereo:________________
B Y1 \
74139
Y2 \
A B Y
CS\ CS\ CS\ CS\ 0 0 Y0\
0 1 Y1\
1 0 Y2\
Pinos de habilitao 1 1 Y3\
9. A RAM 2114 de 1 K, mas possui apenas 4 bits cada uma. Por isso so usadas de duas em duas de modo a
formar 1 byte para cada endereo . Deseja-se associar 4 grupos de RAMs 2114 (ver figura abaixo), de modo
a formar uma memria RAM de 4 Kbytes. Pede-se:
(e) Quais so as linhas de endereo para a operao das RAMs 2114?
(f) Qual a faixa de endereos (endereos contnuos) de cada grupo de RAMs?
10. Faa um programa para o ABACUS com a seguinte caracterstica: Quando a chave CH0 OU a chave CH1
est ligada os LEDs ficam piscando em intervalos regulares. Quando esto desligadas, o programa fica num
loop de espera.
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
8. INTERFACE ANALGICA
Como os dados de um microprocessador esto na forma digital e os dados do mundo exterior esto na
forma analgica (contnua), necessrio fazer a converso entre esses dados. Assim, tem-se o Conversor
Analgico-Digital (ADC), que faz a converso de sinal analgico para sinal digital e o Conversor Digital-
Analgico (DAC), que faz a converso de sinal digital para sinal analgico.
Estas chaves podem ser substitudas por transistores que trabalharo na regio de corte quando D = 0, na
regio de saturao quando D = 1.
VREF
I= (1 * D3 + 0.5 * D2 + 0.25 * D1 + 0.125 * D0 ) ,
R
onde os valores de D podem ser 0 para chave desligada e 1 para chave ligada. Assim, forma-se a tabela
abaixo, supondo VREF/R = 1:
Um vez que o conversor tem apenas 4 bits, existem 16 (24) possveis valores de sada, sendo o menor
valor 0 (zero) e o valor mximo correspondente ao decimal 15, ou binrio 1111, e hexadecimal F. A tenso de
sada dada por Vsada = Rsada*I. Os resistores ponderados so necessrios para que a sada corresponda frao
indicada na ltima coluna da tabela.
mx
incremento
1 LSB
2. Preciso Absoluta: Refere-se a quo prxima cada corrente de sada est de seu valor ideal. A preciso
depende da tolerncia dos resistores, do descasamento dos transistores e da tenso de referncia.
3. Preciso Relativa: Refere-se a quo prximo cada nvel de sada est de sua frao ideal de sada total. A
preciso relativa depende principalmente da tolerncia dos resistores ponderados. Se eles forem exatamente
iguais a R, 2R, 4R e 8R no caso do conversor de 4 bits, todos os degraus sero iguais a 1 incremento LSB. Se
os resistores no estiverem corretos os degraus podero ser maiores ou menores que 1 incremento LSB.
4. Monotonicidade: Um conversor DA monotnico aquele que produz um aumento na corrente de sada para
cada entrada digital sucessiva, ou seja, cada aumento no sinal de entrada produz um aumento no sinal de
sada. Se os resistores ponderados no estiverem corretos, pode-se ter um conversor no monotnico. O erro
mximo da sada do conversor deve ser de 1/2 LSB para garantir que o conversor seja monotnico.
5. Tempo de Resoluo (ou de Posicionamento): Tempo que a sada do conversor lva para se estabilizar dentro
de 1/2 LSB de seu valor final. Esse tempo depende, dentre outros fatores, das capacitncias esprias e do
tempo de retardo de saturao dos transistores.
Para que o conversor seja monotnico a tolerncia dos resistores ponderados deve ser inferior resoluo
percentual. Assim, a tolerncia dos resistores deve ser no mximo de 6.67% para o conversor de 4 bits e de 0.4%
para o conversor de 8 bits. Portanto, quanto maior o nmero de bits do conversor, maior a dificuldade de
contruo usando o modelo de resistores ponderados, alm da difuldade com os diferentes valores. A soluo
encontrada foi o modelo da Escada R-2R, mostrado na Fig. 8.4. Nesse circuito a corrente permanece constante
em cada ramo. O que muda a posio do ponto de terra, onde o terra da corrente de sada um terra virtual do
amplificador operacional. Dessa forma, a corrente de sada varia de acordo com o fechamento das chaves D.
A Fig. 8.5 mostra a conexo de um conversor Digital-Analgico (DAC0808) com um sistema mnimo
formado pelo microprocessador 8085, memria ROM 8355 e memria RAM 8156.
A converso se encerra quando o sinal de sada do comparador estiver em nvel baixo, ou seja, quando o
sinal Vsada for maior que o sinal que se deseja converter, Vent. O resultado da converso obtido nas linhas de
transferncia de dados do contador para o conversor DA. Observe que o sinal na sada do comparador pode ser
usado para indicar o fim da converso. Durante a converso esse sinal permanece em nvel alto.
A desvantagem principal de um conversor do tipo mostrado na Fig. 8.6 que o tempo de converso pode
durar at 255 perodos de clock para um conversor de 8 bits e at 65535 perodos de clock para um conversor de
16 bits. Uma soluo para reduzir o tempo de converso o conversor mostrado na Fig. 8.7, do tipo aproximao
sucessiva.
O processo de converso desse tipo de conversor diferente do anterior. Nesse conversor o nmero
mximo de perodos de clock utilizados na cconverso corresponde ao nmero de bits do conversor, ou seja, o
conversor de 8 bits leva at 8 ciclos de clock para completar uma converso e o de 16 bits leva at 16 ciclos de
clock.
Um pulso alto de incio de converso enviado ao Registrador de Aproximao Sucessiva (RAS) d
incio ao processo. O registrador RAS comea setando o bit mais significativo D7 (MSB) que alimenta o
conversor DA. Se a sada do DA for maior que o sinal a ser convertido Vent, o bit MSB zerado. Caso o bit D7
no resulte em sada analgica Vsada maior que o sinal a ser convertido, o bit D7 mantido. A seguir o segundo
bit mais significativo, D6, e os demais bits restantes so testados seguindo o mesmo procedimento, at atingir o
valor correto de converso. Ao final da converso, um sinal baixo emitido para o Registrador Buffer, liberando
a sada digital e, ao mesmo tempo, conservando esse valor durante a prxima converso.
5. Qual a tenso na sada de um conversor DA de 8 bits, cujo sinal de entrada seja 40 h e cuja tenso de
referncia seja 5 V?
6. Considere o conversor DA de 4 bits da Fig. 8.2, com resistncias ponderadas, onde a resistncia R = 2 k e
a resistncia de sada seja Rsada = 10 k. Calcule a corrente e a tenso de sada do circuito. A tenso de
referncia VREF = 5 V.
7. Faa um programa para o ABACUS, que l a tenso de alimentao de um motor de corrente contnua e
mostra no display de 7-segmentos correspondente ao endereo (usar CALL MOSTRAD) e l a velocidade
de rotao do motor e mostra nos LEDs. A tenso (que varia de 0 a 255 V) lida atravs de um conversor
Analgico-Digital de 8 bits e entrada de 0 a 5 V, que conectado porta A (21h) do sistema mnimo do
8085. Cada fim de converso desse AD gera uma interrupo RST 6.5 para leitura da tenso. A tenso lida
em base hexadecimal e mostrada em base decimal.
A velocidade (que varia de 0 a 2000 rpm) lida tambm atravs de um conversor Analgico-Digital de 8
bits e entrada de 0 a 5 V, que conectado porta C (23h) do sistema mnimo. Cada fim de converso desse
AD gera uma interrupo RST 5.5 para leitura da velocidade. A indicao de velocidade nos LEDs feita da
seguinte forma: at 250 rpm apenas o LED0 fica ligado; de 250 rpm at 500 rpm, os LEDs 0 e 1 ficam
ligados e assim sucessivamente, at chegar no intervalo de 1750 rpm at 2000 rpm, quando todos os LEDs
ficam ligados. Seguir os passos dados.
Programa principal:
a. Habilita as interrupes RST 6.5 e RST 5.5 e mascara a RST 7.5;
b. Habilita a porta A (21 h) como entrada de dados e a porta B (22 h) como sada de dados (igual ao caso
do ABACUS). Considere que a porta C j est habilitada;
c. Zera registradores A, D e E;
d. Entra num loop que mostra continuamente o contedo de DE (tenso) no display (subrotina do
ABACUS) e o contedo de A (velocidade) nos LEDs.
Subrotina 1
(atendimento da RST 6.5 a cada fim de converso do AD da tenso)
a. L o valor da tenso, presente na porta 21h;
b. Converte o valor lido (hexadecimal) em valor decimal, guardando o resultado em DE.
c. Retornar ao programa principal.
Observao: No o caso de usar DAA e sim fazer a converso da base hexadecimal para a base
decimal. Essa converso feita da seguinte forma:
Passo 1: Divide-se o nmero hexadecimal pelo decimal 10 (hexadecimal 0A). O resto dessa primeira
diviso o dgito menos significativo do nmero decimal resultante (d0). Se o quociente for
zero o processo encerrado.
Passo 2: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente
pelo decimal 10 at obter o segundo resto, que o segundo dgito menos significativo (d1). Se
o quociente dessa segunda diviso for zero, o processo encerrado.
Passo 3: Se o quociente da diviso anterior for diferente de zero, divide-se esse quociente novamente
pelo decimal 10 at obter o terceiro resto, que o dgito mais significativo (d2). Como o valor
mximo possvel FF h, no h possibilidade de um Passo 4.
O decimal resultante : d2d1d0. d2 deve ser mostrado em D e d1d0 deve ser mostrado em E.
Subrotina 2
(atendimento da RST 5.5 a cada fim de converso do AD da velocidade)
(a) L o valor da velocidade, presente na Porta 23h;
(b) Verifica o valor da velocidade (atravs de seu equivalente digital) e carrega em A o valor hexadecimal
que liga os LEDs desejados, de acordo com o que foi explicado no item (d) da parte inicial desta
avaliao.
(c) Retorna ao programa principal com o valor de A definido no item anterior.
[1] Ziller, Roberto M., Microprocessadores Conceitos Importantes, Editora do autor, Florianpolis, SC,
2000.
[3] Malvino, Albert P., Microcomputadores e Microprocessadores, Traduo: Anatlio Laschuk, reviso
tcnica: Rodrigo Araes Caldas Farias, McGraw-Hill, So Paulo, 1985.
9. MICROCONTROLADORES 8086/8088
9.1 Introduo
Portanto:
para aplicaes orientadas a 8 bits (byte) o 8088 desenvolve a tarefa to bem quanto o 8086;
para aplicaes orientadas a 16 bits (word), o 8088 ser menos eficiente que o 8086 mas no com metade da
velocidade.
a) Barramento de endereos com 20 linhas: proporciona endereamento para at 1MB (1.048.576 bytes) de
memria.
b) Capacidade de uso de coprocessador (8087).
c) Todos os registradores internos possuem 16 bits (alguns podem ser acessados pela metade - primeiros ou
ltimos 8 bits).
d) Possui 2 modos de funcionamento: Mnimo e Mximo: no modo mnimo equivale a um 8085 acelerado. O
modo mximo usado em ambientes multiprocessados (quando o 8088 convive com outros 8088) ou em
ambientes coprocessados (quando h processador aritmtico). Desta forma, como o PC-XT tem soquete para
utilizao do 8087, sua CPU funciona com o 8088 no modo mximo.
e) A CPU dividida em 2 blocos: Unidade de Execuo (EU) e Unidade de Interface com o Barramento (BIU).
f) BIU com fila de instrues (queue) de 4 bytes (8088) ou 6 bytes (8086).
g) Realiza instrues de diviso e multiplicao (para nmeros com ou sem sinal), assim como operaes com
strings (blocos de bytes).
h) Possui registradores de segmento, possibilitando segmentao de memria.
i) No RESET o endereo de memria acessado FFFF0H.
Para ilustrar melhor as caractersticas do 8088, a tabela a seguir foi criada, onde feita uma comparao
entre o 8085, o 8086 e o 8088. A seguir faz-se um paralelo entre os registradores do 8085 e os registradores do
8088 (os quais sero mais detalhadamente explicados nas prximas sees).
Uma das principais inovaes do 8088 foi a separao entre lgica de execuo e lgica de controle do
barramento, criando dois blocos que funcionam de forma assncrona: a Unidade de Execuo (EU) e a Unidade
de Interface com o Barramento (BIU).
A EU tem como funo processar (decodificar e executar) instrues obtidas da BIU. A EU constituda
de:
Registradores de Dados;
Registradores de Endereos;
ALU;
Unidade de Controle.
A BIU tem apenas funes de hardware: controla o acesso ao barramento (linhas de endereamento,
linhas de dados e sinais de controle). A BIU constituda de:
Lgica de interface com o barramento;
Registradores de segmento;
Lgica para endereamento de memria (somador);
Fila de instrues (4 bytes para o 8088 e 6 bytes para o 8086).
1. A BIU coloca o contedo do IP (que somado ao registrador CS) no barramento para efetuar a busca de
instruo;
2. O registrador IP incrementado (aponta para a prxima instruo);
3. A instruo lida passada para a fila;
4. A EU pega a primeira instruo da fila;
5. Enquanto a EU executa esta instruo a BIU faz uma nova busca de instruo para preencher a fila. Se a
instruo a ser executada pela EU for muito demorada a BIU preenche toda a fila.
Definies:
Pipelining: introduo de paralelismo para executar programas de natureza sequencial. OBS: Esta tecnologia
utilizada no projeto de processadores RISC.
Perifrico: qualquer equipamento ou dispositivo que prov CPU comunicao com o resto do sistema.
Interface: Conjunto de componentes capaz de controlar um dispositivo (device). OBS: uma placa de
expanso pode conter uma ou mais interfaces.
IP (Instruction Pointer): tem a mesma funo do PC (Program Counter) no 8085.
Registrador de Segmento: registrador que armazena o endereo base. Deve ser somado ao endereo de
deslocamento (ou offset, ou ainda endereo lgico) para obter o endereo fsico (ou endereo absoluto). No
8088 os segmentos definem blocos de 64Kbytes de memria. H 4 registradores de segmento:
Code Segment (CS): rea destinada a cdigo;
Data Segment (DS): rea destinada a dados;
Extra Segment (ES): rea extra destinada a dados;
Stack Segment (SS): rea destinada a armazenar endereos de retorno de rotinas de interrupes e de
sub-rotinas;
Barramento B
6
Unidade de Interfaceamento
com Barramento (BIU) 5
QUEUE
4
Extra Segment ES 3
Code Segment CS
Registradores de 2
Stack Segment SS
Data Segment DS Segmento
1
Instruction Pointer IP
Sistema de Controle da
Unidade de Execuo
Barramento A
AH AL AX
BH BL BX Unidade de
CH CL CX Execuo (EU)
DH DL DX ULA
Stack Pointer SP
Base Pointer BP
Source Index SI
Destination Index DI
FLAGS
Por haver uma rea especfica para armazenamento de cdigo e outras reas para armazenamento de dados,
pode-se trabalhar com tipos diferentes de conjuntos de dados (por exemplo, em um ambiente multitarefa
onde um programa atende vrias entradas de dados);
Programas que referenciam endereos lgicos (0000 a FFFF no caso do 8088) podem ser carregados em
qualquer espao (fsico) da memria (00000 a FFFFF): possibilita a realocao de programas.
SEGMENTAO
Registrador de Registrador de
Segmento + Offset
XXXX0 0YYYY
15 0 15 0
Extra Segment - ES Stack Pointer - SP
Base Pointer - BP
Code Segment - CS
Source Index - SI
Stack Segment - SS
Destination Index - DI
Data Segment - DS
Memria
Offset + Byte Endereado
Representao: 2000h:2000h
AX Acumulador primrio Todas as operaes de I/O so realizadas atravs deste registrador. Operaes que
utilizam dados imediatos necessitam de menos memria quando feitos atravs de AX. Algumas operaes
com strings e instrues aritmticas pedem o uso deste registrador. Geralmente usado pelos
compiladores como hospedeiro para valores retornados de subrotinas.
BX Registrador Base Parece com registrador HL do 8085. o nico registrador de finalidade geral que pode
ser utilizado no clculo de endereo de memria. Todas as referncias memria que usam esse
registrador no clculo do endereo usam o registrador DS, como segmento default.
CX Contador Parece com o registrador BC do 8085. decrementado durante operaes com loops e
strings. Tipicamente, usado para controlar o nmero de repeties do loop. Tambm usado para
rotaes e deslocamentos de vrios bits.
DX Endereador de I/O e Registrador de Dados Parece com o registrador DE do 8085. Recebe o nome de
registrador de dados, principalmente por fora dos mnemnicos. Em algumas operaes de I/O, fornece o
endereo, coisa que nenhum outro registrdor pode fazer. Tambm usado em operaes aritmticas,
incluindo multiplicao e diviso, com o resultado a 32 bits. Pode ser usado por compiladores, juntamente
com AX, para retornar valores de subrotinas.
Este grupo de 4 registradores tipicamente usado para gerar endereos de memria efetivo (nome dado
poro offset do endereo fsico). Apenas so usados em 16 bits. Podem ainda ser utilizados em operaes
aritmticas e lgicas para gerar novos endereos efetivos.
Registradores Apontadores e ndices
15 0
Stack Pointer SP
Base Pointer BP
Source Index SI
Destination Index DI
SP Ponteiro de Pilha Parece com o registrador SP do 8085. Armazena o offset do endereo do topo da pilha.
Todas as referncias ao SP, por definio, usam o registrador SS.
BP Ponteiro da Base Permite acessar dados no segmento da pilha. Tipicamente usado para acessar
parmetros que foram passados pela pilha.
No conjunto de instrues do 8088 nem todos os registradores so especificados. Em muitos casos, uma
instruo pode usar um s registrador ou conjunto de registradores especficos. Para outras instrues, os
registradores tm uso implcito. A tabela a seguir lista as operaes que implicam no uso especfico (implcito)
de um determinado registrador.
Registradores Operaes
AX multiplicao de word (16 bits), diviso de word, I/O de word
AL multiplicao de byte, diviso de byte, I/O de byte, aritmtica decimal
BX referncia de memria (semelhante ao reg. par HL do 8085)
CX operao de strings, loops
CL deslocamento, rotao
DX multiplicao de word, diviso de word, end. indireto de I/O (0-65535)
SP operao de stack
SI operao de string (origem)
DI operao de string (destino)
Registradores de Segmento
15 0
Code Segment CS
Data Segment DS
Stack Segment SS
Extra Segment ES
DS Segmento de Dados Todo acesso a dados usa este registrador como referncia, mas existem 3 excees:
(a) endereos para acessos pilha so calculados usando o registrador de segmento de pilha (SS); (b)
endereos para acessos a dados que usam o BP so calculados usando o SS e (c) operaes com strings,
que usam o DI no clculo do endereo, so feitas usando ES.
SS Segmento de Pilha Todos os acessos a dados que usam os registradores SP ou BP tomam como referncia
o registrador de segmento de pilha (SS).
ES Segmento Extra Operaes com strings, que usam DI para calcular o endereo, so feitas usando o
registrador ES para definir o segmento.
O registrador de segmento default selecionado pelo hardware do 8088. Em alguns casos possvel no
levar em conta o registrador default e especificar um registrador de segmento diferente (ver exemplo abaixo).
EXEMPLO:
A instruo MOV [BX],CX move o contedo de CX para a posio de memria calculada utilizando o
registrador de segmento DS (segmento default para dados) e o registrador de dados BX. Mas, se escrevermos
MOV CS:[BX],CX foramos o uso do registrador de segmento CS para o clculo da posio de memria
destino (que ser CS:BX).
Da mesma forma, a instruo MOV AX,[BP] acessa posio de memria diferente da instruo MOV
AX,ES:[BP].
Notar que no h registrador de segmento e registrador de offset alternativos para a busca de instrues
(que deve sempre ser o par CS :IP) e para operaes de pilha (que deve sempre ser o par SS: SP).
Este registrador contm o endereo offset da prxima instruo a ser executada pelo microprocessador.
Tem a mesma funo do PC utilizado no 8085.
um registrador de 16 bits mas apenas 9 bits so usados. Seis deles so bits de status que refletem os
resultados de operaes aritmticas e lgicas.
Os outros trs so bits de controle. O conjunto de instrues do 8088 possui instrues especficas setar e
ressetar seus flags (que ser visto mais adiante).
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
O D I T S Z A P C
Flags de Status
C Flag de carry reflete o vai um do bit mais significativo, nas operaes aritmticas (de 8 ou 16 bits). Ele
tambm modificado por algumas instrues de rotao e deslocamento.
Obs.: As operaes de subtrao usam aritmtica em complemento dois e, por isso, o carry invertido e
passa a funcionar como borrow. Se, aps uma operao de subtrao, obtm-se C = 1, isso indica que no
houve borrow, mas C=0, indica que houve borrow.
P Flag de Paridade indica a paridade (par), dos 8 bits menos significativos, do resultado da operao
realizada.
P = 1 nmero par de 1 nos 8 bits menos significativos
P = 0 nmero mpar de 1 nos 8 bits menos significativos
S Flag de Sinal igual ao bit de mais alta ordem do resultado de uma operao aritmtica.
S = 0 resultado positivo
S = 1 resultado negativo
O Flag de Overflow seu contedo obtido atravs de uma operao XOR do carry in com o carry out do
bit de mais alta ordem do resultado de uma operao aritmtica. Ele indica um overflow de magnitude,
em aritmtica binria com sinal. Indica que o resultado muito grande para o campo destino.
Flags de Controle
T Flag de Trap (armadilha) usada para a depurao de programas. Coloca o 8086 no modo passo a passo.
Aps cada instruo uma interrupo gerada automaticamente.
I Flag de Interrupo habilita ou desabilita a interrupo externa (pedida pelo pino INTR). Ao contrrio do
8085, onde as interrupes RST 7.5, RST 6.5 e RST 5.5 podem ser habilitadas/desabilitadas
individualmente, no 8086 todas so habilitadas ou desabilitadas ao mesmo tempo. A habilitao/
desabilitao individual pode ser feita atravs do controlador de interrupo 8259.
I = 1 interrupo habilitada
I = 0 interrupo desabilitada
EXEMPLO:
Descreva o estado dos flags aps a execuo da instruo ADD AL,1 (Adiciona 1 ao contedo do
registrador de 8 bits AL), sabendo que inicialmente AL =7Fh.
O microprocessador 8088 um CI com 40 pinos. Na figura a seguir alguns pinos apresentados tem duas
definies. O 8088 tem dois modos de operao que so selecionados pelo pino 33 (MN / MX ). Quando este
pino ligado um nvel alto, o P fica no modo mnimo e compatvel com o 8085, podendo substituir
diretamente este P.
Vcc A15 A16/ A17/ A18/ A19/ Vcc MN/ RD RQ/ RQ/ lock S2 S1 S0 QS0 QS1 Test RDY RST
S3 S4 S5 S6 MX GT0 GT1
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Gnd A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND
No PC, o 8088 usado no modo mximo (MN / MX =0). As definies a seguir so relativas a este
modo.
(a) AD0-AD7 (9 -16): transmitem os 8 bits menos significativos dos endereos multiplexados com o byte de
dados. Os bits de endereo (A0-A7) so apresentados no incio do ciclo (T1) e os dados a partir de T2.
Ambos sinais so bufferizados para fazerem parte do barramento do sistema.
(b) A8-A15 (2-8 e 39): a outra parte dos bits de endereos. No so multiplexados (no 8086 so),
permanecendo estveis durante grande parte do ciclo de acesso a barramento. Aps bufferizao fazem parte
do barramento do sistema.
(c) A16/S3 - A19/S6 (35-38): sinais de status e endereos multiplexados. No incio do ciclo de barramento esto
presentes os bits dos endereos A16 a A19. Durante o restante do ciclo (a partir de T2) informa o status
interno do 8088.
S6 = 0 (permanece em nvel baixo no modo mximo);
S5 indica o status do flag de interrupo (se = 1 a interrupo est habilitada);
S3 e S4 so decodificados para indicar qual registrador de segmento est sendo usado no momento (ver
tabela abaixo). No so usados no PC-XT da IBM.
S3 S4 Reg. Segmento
0 0 Dados Extra (ES)
0 1 Pilha (SS)
1 0 Cdigo (CS)
1 1 Dados (DS)
(d) Clock (19): sinal de entrada responsvel pela gerao da temporizao no P. No projeto do PC este sinal
gerado pelo CI 8284A, tendo freqncia de 4,77Mhz e ciclo de trabalho (duty cycle) de 33%.
(e) RQ / GT0 (Request / Grant) (31): sinal bidirecional, usado por outros controladores de barramento local
para requerer o uso do barramento (faz o papel dos pinos HOLD e HLDA do 8085). No PC este sinal ligado
ao co-processador 8087.
(f) RQ / GT1 (30): idem ao anterior, com grau de prioridade menor. No PC no usado.
(g) Lock (29): ativado pela instruo LOCK e permanece ativo at o fim da prxima instruo. usado para
indicar a outros controladores de barramento que estes no devem tentar obter o controle do barramento
durante a execuo da instruo seguinte LOCK. O PC no projetado para multi-controladores e portanto,
este pino no usado.
(h) NMI (17): sinal de entrada, usado para gerar uma interrupo no mascarvel no P. No PC este sinal
mascarado externamente por uma lgica programvel (um FlipFlop). equivalente ao pino TRAP do 8085.
(i) INTR (18): entrada para solicitao de interrupo mascarvel. No PC este pino ligado ao CI 8259A que
expande esta entrada de 1 para 8, adicionando, dentre outras funes, nveis de prioridade.
(j) Ready (22): sinal de entrada usado para inserir estados de espera no ciclo de barramento, estendendo-os. No
PC este sinal vem do chip do clock 8284A que o sincroniza com o clock do sistema.
(l) Reset (21): usado para reiniciar o P. No PC este sinal vem do chip de clock 8284A que recebe uma entrada
da fonte do sistema. A fonte envia um sinal chamado "Power Good" indicando que os nveis de tenso esto
apropriados e o sinal Reset pode ser ento removido para iniciar o P. A situao dos registradores do 8088
aps o RESET a seguinte:
(m) QSO, QS1 (24, 25) - Queue Status: sinais de sada que fornecem o status da fila de instruo (queue) do
8088. No PC so ligados ao co-processador de modo que este possa acompanhar o status da fila 8088.
(n) TEST (23): pino de entrada, utilizado em conjunto com a instruo WAIT (no confundir com estado de
espera, "wait state"). Se aps a instruo WAIT o pino TEST estiver em nvel alto, o 8088 espera em estado
inativo at este pino obter sinal baixo. No PC ligado a um pino de sada do 8087.
(o) S0, S1, S2 (26 - 28) (status): apresentam informaes de status sobre o tipo de ciclo de barramento que
est sendo desenvolvido. Este status vlido no incio de cada ciclo de barramento (durante o perodo T1).
No PC estess pinos so ligados ao 8288, chip controlador de barramento, onde so decodificados. Os sinais
de sada decodificados no 8288 formam as linhas de controle do sistema. Os sinais de controle gerados pelo
8288 a partir das informaes de status so: IOR, IOW, MemR , MemW e ALE. Os bits de status
podem ser vistos na tabela abaixo.
Tipo de ciclo no BUS
S2 S1 S0
0 0 0
Reconhecimento de interrupo ( INTA )
0 0 1
Leitura I/O ( IOR )
0 1 0
Escrita I/O ( IOW )
0 1 1 Halt
1 0 0 Busca de instruo
1 0 1
Leitura memria ( MemR )
1 1 0
Escrita memria ( MemW )
1 1 1 Passivo
T1 a T4 perodos de relgio
ALE Address Latch Enable O endereo s reconhecido depois que este sinal vai para nvel alto, mas
o endereo s efetivamente usado quando este sinal volta para o nvel lgico baixo. Durante o
ciclo T2 os sinais de endereo so removidos.
AD0 AD15 Barramento de dados. No ciclo de leitura esse barramento colocado em estado de alta
impedncia no estado T2, em preparao para a leitura de dados. No ciclo de escrita a
CPU coloca os dados no barra barramento no estado T2.
*
RD Ativo baixo. Indica leitura de dados da memria ou de um dispositivo de entrada e sada. Ativado
em T2.
*
WR Ativo baixo. Indica escrita de dados na memria ou em um dispositivo de entrada e sada.
Ativado em T2.
DT/*R Indica a direo da transferncia de dados.
*
DEN Ativo baixo. Data Enable. Indica que vai haver trfego de dados no barramento.
A19/S6, A16/S3 Barramento de dados durante ciclo T1. Barramento de sinais de estado de T2 a T4.
TW Wait State Tempo de espera. No perodo de leitura a CPU l o dado do barramento no perodo
T3, aps o dispositivo lido entregar esses dados. Se o dispositivo no conseguir entregar os dados at o final do
ciclo T3, o pino READY do 8086 colocado em nvel lgico baixo, fazendo com que a CPU fique estado de
espera, repetindo do estado T3 quantas vezes forem necessrias, enquanto aguarda o dispositivo entregar os
dados. No perodo de escrita pode acontecer o mesmo. A CPU est pronta para entregar os dados, mas o
dispositivo no est pronto para recebe-los. O pino READY colocado em nvel baixo, gerando perodos de
espera.
J foi explicado numa seo anterior como feita a composio do endereo fsico do 8088. Uma das
caractersticas desse microprocessador a sua capacidade de enderear mais que 64 kbytes de memria. O 8088
possui 20 bits de endereos, permitindo ter uma memria fsica de 1.048.576 bytes (ou 1MB).
A gerao de 20 bits, j explicada, feita manipulando o contedo de registradores especiais chamados
Registradores de Segmento. O valor carregado no registrador de segmento usado para localizar, no espao de
1MB, a regio de 64kB onde as instrues do 8088 iro operar. Um outro registrador (que pode ser um reg.
apontador, um reg. ndice ou o BX) pode especificar 64kB dentro de um segmento. O endereo de memria
fsico ser formado pelo deslocamento do contedo do registrador de segmento de 4 bits para a esquerda
(acrescentado-se 4 bits 0 direita), somado a outro valor de 16 bits (acrescentado-se 4 bits 0 esquerda),
resultando num endereo fsico com 20 bits. interessante observar que diferentes combinaes de endereos
lgicos (offsets) e registradores de segmento podem oferecer o mesmo endereo fsico, como exemplificado a
seguir:
EXEMPLO: supondo que SS=8F00h, SP=21F1h, CS=9020h, IP=0FF1h, os endereos fsicos para um
acesso pilha e para a busca da prxima instruo so dados por:
SS = 8F00h 8F000
SP =21F1h + 021F1
endereo fsico 911F1h
CS = 9020h 90200
IP = 0FF1h + 00FF1
endereo fsico 911F1h
Na realidade os quatro registradores de segmento no 8088 (CS, DS, SS e ES) podem assumir o mesmo
valor, ou valores prximos, ou seja, podem se sobrepor parcial ou totalmente. O programador deve tomar
cuidado para que isto apenas ocorra se for estritamente necessrio.
Estes 4 registradores podem apontar para qualquer regio de 64 kB, no espao de 1 MB. Uma vez
setados, haver uma regio de 64kB para o cdigo (CS), 64kB para dados (CS), 64kB para pilha (SS) e 64kB
para dados extra (ES). Em qualquer momento que o programa necessite manipular a memria fsica, fora das
atuais regies de 64 kB, ele deve manipular o registrador de segmento apropriado (alterando-o atravs de
instrues de transferncia de dados. As figuras a seguir ilustram as regies definidas pelos registradores de
segmento sem e com sobreposio.
FFFFFH
Offset +
64 kB
CS 16
Offset +
64 kB
DS 16
Offset +
64 kB
ES 16
Offset +
64 kB
SS 16
00000H
MULTIPLICIDADE DE ENDEREOS
Um mesmo endereo pode ser acessado usando diferentes registradores de segmentos e diferentes registradores
de offset
FFFFFH
64 kB
Endereo Fsico
CS 16
64 kB
SS 16
00000H
Exemplo: Endereo Fsico = 10020 h
Conceito de tipo Cada smbolo (nome de varivel, endereo, constante) tem um determinado tipo.
Exemplos:
MOV AX, [BX] copia o word endereado por BX para AX o tipo do smbolo usado j est implcito
(uma vez que AX de 16 bits), no havendo necessidade de informar ao assembly.
INC [BX] necessrio informar se deve ser incrementado o BYTE de offset BX ou o WORD de offset BX:
INC BYTE PTR [BX] incrementa o byte cujo offset o valor contido em BX
INC WORD PTR [BX] incremeta word que se encontra nos endereos BX e BX+1.
7 6 5 4 3 2 1 0
mod reg r/m
Como observado anteriormente, um endereo fsico (20 bits) constitudo de duas partes:
um segmento ou valor base;
um offset ou endereo efetivo.
Um Endereo Efetivo (EA: Effective Address) a parte offset do endereo fsico. Ele formado pela
soma de um deslocamento (um nmero) com um registrador base (BX ou BP) e com um registrador ndice (SI
ou DI) (exemplo: MOV AX, [BP+SI+4]). A referncia de memria com omisso de qualquer uma destas partes
tambm chamada de Endereo Efetivo (por exemplo, a parte offset do exemplo anterior poderia ser [BP+4] ou
[BP+SI]).
Uma das vantagens de se escrever instrues com endereos efetivos que um endereo de memria
pode ser modificado baseado em condies do programa. Isto particularmente til quando se trabalha com
tabelas (ou matrizes). Por exemplo, BP pode ser setado para apontar para a base (o incio) da tabela e SI (que
armazena o resultado de um clculo) localiza um elemento na tabela.
A tabela abaixo sumariza os modos de endereamento do 8088 e os registradores que esto disponveis
em cada modo.
Modo Endereamento Exemplo Registrador de Operao
Mnemnico Segmento acessado
Imediato MOV AX, 1000H Code CS AX 1000H
Registrador MOV DX, CX - DX CX
Direto MOV AH, [1000H] Data DS AH [1000H]
Indireto por Registro MOV AX, [SI] Data DS AL [SI]; AH [SI+1]
(BX, BP, SI, DI)
Indexado MOV AX, [SI+6] Data DS AL [SI+6]; AH [SI+7]
(SI ou DI)
Baseado MOV AX, [BP+2] Stack SS AL [BP+2]; AH [BP+3]
(BP ou BX)
Baseado e Indexado MOV AX, [BX+SI] Data DS AL [BX+SI];
AH [BX+SI+1]
Baseado e Indexado com MOV AX, [BX+SI+5] Stack SS AL [BX+SI+5];
deslocamento AH [BX+SI+6]
Strings MOVSB Extra, Dado [ES:DI] [DS:SI]
ES, DS se DF = 0 ento:
SI SI+1 e DI DI+1
se DF = 1 ento:
SI SI -1 e DI DI -1
ENDEREAMENTO POR REGISTRADOR
ENDEREAMENTO IMEDIATO
Operando faz parte da prpria instruo. Usado para atribuir valores de 8 ou 16 bits a registradores
Obs.: Modo imediato no pode ser usado para os registradores de segmento, nem para as instrues PUSH
O operando est na memria. A instruo contm o offset do endereo do operando (o segmento DS).
Ex.: MOV AX, [1000H] copia para AX o contedo localizado nos offsets 1000H e 1001 H, ou seja,
AX = 1234 H.
Endereo Dado
1000H 34H
1001H 12H
1002H 25H
ENDEREAMENTO INDIRETO
O operando est na memria. A instruo, ao invs de conter o offset do endereo, como no caso direto,
contm um registrador, que contm o offset do endereo do operando. Os registradores de offset podem ser BX,
BP, DI ou SI (o segmento DS).
Ex.: MOV AX, [BX] copia para AX o contedo localizado no offset dado em BX. Se BX = 1000h,
ento AX = 1234h
Endereo Dado
1000H 34H
1001H 12H
1002H 25H
Exemplo de aplicao: Tabelas, onde o endereo de leitura da tabela dado atravs do registrador de
offset, que incrementado para varredura da tabela.
ENDEREAMENTO INDEXADO
Uma constante, denominada base, e um registrador de ndice so usados. A base e o ndice so somados
para a obteno do offset do endereo. Os registradores de ndice podem ser BX, BP, DI ou SI
Ex.: MOV AX, 0100H[BX] copia para AX o contedo localizado no offset dado por BX + 0100H.
Se BX = 1000h, ento BX + 0100H = 1100H e AX = 1234h
Endereo Dado
1100H 34H
1101H 12H
1102H 25H
Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o ndice
pode ento ser variado para varredura da tabela.
ENDEREAMENTO BASEADO
Endereo Dado
1100H 34H
1101H 12H
1102H xxH
Exemplo de aplicao: Tabelas, onde a posio inicial da tabela pode ser dada atravs da base; o
ndice pode ento ser variado para varredura da tabela.
ENDEREAMENTO RELATIVO
As instrues de desvio e chamadas de subrotina do tipo near ou short somam ou subtraem um valor de
deslocamento para o desvio, ao invs de usar o endereo longo.
Enquanto o 8085 possui apenas 5 canais de interrupo, o 8086 capaz de tratar de 256 interrupes
diferentes, numeradas de 00h a FFh (ou 0 a 255 decimal). Ao contrrio do 8085, a localizao de cada
interrupo no vem pr-definida no microprocessador; existe uma tabela, mostrada a seguir, com os vetores de
interrupo, onde o endereo fsico de cada interrupo colocado.
0000h:03FDh IP high h
0000h:03FEh CS low h
0000h:03FFh CS high h
As interrupes de 0 a 31 (ou 00h a 1Fh) so reservadas. Elas tm finalidades especficas para o 8086.
Dentre as reservadas 5 interrupes j so pr-definidas no 8086:
So interrupes solicitadas atravs do pino INTR (pino 18). Nesse pino conectado um controlador de
interrupo que amplia para 8 os pedidos de interrupo. So interrupes mascarveis atravs do bit IF do
registrador de flags. A seqncia de atendimento de uma interrupo por hardware :
8086 envia primeiro pulso *INTA para perifrico, aps receber pedido de interrupo. Aps esse sinal
reconhecimento de pedido de interrupo o perifrico prepara-se para enviar o nmero da interrupo
8086 envia segundo pulso *INTA para perifrico, tendo como resposta do perifrico o nmero da
interrupo colocada no barramento de dados
8086 salva PSW na pilha
Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2
So interrupes solicitadas atravs da instruo INT nn, onde nn deve estar entre 32 e 255 (as
interrupes de 0 a 31 so reservadas). As interrupes geradas pela instruo INT nn no so mascarveis. A
seqncia de atendimento de uma interrupo por software e tambm de uma interrupo reservada :
Apaga flag TF (Trap passo a passo) e, se for reservada, tambm IF (Interrupt Flag desabilita
interrupes por INTR)
Salva CS (segmento) e IP (offset) na pilha
Carrega novo IP a partir do endereo 4*nn
Carrega novo CS a partir do endereo 4*nn + 2
Embora existam 256 interrupes por software, cada uma delas pode ter at 256 sub-funes diferentes,
ou seja, atravs das interrupes por software, pode-se executar 256*256 = 65.536 funes diferentes.
Normalmente o registrador AH usado para passar para a interrupo qual a funo a ser executada. A tabela a
seguir exemplifica algumas dessas funes.
Podem ser movimentados byte ou word, sendo que os registradores Ponteiros (BP e SP), ndices (SI e
DI) e de Segmento (CS, DS, SS, ES) apenas podem ser acessados como word (16 bits).
DEFINIO DE POSIO DE MEMRIA: Ao escrever programas conveniente dar nomes a
posies de memria: para isto utiliza-se pseudo-instrues.
Observaes.:
(a) Um registrador de segmento no pode ser carregado usando o modo imediato. Exemplos
incorretos: MOV CS, 1000, MOV DS, 3A00.
(b) Somente o registrador BX e os ponteiros e ndices podem referenciar memria. Exemplos
incorretos: MOV AX, [DX], MOV CX, [AX]
(c) Destino e fonte no podem especificar posies de memria ao mesmo tempo. Exemplo incorreto:
MOV [BX], [SI]
Mnemnico Descrio
XCHG AX, BX permuta registradores AX e BX (AX BX)
XCHG AL, CL Permuta registradores AL e CL
XCHG DX, [SI] Permuta DX com o contedo da posio de memria endereada por SI.
Neste exemplo DL [SI] e DH [SI + 1]
LAHF AH Flags low
SAHF Flags low AH
IN AH, 26 IN direto
IN AL, DX IN indireto para as 65536 portas (0 - 65535 ou 0000 - FFFF).
OUT 26, AX Aplica-se as mesmas regras da instruo IN.
OUT DX, AX
LEA BX, MEMBY Load Efective Address: carrega endereo efetivo. No exemplo, BX
carregado com o endereo efetivo de MEMBY (notar a diferena desta
com a instruo "MOV BX, MEMBY")
LEA BX, [1000] BX 1000
LDS BX, dword ptr [SI] Load Pointer using DS. No exemplo BX [SI+1:SI], DS [SI+3:SI+2].
Esta instruo util quando preciso estabelecer novo endereo absoluto
(composio endereo base + endereo de offset)
LES BX, dword ptr [SI] Load Pointer using ES. No exemplo BX [SI+1:SI], ES [SI+3:SI+2]
XLAT AL [BX+AL]. Carrega registrador AL com o contedo (byte) da tabela
iniciada em [BX] e com offset AL
Obs.:
(a) A instruo IN somente pode ser usada para as primeiras 256 portas (0 a 255). Portas c/ endereo > 255
devem utilizar somente reg. DX (referncia de I/O). Exemplo no permitido: IN AX, 3400.
(b) A instruo IN deve utilizar somente o registrador AX. Exemplo no permitido: IN BL,DX.
Mnemnico Descrio
#MAKE_COM# Diretiva para o compilador gerar um arquivo .com
ORG 100h Diretiva que indica o endereo inicial do programa: 0100 H
MOV AX, 0B800h Carrega registrador AX com valor B800 H
MOV DS, AX Copia valor de AX para DS, definindo segmento de dados
MOV CL, 'A' Carrega CL com o cdigo ASCII do caractere A, isto , 41 H
MOV CH, 01011111b Carrega CH com o valor binrio 01011111 b = 5F H
MOV BX, 15Eh Carrega registrador BX com valor 015E H
MOV [BX], CX Copia contedo de CX na posio DS:BX, ou seja, B800:015E
HLT Pra programa
MOV AL, var1 Carrega registrador de 8 bits AL com valor 7 (varivel var1)
MOV BX, var2 Carrega registrador BX de 16 bits com valor 1234 H (var2)
RET Pra o programa
STOS BYTE PTR ES:[DI], AL Armazena o byte em AL no endereo ES:DI. (Poderia ser CS, DS ou SS)
ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI
STOS WORD PTR ES:[DI], AX Armazena o word em AX no endereo ES:DI. (Poderia ser CS, DS ou SS)
ES:[DI] AL. Se D = 0 incrementa DI; se D = 1 decrementa DI
LODS BYTE PTR AL, ES:[DI] Carrega AL com byte da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI
LODS WORD PTR AX, ES:[DI] Carrega AX com word da posio ES:DI
AL DS:[SI]. Se D = 0 incrementa SI; Se D = 1 decrementa SI
CMPS BYTE PTR ES:[DI],[SI] Compara bloco de bytes de duas regies de memria
CMPS WORD PTR ES:[DI],[SI] Compara bloco de word de duas regies de memria
MOVSB Copia bytes da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI).
Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo
no precisa de argumentos.
ES:[DI] DS:[SI]. Se D = 0, incrementa SI e DI; Se D = 1, decrementa SI e DI.
MOVSW Copia words da regio de origem padro (DS:SI) para a regio de destino padro (ES:DI).
Sendo a origem e o destino as regies padres (ao contrrio da instruo MOVS), a instruo
no precisa de argumentos.
ES:[DI] DS:[SI]; ES:[DI+1] DS:[SI+1].
Se D = 0, DI DI + 2 e SI SI + 2; Se D = 1, DI DI 2 e SI SI 2
Precedendo as instrues de transferncia de strings com "REP" faz com que estas instrues sejam
repetidas o nmero de vezes igual ao contedo do registrador CX.
Mnemnico Descrio
#make_COM# Diretiva para o compilador
ORG 100h Diretiva para o compilador programa comea na posio 100h
LEA SI, a1 Offset SI assume o endereo do primeiro valor da varivel a1.
LEA DI, a2 Offset DI assume o endereo da varivel a2.
MOV CX, 5 Registrador CX recebe valor 5
REP MOVSB Instruo MOVSB repetida at o registrador CX alcanar 0.
RET Encerra programa
a1 DB 1,2,3,4,5 Variveis
a2 DB 5 DUP(0) A varivel a2 ter 5 valores zero, conforme declarado em 5 DUP(0).
EXEMPLO 2: Um bloco de memria de 10 bytes com caractere "A3" armazenado na memria, a partir do
endereo fsico E0000 H.
Mnemnico Descrio
#make_COM# Diretiva para o compilador
ORG 100h Diretiva para o compilador programa comea na posio 100h
MOV AX, 0E000 H AX = E000 h
MOV ES, AX Segmento especial ES = AX = E000 h
MOV DI, 0000 DI = 0000h ES:DI = E0000 + 00000 = E0000 h
MOV AL, 0A3 H Byte a ser armazenado colocado em AL
CLD clear direction flag (resseta flag "direo": modo auto-incremento)
MOV CX, 10 Faz CX = 10 sero armazenado 10 bytes a partir de E0000 h
REP STOSB Repete instruo 10 vezes
HLT Pra programa
EXEMPLO 3: Copiar um bloco de memria de 1000 bytes do endereo fsico A1000H para o endereo fsico
E1000 H.
Mnemnico Descrio
MOV AX, 0A000 H AX = A000 H valor que ser passado para registrador de segmento DS
MOV DS, AX Segmento de dados DS = AX = A000 h
MOV SI, 1000 H SI = 1000h DS:SI = E0000 + 00000 = A1000 h
MOV AX, 0E000 H AX = E000 h valor que ser passado para registrador de segmento ES
MOV ES, AX Segmento especial ES = AX = E000 h
MOV SI,1000 H Registrador de offset SI = 1000 h DS:SI = A1000 H
MOV DI,1000 H Registrador de offset DI = 1000 h ES:DI = E1000 H
CLD clear direction flag (resseta flag "direo": modo auto-incremento)
MOV CX, 03E7 H Faz CX = 03E7 h sero armazenado 1000 bytes a partir de E0000 h
REP MOVSB Repete instruo 1000 vezes sero copiados 1000 bytes
Mnemnico Descrio
NOT BX BX complementado (seus bits so invertidos)
NOT BYTE PTR [SI] Byte apontado por SI complementado
NOT WORD PTR [SI] Word apontado por SI complementado
AND CX, DX Funo AND entre CX e DX
AND BL, BYTE PTR [SI] Funo AND entre BL e contedo do Byte apontado por SI
AND AX, 8000 H Funo AND entre AX e 8000 H
OR CX, DX Funo OR entre CX e DX
OR BL, BYTE PTR [SI]
OR AX, 8000
XOR CL, DH Funo XOR entre CL e DH
XOR BX, WORD PTR [SI] Funo XOR entre BX e o Word apontado por SI
XOR AX, 8000
TEST CX, DX Semelhante ao AND, apenas no altera os operandos. utilizado quando se
deseja testar vrios bits: se o teste do 1o bit fracassa, pode-se testar o 2o bit.
TEST AX, 3000
SHL AL, 1 Deslocar esquerda uma vez. Formato: SHL destino, contador
SHL BX, CL Deslocar a esquerda CL vezes.
Mnemnico Descrio
ADD SI, DX soma de registradores
ADD BYTE PTR [BX], CH
ADD DI, 6000
ADC SI, DX soma de registradores com carry
ADC BYTE PTR [BX], CL
SUB AX, BX subtrao de registradores
SUB BL, 34 subtrao de cte imediata
SBB AX, CX subtrao de registradores com borrow
SBB BL, 34 subtrao de cte imediata com borrow
DAA ajuste decimal para adio
DAS ajuste decimal para subtrao
AAA ajuste ASCII para adio
AAS ajuste ASCII para subtrao
INC CL incremento de registrador
INC WORD PTR [SI] incremento de byte apontado por SI
DEC CX decremento de registrador
DEC WORD PTR [SI]
NEG DX complemento de 2 de registrador
NEG WORD PTR [SI]
CMP BL, BH comparao entre dois registradores, BL e BH
CMP [BX], CX comparao entre word apontado por BX e CX
MUL BL multiplicao de byte: AX AL * BL
MUL CX multiplicao de word: DX:AX AX * CX
IMUL BL multiplicao de nmero com sinal
DIV BL diviso de byte: AX AL / BL (AL: quociente; AH: resto)
DIV CX diviso de word: DX:AX AX / CX (AX: quoc.; DX: resto)
IDIV BL diviso de nmero com sinal
Mnemnico Descrio
Desvio Incondicional
JMP [BX] IP [BX+1:BX]
JMP BX IP BX
JMP DWORD PTR [BX]; IP [BX+1:BX] ; CS [BX+3:BX+2]
Desvio condicional
CALL e RETURN
CALL DELAY chamada de sub-rotina "DELAY"
CALL [BX] chamada de sub-rotina iniciada pelo contedo de memria
apontado por BX: IP [BX+1:BX]
CALL BX chamada de sub-rotina iniciada pelo BX: IP BX
RET retorno de sub-rotina
IRET retorno de rotina de interrupo (restaura CS e IP)
Mnemnico Descrio
STI seta flag Interrupo
CLI resseta flag Interrupo
STC seta carry flag
CLC resseta carry flag
CMC complementa carry flag
STD seta flag direo
CLD resseta flag direo
HLT para a CPU
WAIT para a CPU at o pino test ficar ativo
NOP sem operao (utilizado para gerar delay)
LOCK instruction coloca Pino LOCK em "0" durante a execuo da prxima instruo
(instruction)
Apesar de possuir 20 bits de endereo, a arquitetura do 8088 suporta apenas 64KB (65.536) endereos de
dispositivos de I/O pois os bits de endereamento A16 a A19 no so utilizados. A configurao usada no PC
tambm no usa toda esta capacidade. Somente os 10 bits menos significativos do barramento de endereos so
utilizados. Como 210 = 1024, este o nmero de endereos de I/O disponveis no PC (0000h a 03FFh). A figura
abaixo mostra a diviso de endereos no PC.
O bit A9 tem um significado especial no projeto do PC: quando est inativo (0), os dados no podem ser
recebidos (pelo micro) vindo dos slots. So habilitados apenas dados vindos de dispositivos de I/O instalados na
prpria placa me (mother board, main board ou system board). Quando ativo (1), so habilitados a recepo
apenas de dados provenientes dos slots.
Tem-se assim 512 portas para uso interno do PC e 512 portas para uso de dispositivos conectados nos
slots (ver figura abaixo).
Esta diviso aplica-se apenas instruo IN (instruo de entrada de I/O). Para a instruo OUT
(instruo de sada de I/O), todos os 1024 endereos podem ser utilizados nos slots.
Em sintonia com a restrio da instruo IN, o PC usa a primeira metade dos endereos para os
dispositivos da placa principal (placa me) e a metade restante para os dispositivos dos slots (ver figura abaixo).
A seguir sero apresentados os mapas de endereos de I/O do PC-XT. Deve-se observar que novas
placas (por exemplo, placas de som ou de rede) podero decodificar endereos que atualmente esto livres.
Dispositivos de I/O residentes na placa principal fazem o servio de interrupo, transferncia de dados
(DMA), contagem, etc. Na figura abaixo pode ser visto o mapa de endereamento de I/O para a placa principal.
01FF h
O conhecimento destes endereos torna-se a base de qualquer projeto de interface, j que representam o
ponto de entrada e sada de dados (ver figura na pgina 16).
Nem todos os 512 endereos disponveis no slots podem ser utilizados para interfaceamento pois vrios
endereos so previamente reservados para dispositivos comuns ao sistema. Os dispositivos de I/O que
normalmente so conectados nos slots so joysticks, portas paralelas (impressoras), portas seriais (RS-232),
adaptador grfico (CGA, MDA, EGA, VGA), acionador de disquetes e de disco rgido. Para evitar problemas de
incompatibilidade de placa de interface entre diferentes micros deve-se evitar a duplicao desses endereos.
O modo mais simples de decodificar um endereo para uma porta de I/O ou um grupo de endereos para
projetos de interface inspecionar o mapa de endereamento e encontrar um bloco de endereos no utilizado, e
ento, construir um circuito decodificador adequado. O endereo decodificado dever ser acionado logicamente
com os sinais de barramento IOR (leitura de I/O) ou IOW (escrita de I/O) para gerar entradas ou sadas de
dados, respectivamente.
Outro sinal importante o AEN (Address ENable), gerado pelo controlador de DMA. Quando ativo (1), o
DMA assume o controle dos barramentos e o microprocessador desabilitado. Portanto, tem a funo de
desabilitar a decodificao de endereos de I/O durante o ciclo de DMA: deve fazer parte da lgica de
decodificao. Como mostrado mais frente, a faixa de endereos de 0300h 031Fh est livre para uso em
placas de interface.
9.11.4 O Slot do PC (ISA 8 bits)
O slot do PC apresenta todos os sinais de interesse para a interface com qualquer dispositivo de I/O. Os
sinais disponveis nos slots so os sinais de endereamento, de dados, clock, tenses, etc. A configurao dos
sinais no slot ISA 8 bits pode ser visualizada na figura da pgina 17. Os sinais mais utilizados so dados a seguir:
Servem para controlar o acesso aos CI's de I/O). Alguns principais sinais de controle so:
IOW (B13) - habilita escrita nos perifricos de I/O quando em nvel lgico baixo;
IOR (B14) - habilita leitura dos perifricos pelo microprocessador quando em nvel lgico baixo;
RESET DRV (B2) - sinal de reset utilizado para ressetar portas programveis da placa de interface;
AEN (A11): utilizado na lgica de decodificao de endereos para indicar quando est ocorrendo um DMA;
CLOCK (B20): sinal de clock fornecido pela placa principal, freqncia = 4,77 MHz;
DADOS: de D0 D7 (A9 - A2): sinais provenientes do barramento de dados;
ENDEREOS: de A0 A9 (A31 - A22): sinais provenientes do barramento de endereos.
Todos os demais sinais no so usados freqentemente, pois apenas placas de interface mais
sofisticadas necessitam destes outros recursos.
0220 h
80 Reservada ou No Documentada
026F h
0270 h
16 Porta Paralela ou Impressora # 2
027F h
0280 h
112 Reservada ou No Documentada
02EF h
02F0 h
16 Porta Serial #2
02FF h
0300 h
32 Placa de Prototipo
031F h
0320 h
16 Adaptador de Disco Rgido
032F h
0330 h
64 No Documentada
036F h
0370 h
16 Impressora Paralela Principal
037F h
0380 h
48 Reservada ou No Documentada
03AF h
03B0 h
16 Placa de Vdeo Monocromtica
03BF h
03C0 h
16 Placa de Vdeo EGA
03CF h
03D0 h
16 Placa de Vdeo CGA
03DF h
03E0 h
16 Reservado
03EF h
03F0 h
16 Disco Flexvel e Porta Serial
03FF h
Mnemnico Descrio
#make_BIN# Diretiva do compilador para gerar um arquivo .bin
MOV AX, 5 Registrador AX = 0005 (decimal)
MOV BX, 10 Registrador BX = 0010 (decimal)
ADD AX, BX Faz AX AX + BX AX = 0005 h + 000A h = 000F h (15 dec)
SUB AX,1 Faz AX AX 0001 h AX = 000F 0001 = 000E h (14 dec)
HLT Pra programa
V1 DB 4, 3, 2, 1, 0 Valores do vetor V1
V2 DB 0 Valor inicial da varivel V2
3. Criar um programa para fazer uma contagem hexadecimal crescente de 00 a FFh e mostrar a contagem
no vdeo e no display de 7- segmentos.
4. Repetir o programa anterior para uma contagem hexadecimal de 0000h at FFFF h, ininterrupta.
5. Criar um programa para fazer uma contagem decimal crescente de 0 a 50, ininterrupta. Mostrar
resultado no display de 7-segmentos.
7. Criar um programa para fazer uma contagem hexadecimal decrescente de FFh a 00 ininterrupta e
mostrar a contagem no vdeo e no display de 7- segmentos.
8. Criar um programa para fazer um contagem decimal decrescente ininterrupta de 50000 a 0. Mostrar no
display de 7-segmentos.
9. Fazer um programa que simula um cronmetro decrescente que conta de 20:00 min at 00:00. Mostrar o
resultado no vdeo, no formato apresentado.
10. Fazer um programa que simula um relgio no formato hh:mm:ss. Mostrar resultado no vdeo.
11. Criar um programa para mostrar trs diferentes frases no vdeo, em linhas diferentes.
12. Fazer um programa para somar os elementos de dois vetores de 5 valores, cada. O resultado deve ser
mostrado no vdeo.
13. Fazer um programa para ler dois valores pelo teclado, adiciona-los e mostrar o resultado no display de
7-segmentos.
14. Adapte o programa stepper_motor do Emu8086 para que o motor fique girando 10 vezes para um
lado e 10 vezes para o outro lado, ininterruptamente.
15. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento simples, ou seja,
permisso para seguir em frente ou virar direita para as duas avenidas (sinal de dois tempos).
16. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os dois
sentidos da avenida horizontal tenha permisso para seguir em frente, virar esquerda ou virar direita
e os veculos da avenida vertical tenham permisso apenas para seguir em frente ou virar direita (sinal
de trs tempos).
17. Adapte o programa traffic_ligths do Emu8086 de forma a simular um cruzamento onde os veculos de
todas as pistas possam seguir em frente, virar direita ou virar esquerda (sinal de quatro tempos).