Sei sulla pagina 1di 38

CONTEDO DO CAPTULO 11 (SAP-2)

11.0 Introduo .......................................................................................... 03



11.1 Registradores Bidirecionais.............................................................. 03

11.2 Arquitetura ......................................................................................... 03
Portas de Entrada,03
Contador de Programa,03
REM e Memria,04
Registrador de Dados de Memria,04
Registrador de Instruo,04
Controlador-sequencializador,05
Acumulador,05
ULA e Flags,06
Registradores TMP,B e C,06
Portas de Sada,06

11.3 Instrues com Referncia Memria..............................................06
LDA eSTA,06
MVI,07
Cdigos de Operao,07

11.4 Instrues de registradores...............................................................09
MOV,09
ADD e SUB,10
INR e DCR,10

11.5 Instrues JUMP e CALL....................................................................12
JMP,12
JM,12
JZ,13
JNZ,13
CALL e RET,14
Mais sobre Flags,15

11.6 Instrues Lgicas..............................................................................20
CMA,20
ANA,20
ORA,21
XRA,21
ANI,21
ORI,21
XRI,22

11.7 Outras Instrues................................................................................22
NOP,22
HLT,22
OUT,22
RAL,23
RAR ,23
1

11.8 Resumo do SAP-2...............................................................................25
Estados T,25
Flags(Bandeiras),26
Saltos Condicionais,26
Modos de Endereamento,27
Bytes,28

Glossrio..........................................................................................................36

Exerccios de Fixao.....................................................................................36

Problemas........................................................................................................37






































2
SAP-2

O SAP-1 um computador porque ele, primeiramente, armazena um programa e os dados antes
de comear os clculos e, ento, executa automaticamente as instrues do programa sem a
interveno humana. E, tambm, o SAP-1 uma mquina primitiva. Ele se compara com o
computador moderno da mesma forma que o homem das cavernas de compara com o homem
moderno.Algo est ausente nele, algo que pode ser encontrado em qualquer computador moderno.
O SAP-2 o prximo passo da evoluo em direo ao computador moderno porque inclui
instrues de salto. Estas novas instrues obrigam o computador a repetir ou omitir partes de um
programa. Como voc ver, as instrues de salto abrem as portas para toda uma nova capacidade
computacional.

11-1 REGISTRADORES BIDlRECIONAlS

Para reduzir a capacitncia da fiao do SAP-2, usaremos apenas um conjunto de fios entre
cada registrador e o barramento. A Fig. 11-1a mostra a idia. Os pinos de entrada e sada so
ligados entre si; apenas um grupo de fios conectado ao barramento.
Esta sobreposio de pinos causa problemas? No. Durante o funcionamento do computador,
tanto LOAD como HABILITA podem estar ativos, mas nunca ao mesmo tempo. Um LOAD ativo
significa que uma palavra binria flui do barramento para a entrada do registrador; durante uma
operao de carga, as linhas de sada esto flutuando. Por outro lado, um HABILITA ativo significa
que os dados esto fluindo do registrador para o barramento e, neste caso, as linhas de entrada
esto flutuando.
O fabricante do CI pode ligar internamente os pinos de entrada e de sada de um registrador de
trs estados. Alm de diminuir a capacitncia de fiao, isto diminui o nmero de pinos de E/S. Por
exemplo, a Fig. 11-1b mostra quatro pinos de E/S em vez de oito.
A Fig. 11.1c o smbolo de um registrador de trs estados com os pinos de entrada e sada
interconectados internamente. As setas duplas lembram-nos que o caminho bidirecional;os dados
movem-se nos dois sentidos.

11-2 ARQUITETURA

A Fig. 11-2 mostra a arquitetura do SAP-2. Todos os registradores ligados ao barramento W so
de trs estados; os demais so de dois estados. Como antes, o controlador-sequencidor envia sinais
de controle (no ilustrados) para cada registrador. Estes sinais de controle carregam, habilitam ou de
alguma outra forma preparam o registrador para a prxima borda positiva do sinal de relgio. A
seguir, dar-se- uma breve descrio de cada caixa.

Portas de Entrada

O SAP-2 tem duas portas de entrada, numeradas com 1 e 2. Um codificador hexadecimal de
teclado est ligado porta 1. Ele nos permite dar entrada a dados e instrues hexadecimais atravs
da porta 1. Observe que o codificador do teclado envia um sinal de READY (pronto) para o bit 0 da
porta 2, Este sinal indica quando o dado da porta 1 est vlido.
Observe tambm o sinal SERlAL IN indo para o pino 7 da porta 2. Um exemplo posterior
mostrar como converter dados seriados de entrada em dados paralelos.

Contador de Programa

Desta vez o contador de programa tem 16 bits. Portanto, ele pode contar de

PC = 0000 0000 0000 0000
At

PC = 1111 1111 1111 1111

3
Isto equivale a contar de 0000H a FFFFH ou em decimal de O a 65.535.
Um sinal baixo CLR zera o PC (contador de programa) antes do computador comear a
executar um programa; assim, a primeira instruo a ser executada a armazenada na posio
0000H memria.

REM e Memria

Durante o ciclo de busca, o REM (registrador de endereo de memria) recebe endereos de 16
bits do contador de programa. Ento, a sada de dois estados do REM indica a posio desejada de
memria. A memria tem uma ROM de 2K com endereos de 0000H a 07FFH. Esta ROM contm
um programa, o monitor, que inicializa o computador ao ser ligado; interpreta as entradas do teclado
e assim por diante. O restante da memria uma RAM de 62K com endereos de 0800H a FFFFH.

Registrador de Dados de Memria

O registrador de dados de memria (DMR) um registrador buffer de 8 bits. A sua da sada
alimenta a RAM, O registrador de dados de memria recebe dados do barramento antes de uma
operao de escrita e envia dados para o barramento depois de uma operao de leitura.

Registrador de Instruo

Como o SAP-2 tem mais instrues que o SAP-1, usaremos 8 bits em vez de 4, para o cdigo de
operao. Um cdigo de operao de 8 bits pode acomodar 256 instrues. Como o SAP-2 tem
apenas 42 instrues, no haver problemas com a codificao das instrues. O uso de um cdigo
de operao de 8 bits tambm permitir posterior compatibilizao com o conjunto de instrues do
8080/8085 que se baseia tambm em 8 bits. Como foi mencionado anteriormente, todas as
instrues SAP so idnticas s instrues do 8080/8085.

Fig. 11-1 Registrador bidirecional.

4
Controlador-Sequencializador

O controlador-sequencializador produz as palavras de controle ou microinstrues que
coordenam e dirigem o restante do computador. Como o SAP-2 tem um repertrio de instrues
maior, o controlador-sequencializador tem mais hardware. Apesar da palavra CON ser maior, a idia
a mesma: a palavra de controle ou microinstruo determina como os registradores devem reagir
prxima borda positiva de relgio.

Acumulador

Enquanto a sada de dois estados do acumulador vai para a ULA, a sada de trs estados vai
para o barramento W. Assim, a palavra de 8 bits do acumulador alimenta continuamente a ULA.
Entretanto, esta mesma palavra aparece no barramento apenas quando est ativo.
A
E



Fig. 11-1 Registrador bidirecional.


5
ULA e Flags

As ULAs esto comercialmente disponveis como circuitos integrados. Elas tm 4 ou mais bits de
controle que determinam a operao lgica ou aritmtica a ser executada com as palavras A e B. A
ULA usada no SAP-2 inclui operaes lgicas e aritmticas.
Neste livro, um flag (bandeira) um flip-flop que informa sobre uma condio varivel durante a
execuo de um programa. O SAP-2 tem 2 flags. O flag de sinal setado quando o contedo do
acumulador torna-se negativo durante a execuo de algumas instrues. O flag de zero setado
quando o contedo do acumulador toma-se zero.

Registradores TMP , B e C

Em vez de usar o registrador B para guardar o dado que est sendo adicionado ou subtrado do
acumulador, usa-se um registrador temporrio (TMP). Isto nos traz maior liberdade ao usar o
registrador B. Alm dos registradores TMP e B, o SAP-2 tem tambm um registrador C. Isto nos d
maior flexibilidade ao mover dados durante uma "rodada" de computador.

Portas de Sada

O SAP-2 tem duas portas de sada, numeradas 3 e 4. O contedo do acumulador pode ser
carregado na porta 3 que alimenta um display hexadecimal. Isto nos permite ver os dados
processados.
O contedo do acumulador tambm pode ser enviado para a porta 4. Observe que o pino 7 da
porta 4 envia um sinal de ACKNOWLEDGE (reconhecimento) para o codificador hexadecimal. Este
sinal de ACKNOWLEDGE e o sinal de READY fazem parte de um conceito chamado handshaking
("aperto de mos") a ser discutido posteriormente.
Observe tambm o sinal de SERIAL OUT (sada em srie) que sai do pino 0 da porta 4. Um dos
exemplos nos mostrar como converter os dados paralelos do acumulador em dados seriados de
sada.

11-3 INSTRUES COM REFERNCIA MEMRIA

O ciclo de busca do SAP-2 o mesmo de antes. T
1
o estado de endereo, T
2
o estado de
incremento e T
3
o estado de memria: Portanto, todas as instrues do SAP-2 usam memria
durante o ciclo de busca porque toda instruo de programa transferida da memria para o
registrador de instruo.
Durante o ciclo de execuo, entretanto, a memria pode ou no ser usada dependendo do tipo
de instruo que foi buscada. Uma instruo com referncia memria (IRM) aqueIa que usa a
memria durante o ciclo de execuo.
O conjunto de instrues do SAP-2 apresenta 42 instrues, O que se expe a seguir uma
descrio das instrues com referncia memria.

LDA e STA

LDA (load accumulator) tem o mesmo significado de antes: carregar o acumulado com o dado
endereado na memria. A nica diferena que mais posies de memria podem ser acessadas
no SAP-2 porque os endereos vo de 0000H at FFFFH. Por exemplo, LDA 2000H significa
carregar o acumulador com o contedo da posio 2000H na memria.
Para se distinguir as diferenas de uma instruo,o mnemnico e chamado algumas vezes de
cdigo de operao e o restante da instruo conhecido como operando. Em LDA 2000H, LDA o
cdigo de operao e 2000H o operando Assim, "cdigo de operao" pode significar duas coisas
na rea de rnicrocomputadores: pode significar o mnemnico ou o cdigo binrio utilizado para
representar o mnemnico. O significado pretendido torna-se claro a partir do contexto.
STA (store accumulator) um mnemnico para armazenar o acumulador. Todas as instrues
STA necessitam de um endereo. STA 7FFFH significa armazenar o contedo do acumulador na
posio 7FFFH da memria. Se
6
A= 8AH

a execuo de STA 7FFFH armazena 8AH no endereo 7FFFH.

MVI

MVI (move immediate) o mnemnico para mova imediato. Esta instruo diz para o computador
carregar um registrador indicado com o byte que sucede imediatamente o cdigo de operao. Por
exemplo,

MVI A,37H

diz para o computador carregar o acumulador com 37H. Depois da execuo desta instruo, o
contedo do acumulador ser

A= 0011 0111

Voc pode usar a instruo MVI com os registradores A, B e C. Os formatos destas instrues
so

MVI A,byte
MVI-B,byte
MVI C,byte

Cdigos de Operao

A Tabela 11-1 mostra os cdigos de operao do conjunto de instrues do SAP-2. Estes so
cdigos de operao do 8080/8085. Como voc pode ver, 3A o cdigo de operao para LDA, 32
o cdigo de operao para STA etc. Refira-se a esta tabela no restante deste captulo.

EXEMPLO 11-1

Mostre os mnemnicos de um programa que carrega o acumulador com 49H, o registrador B
com 4H e o registrador C com 4BH. A seguir o programa armazena o contedo do acumulador na
posio 6285H da memria.

SOLUO

Aqui est um programa que funcionar:

Mnemnicos

MVI A,49H
MVI B,4AH
MVI C,4BH
STA 6285H
HLT

As trs primeiras instrues carregam 49H, 4AH e 4BH nos registradores A, B e C. STA 6285H
armazena o contedo do acumulador em 6285H.
Observe o uso de HLT neste programa. Ele tem o mesmo significado de antes: parar o
processamento dos dados.




7
EXEMPLO 11-2

Converta o programa anterior para a linguagem de mquina do 8080/8085 usando os cdigos de
operao da Tabela 11-1 .Comece no endereo 2000H.
SOLUO

H duas novas idias neste programa em linguagem de mquina. Com a instruo

MVI A,49H

observe que o cdigo de operao vai no primeiro endereo e o byte vai no segundo endereo.Isto
vlido para todas as instrues de dois bytes: o cdigo de operao na primeira posio disponvel
de memria e o byte na seguinte.
A instruo

STA 6285H

uma instruo de trs bytes (1 byte para o cdigo de operao e 2 bytes para o endereo). O
cdigo de operao de STA 32H. Este byte vai na primeira posio disponvel de memria, que
2006H. O endereo 6285H tem dois bytes. O byte inferior 85H vai na prxima posio de memria e
o byte superior 62H na seguinte.
Por que o endereo programado com o byte inferior primeiro e o byte superior depois?
Isto uma peculiaridade do projeto original do 8080. Para manter a compatibilidade, o 8085 e outros
microprocessadores seguiram esta mesma disposio dos bytes de endereo na memria de
programa.
A ltima instruo HLT tem um cdigo de operao de 76H armazenado na posio 2009H da
memria.
Em resumo, as instrues MVI so de 2 bytes, a STA uma instruo de 3 bytes e a HLT de 1
byte.














8



TABELA 11-1. CDIGOS DE OPERAO DO SAP-2



11-4 INSTRUES DE REGISTRADORES .

As instrues com referncia memria so relativamente lentas porque necessitam de mais de
um acesso memria durante o ciclo de instruo. Alm disso, seguidamente queremos transferir
dados de um registrador para outro sem ter de passar pela memria. A seguir veremos algumas das
instrues de registradores do SAP-2 que foram projetadas para mover dados de um registrador
para outro no menor tempo possvel.

MOV

MOV (move) o mnemnico de mova. Esta instruo diz para o computador mover dados de um
registrador para outro. Por exemplo,

MOV A,B

diz para o computador mover o contedo do registrador B para o acumulador. O contedo de B
copiado sem ser destrudo. Por exemplo, se

A= 34H e B = 9DH

ento a execuo de MOV A,B resulta em

A= 9DH
B = 9DH
9

Voc pode mover dados entre os registradores A, B e C. Os formatos de todas as instrues
MOV A,B
Estas instrues so as mais rpidas do conjunto de instrues do SAP-2 porque exigem apenas um
DD e SUB
MOV so

MOV A,C
MOV B ,A
MOV B.C
MOV C,A
MOV C,B
ciclo de mquina.

A

ADD (add) significa adicionar o contedo do registrador designado ao acumulador. Por exemplo,
ADD B

ignifica adicionar o contedo do registrador B ao acumulador. Se
A= 04H e B = 02H

nto a execuo de ADD B resulta em
A=06H


s

e

De maneira parecida, a instruo SUB significa subtrair o contedo do registrador designado do
ADD B

R e DCR
acumulador. SUB C ir subtrair o contedo do registrador C do acumulador.
Os formatos das instrues ADD e SUB so

ADD C
SUB B
SUB C
IN

Muitas vezes desejamos incrementar ou decrementar o contedo de um dos registradores.INR
INR A

ttulo de exemplo, se
B = 56H e C= 8AH

nto, a execuo de INR B resulta em
o mnemnico para incrementar que manda o computador incrementar o registrador designado. DCR
o mnemnico de decrementar que manda o computador decrementar o registrador designado. Os
formatos destas instrues so

INR B
INR C
DCR A
DCR B
DCR C
A

e

10
B = 57H

a execuo de DCR C produz
C= 89H

XEMPLO 11-3
e

E

Mostre os mnemnicos necessrios para somar os nmeros decimais 23 e 45. A resposta deve
OLUO
ser armazenada na posio 5600H de memria. Alm disto, a resposta incrementada de uma
unidade deve ser armazenada no registrador C.

S

Os nmeros decimais 23 e 45 so equivalentes a 17H e 2DH. Aqui est um programa capaz de

XEMPLO 11-4 .
realizar esta tarefa:


E

Montar manualmente um programa significa traduzir um programa fonte num programa de
SOLUO
bserve que as instrues ADD, INR, MOV e HLT so de 1 byte; as instrues MVI so de 2 bytes e

mquina mo em vez de usar uma mquina. Monte manualmente o programa do exemplo
precedente no endereo 2000H.




O
a instruo STA, de 3 bytes.

11
11-5 INSTRUES JUMP E CALL.
altar(jump) que podem alterar a seqncia de instrues dentro
e um programa.Em outras palavras, em vez de buscar a prxima instruo da maneira usual, o
MP

O SAP-2 tem trs instrues de s
d
computador pode saltar ou desviar para uma outra parte do programa.



J

ra comear , JMP o mnemnico para saltar (jump) que manda o computador buscar a
rxima instruo da posio designada da memria. Toda instruo JMP inclui um endereo que
00H
diz ao computador para buscar a prxima instruo na posio 3000H de memria.


Fig. 11.3 (a) Salto incondicional; (b) salto condicional
Aqui est o que aconte o na posio 2005H como
ustrado na Fig. 11-3a. No final do ciclo de busca, o contador de programa contm
Durante o ciclo de execuo, a JMP 300 contador de programa com o endereo
esignado:
PC = 3000H
Quando o prximo ciclo de busca comear, a prxima instruo vir de 3000H e no de 2006H (ver
ig. 11-3a).
Pa
p
carregado no contador de programa. Por exemplo,

JMP 30



ce. Suponha que JMP 3000H est armazenad
il

PC = 2006H

0H carrega o
d


F

JM

SAP-2 tem dois flags: o de sinal e o de zero. Durante a execuo de algumas instrues, estes
ags sero setados ou zerados dependendo do que acontece com o contedo do acumulador. Se o
O
fl
12
contedo do acumulador se tornar negativo, o flag de sinal ser setado, se no, ser zerado.
Simbolicamente

onde S significa flag de sinal. O flag de sinal setado ou zerado at que uma nova
perao o afete.
o somente se o flag de sinal estiver setado. Por exemplo, suponha que uma JM
Se S = 1 , a execuo da JM 3000H carregar o contador de programa com
Como o contador de programa contm agor H, a prxima instruo vir de 3000H.
Se a condio de saltar no for verdadeira (S = O), o contador de programa permanecer
ser
putador saltar para 3000H. Caso contrrio, o programa seguir normalmente
permanecer
o
JM um mnemnico para saltar se menos (jump if minus). O computador saltar para o
endereo designad
3000H esteja armazenada em 2005H. Depois da busca desta instruo,

PC = 2006H


PC = 3000H

a o valor 3000

inalterado durante o ciclo de execuo. Assim, durante o prximo ciclo de busca, a instruo
buscada de 2006H.
A Fig. 11-3b simboliza as duas possibilidades para uma instruo JM. Se a condio de menos
for satisfeita, o com
como se nada tivesse acontecido.

JZ

O outro flag afetado pelas operaes de acumulador o de zero. Durante a execuo de
lgumas instrues, o acumulador se tornar zero. Para registrar este evento, o flag de zero ser

JZ o mnemnico para saltar se zero ) que manda o computador saltar para o
ereo designado apenas se o flag de zero estiver setado. Suponha que uma JZ 3000H esteja
Z significa saltar se no zero (jump if not zero ). Ela manda o computador saltar para o
ndereo designado apenas quando o flag de zero estiver zerado. Quando o flag de zero estiver
esto satisfeitas. Por outro lado, JMP incondicional, porque depois que a


a
setado. Se o contedo do, acumulador no se tornar zero, o flag de zero ser zerado.
Simbolicamente
(jump if zero
end
armazenada em 2005H. Se Z = 1 durante a execuo da JZ 3000H, ento a prxima instruo ser
buscada em 3000H. Caso contrrio, Z = 0, a prxima instruo vir de 2006H.

JNZ

JN
e
setado, no haver salto. Suponha que uma JNZ 7800H esteja em 2100H. Se Z = 0, a prxima
instruo vir de 7800H; entretanto, se Z = 1, o programa passar por cima indo para a instruo
armazenada em 2101H.
JM, JZ e JNZ so instrues de salto condicional, porque o saldo no programa ocorre apenas
quando certas condies
instruo for buscada, o ciclo de execuo sempre far o programa pular para o endereo
especificado.


13
CALL e RET

Uma sub-rorina um programa armazenado na memria para um possvel uso num outro
itos microcomputadores tm sub-rotinas para o clculo de senos, co-senos, tangentes.
garitmos, razes quadradas etc. Estas sub-rotinas fazem parte do software fornecido com o
e uma de logaritmo comear no endereo 6000H, a execuo de
roduzir um salto para a sub-rotina de logaritmo.
RET significa retornar. Ela usada no fim de todas as sub-rotinas para mandar o computador
tomar ao programa original. Uma instruo RET est para uma sub-rotina assim como uma
em ao computador que algo est terminado. Se
do no contador de programa para
que sucede a CALL no



Fig. 11-4 A instruo CALL

Assim como a JMP , a CALL incondicional. Logo que uma CALL for buscada do registrador de
instruo, o computador saltar para o endereo inicial da sub-rotina.

programa. Mu
lo
microcomputador.
CALL (chamar) um mnemnico para chamar sub-rotina. Toda instruo CALL deve incluir o
endereo inicial da sub-rotina desejada. Por exemplo, se uma sub-rotina para raiz quadrada comear
no endereo 5000H

CALL 5000H
ir fazer um salto para a sub-rotina de raiz quadrada. Por outro lado, uma

CALL 6000H

p
re
instruo HLT est para um programa. Ambas diz
voc esquecer de colocar RET no fim de uma sub-rotina, o computador no poder voltar ao
programa original e voc acabar obtendo entulho de computador.
Quando uma CALL executada no SAP-2, o contedo do contador de programa
automaticamente resguardado nas posies de memria FFFEH e FFFFH (as duas ltimas posies
da memria). Ento, o endereo que acompanha a CALL carrega
que a execuo possa comear no primeiro endereo da sub-rotina. Quando a sub-rotina termina, a
instruo RET faz com que o endereo depositado nas posies FFFEH e FFFFH seja carregado de
volta no contador de programa. Isto devolve o controle ao programa original.
A Fig. 11-4 mostra o fluxo de programa durante uma sub-rotina. A instruo CALL 5000H envia o
computador para a sub-rotina localizada na posio 5000H. Quando esta sub-rotina estiver
encerrada, a instruo RET enviar o computador de volta para a instruo
programa principal.




14
Mais sobre os Flags
Os flags de zero e de sinal podero ser setados ou zerados durante a execuo de certas
1-2 lista as instrues do SAP-2 que afetam os flags. Todas estas instrues
sam o acumulador durante o ciclo de execuo. Se o acumulador se tornar zero ou negativo
r C enviado para o acumulador,

EXEMPLO 11.5



instrues. A Tabela 1
u
enquanto uma destas instrues estiver sendo executada, o flag de zero ou de sinal ser setado.
Por exemplo, suponha que a instruo que est sendo executada seja ADD C. O contedo do
registrador C adicionado ao contedo do acumulador. Se o contedo do acumulador se tornar zero
ou negativo no processo, o flag de zero ou de sinal ser setado.
Uma palavra ainda sobre as instrues INR e DCR. Como estas instrues usam o acumulador
para incrementar ou decrementar 1 do registrador designado, elas tambm afetam os flags.Por
exemplo, para executar uma DCR C, o contedo do registrado
subtrado de 1 e devolvido ao registrador C. Se o acumulador se tornar negativo, o flag de sinal ser
setado e, se o acumulador se tornar zero, o flag de zero ser setado.

TABELA 11-2. INSTRUES QUE AFETAM OS FLAGS

Faa a montagem manual do seguinte programa que inicia no endereo 2000H:

MVI C,O3H
JZ 0009H


DCR C

JMP 0002H
HLT
SOLUO

15
EXEMPLO 11-6

No programa anterior, quantas vezes a instruo DCR executada?

SOLUO

A Fig. 11-5 ilustra o fluxo de programa. Aqui est o que acontece. A instruo MVI C,03H carrega
o registrador C com 03H. A DCR reduz o contedo para 02H. O contedo superior a zero; portanto,
o flag de zero zerado e a instruo JZ 2009H ignorada. A JMP 2002H faz o computador voltar
instruo DCR C.



Na segunda vez que a DCR C para 01H e o flag de zero ainda
continua zerado.JZ 2009H novamente ignorada e JMP 2002H faz o computador voltar para DCR
C.
Na terceira DCR C setado e, ento, a JZ
2009H faz o programa pular para a instruo
Um lao uma parte de um Neste exemplo, ns passamos trs vezes
atravs do lao (DCR C e JZ 2009H), como ilustrado na Fig. 11-5. Note que o nmero de vezes que
se passou pelo C. Se mudarmos a
primeira instruo para

computador far 7 passagens pelo lao. Da mesma forma, se desejarmos passar.200 (C8H) vezes
elo lao; a primeira instruo seria
montar um lao usando MVI, DCR, .JZ e JMP
es dentro do lao, estas instrues adicionais
Quando voc compra um microcomputad uire junto normalmente software par realizar
iferentes tarefas. Um dos programas que voc pode adquirir um assembler. O assembler lhe
ina. Em outras palavras, quando voc tem um assembler, no

Fig. 11-5 Lao de operaes repetidas.
executada, o contedo desce
a
, o contedo vai a zero. Desta vez, o flag de zero
HLT.
programa que repetida.
lao igual ao nmero inicialmente presente no registrador
MVI C,07H
o
p
MVI C,C8H

O registrador C age como um contador decrementador pr-ajustvel. Esta a razo pela qual o
registrador C algumas vezes conhecido como um contador.
O ponto a ser lembrado o seguinte. Podemos
num programa. O nmero carregado no registrador designado (o contador) determina o nmero de
passagens pelo lao. Se colocarmos mais instru
sero executadas X vezes, onde X o nmero colocado inicialmente no contador.

EXEMPLO 11-7

or, voc adq
d
permite escrever programas na forma de mnemnicos. Ento, o assembler converte estes
mnemnicos em linguagem de mqu
16
precisa mais fazer montagem manual de se ; o computador far isto por voc.Mostre a
erso em linguagem assembler do programa do Exemplo 11-5. Inclua rtulos e comentrios.
tamos
ndo o contador; o terceiro comentrio nos diz que vamos testar o zero antes de saltar e,
quarto comentrio nos diz que o programa vai repetir o lao.
Quando o que
(Lembre-se
do ,cdigo 3BH ele sabe

um programa
companhar as instrues de salto e de chamada de sub-rotina. Ao usar um rtulo no lugar de um
ndereo, poderemos escrever programas que nos faro sentido. O assembler atribuir corretamente
HLT e JMP contando o
o para onde voc est tentando saltar. Quando o assembler estiver

us programas
v

SOLUO


Quando voc escreve um programa, ajuda muito colocar os seus prprios comentrios sobre o
que cada instruo deve supostamente fazer. Estes comentrios ativaro sua prpria memria
quando voc voltar a ler o programa meses depois. O primeiro comentrio nos lembra que estamos
nicializando o contador com o decimal 3; o segundo comentrio nos lembra que es i
decrementa
finalmente, o
assembler converte o seu programa fonte em programa objeto, ele ignora tudo o
est aps o ponto e vrgula. Por qu? Porque o assembler foi escrito assim. O ponto e vrgula uma
maneira codificada de lembrar o computador de que comentrios pessoais se seguiro.
ASCII. 3BH o ASCII para o ponto e vrgula. Quando assembler encontra
que comentrios se seguiro.)
O uso de rtulos um outro auxlio usado com saltos e chamadas de sub-rotinas. Ao se escrever
em assembler, normalmente no se tem nenhuma idia dos endereos que devem
a
e
endereos aos nossos rtulos. Esta uma notvel caracterstica de um assembler, porque nos
proporciona uma grande economia de esforos.
Por exemplo, quando o assembler converte o programa anterior para a linguagem de mquina,
ele substitui JZ por CA (Tabela 11-1 de cdigos de operao) e END pelo e endereo da instruo
HLT. Da mesma forma, ele substituir JMP por C3 (cdigo de operao) REPEAT pelo endereo da
instruo DCR C. O assembler determina os endereos das instrues
nmero de bytes necessrios a todas as instrues e determinando onde as instrues HLT e DCR
C ficaro no programa final montado.
Tudo o que voc precisa se lembrar de que voc pode usar quaisquer rtulos que desejar para
as instrues de salto e de chamada de sub-rotina. O mesmo rtulo seguido de dois pontos
colocado na frente da instru
convertendo o seu programa para linguagem de mquina, os dois pontos indicaro que um rtulo
est presente.
Mais um comentrio sobre os rtulos. No SAP-2, os rtulos podem ter de um a seis caracteres,
onde o primeiro sempre uma letra. Os rtulos so normalmente palavras ou abreviaes, mas
nmeros podem ser includos. A seguir temos exemplos de rtulos vlidos:

REPEAT
DELAY
RDKBD
A34
B12C3

Os dois primeiros so palavras; o terceiro uma abreviao e os dois ltimos incluem nmeros.As
restries quanto ao comprimento (no mais de seis caracteres) e quanto ao caracter inicial ( deve
ser uma letra) so tpicas dos assemblers comerciais.
17
EXEMPLO 11-8

Mostre um programa para multiplicar os decimais 12 e 8;

SOLUO

Os equivalentes hexadecimais de 12 e 8 so 0CH e 08H. Vamos montar um lao que adiciona 12 ao
repetir o lao 8 vezes, o contedo do acumulador
qui est um programa em assembler que far a tarefa:
ro, ns zeramos o acumulador, A seguir,
tador inicializado com o decimal 8. Estas
s instrues constituem parte da inicializao que precede a entrada no lao.
A instru diminui o
vez que se


omo o decimal 96 equivalente ao hexadecimal 60, o acumulador conter 0110 0000.) Adies
petidas como as acima so equivalentes a uma multiplicao. Em outras palavras, adicionar 12 oito
ezes o mesmo que 12 x 8. A maioria dos microprocessadores no dispe de hardware para
eja isto:


acumulador em cada passagem. Se o computador
atingir 96 (decimal) no final.


A




Os comentrios contam quase toda a histria. Primei
olocamos o decimal 12 no registrador B. Ento, o con c
tr
o ADD B comea o lao adicionando o decimal 12 ao acumulador. A DCR C
contador para 7. Como o flag de zero est zerado, a JZ DONE ignorada na primeira
passa pelo lao de repetio, e o programa retoma para a instruo ADD B.
Voc deve ser capaz de saber o que ocorrer a seguir. A ADD B dentro do lao ser executada 8
vezes. Depois de 8 passagens pelo lao, o flag de zero ser setado; ento, a JZ DONE (DONE em
ingls significa feito) levar o programa para fora do lao na instruo HLT.
Como 12 adicionado 8 vezes,
12 + 12 + 12 + 12 + 12 + 12 + 12 + 12 = 96
(C
re
v
multiplicao, se limitando a um somador-subtrator como o do SAP-2. Assim, nos
microprocessadores comuns, voc deve usar alguma forma de multiplicao programada como uma
adio repetida, por exemplo.

EXEMPLO 11-9

Modifique o programa de multiplicao anterior usando uma JNZ em vez de uma JZ.

SOLUO

V

18


sto mais s I imples. Uma instruo JMP e um rtulo so eliminados. Enquanto o contador for maior
o, a JNZ obrigar o computador a voltar para REPEAT. Quando o contador atingir zero, o
passar por JNZ caindo em HLT.
XEMPLO 11-10
Faa uma montagem manual do programa anterior comeando no endereo 2000H.

SOLUO
eiras instrues fazem a inicializao que precede a multiplicao. Se mudssemos


EXEMPLO 11-11

Substitua
endereo F006H.

SOLUO

do que zer
rograma p


E

As trs prim
estes valores iniciais, poderamos realizar multiplicaes com outros nmeros.
a parte de multiplicao do programa anterior por uma sub-rotina que inicie no

19

Eis o que aconteceu. As instrues de inicializao dependem dos nmeros que sero multiplicados.
ograma.
Ao relocar o programa, ns mapeamos (convertemos) os endereos 2006H-200BH em F006H-
disto, a HLT foi transformada numa RET para podermos voltar ao programa original.
EXEMPLO 11.12

A sub-rotina de multiplicao do exemplo anterior usada no seguinte programa. Que faz ele?

MVI A, 00H
MVI B, 10H
MVI C,0EH
CALL FO06H
HLT
OLUO
para a sub-rotina do exemplo anterior. Quando a RET executada, o
a
ub-rotina. A sub-rotina de multiplicao localizada em F006H precisa de trs parmetros para
ente (A, B e C). Ns passamos estes parmetros sub-rotina de multiplicao
erando o acumulador, colocando o multiplicando em B e o multiplicador e C. Em outras palavras,
a
presentada chamada de passagem de parmetros por registrador.
mtica. A seguir, temos as instrues
s instrues do 8080/8085.
MA
ANAB
ignifica o AND do contedo do acumulador com o contedo do registrador B. Esta operao feita
A= 1100 1100 (11-1)
B = 1111 0001 (11-2)
Assim, eles no devem ser includos na sub-rotina. Ela dever conter apenas a parte de
multiplicao do pr

F00BH. Alm

S

O hexadecimal 10H equivalente ao decimal 16 e o 0EH, ao 14. As trs primeiras instrues zeram
o acumulador, carregam o decimal 16 no registrador B e inicializam o contador com decimal 14. A
CALL envia o computador
contedo do acumulador E0H, equivalente a 224 decimal.
A propsito, um parmetro um tipo de dado que deve ser convenientemente tratado por um
s
funcionar corretam
z
ns fazemos A = 00H, B = 10H e C= 0EH. A passagem de dados para uma sub-rotina na form
a

11-6 INSTRUES LGICAS

Um microprocessador pode fazer lgica tanto como arit
lgicas do SAP-2, que constituem um subconjunto da

C

CMA significa complementar o acumulador. A execuo de uma CMA inverte ou nega cada um
dos bits do acumulador produzindo o complemento de 1.

ANA

ANA significa fazer a operao lgica AND no acumulador (AND Accumulator) juntamente com o
contedo do registrador designado junto com a instruo. O resultado armazenado no acumulador.
Por exemplo,


s
bit a bit. Por exemplo, suponha que os dois registradores contenham

e

A execuo de ANA resulta em

20
A= 1100 0000
ANA: ANA B e ANA C. A Tabela 11-1 mostra os
digos de operao.

Fig. 11-6 As instrues lgicas so feitas sobre pares de bit5.
RA

ORA o mnemnico de fazer a operao lgica OR no acumulador (OR Accumulator)
11-2,
A= 1111 1101

XRA

XRA significa fazer a operao lgica XOR Accumulator) juntamente com o
registrador designado. O SAP-2 XRA B e XRA C em seu conjunto de
strues. Para os contedos dados pela es 11-1 e 11-2, a execuo de XRA B fornece
A= 0101 1110

execuo de ANI C7H far o AND de
0101 1110 com 1100 0111
ORI

Observe que a operao lgica AND feita sobre pares de bits como se mostra na Fig.11-6. A
7

com B
7
, A
6
com B6. A
5
com B
5
e assim por diante. O resultado armazenado no acumulador .
No SAP-2, temos disponveis duas instrues
c


O

juntamente com o registrador designado. As duas instrues ORA do SAP-2 so ORA B e ORA C.
Por exemplo, se os contedos dos registradores A e B forem os dados pelas equaes 11-1 e
ento a execuo de ORA B dar

XOR no acumulador(
apresenta as instrues
s equa in

A= 0011 1101

ANI

O SAP-2 tambm apresenta instrues lgicas imediatas. ANI significa AND imdiato (AND
Immediate). Ela manda o computador fazer a operao AND entre o contedo do acumulador e o
byte que sucede imediatamente o cdigo de operao. Por exemplo, se

a


para produzir o novo contedo do acumulador
A= 0100 0110


RI o mnemnico para OR imediato (OR Immediate). O computador faz um OR entre o
ontedo do acumulador e o byte que sucede o cdigo de operao da instruo. Se
execuo de ORI 5AH far o OR de
O
c

A= 0011 1000

a
21

0011 1000 com 0101 1010
roduzindo um novo contedo no acumulador de

A= 0111 1010
XRI
Rl significa XOR imediato (XOR Immediate). Se
execuo de XRl D4H far o exclusive OR de

0001 1100 com 1101 0100

1-7 OUTRAS INSTRUES

Esta seco mostra as instrues restantes do conjunto de instrues do SAP-2. Como estas
es no se encaixam em nenhum grupo em particular, elas foram reunidas aqui formando um
rupo parte.
OP


p


X

0001 1100

a
para produzir

A= 1100 1000

1

instru
g

N
NOP significa no operar. Durante a execuo de uma NOP, todos os estados T no fazem
os registradores durante uma NOP.
A instruo NOP usada para perder tempo. Precisa-se de quatro estados T para buscar e
executar a instruo NOP. Repetin ro de vezes, poderemos tardar o
o; isto til em operaes de temporizao. Por exemplo, se colocarmos uma NOP
entro de um lao que ser executado 100 vezes, ns criaremos um retardo de tempo de 400
estados T.

LT
Ns j usamos esta instruo. HLT significa parar (halt). Ela encerra o processamento dos dados.
uo para dar entrada a dados
IN byte
UT significa sair (output). Quando esta instruo usada, o contedo do acumulador
arregado na porta de sada indicada. O seu formato
nada. Portanto, no ocorre nenhuma alterao n

do um NOP um certo nme
processament
d
H


IN o mnemnico para entrar (input). Ela manda o computador transferir dados de uma porta
designada para o acumulador. Como h duas portas, voc ter de indicar qual est sendo usada. O
formato da instr


Por exemplo,

IN 02H

significa transferir dados da porta 2 para o acumulador.

OUT

O
c
22

OUT byte

Por exemplo, como h duas portas numeradas 3 e 4 (Fig. 11-2), voc ter de especificar qual est
endo usada. Seja

OUT 03H
sta instruo ir transferir o contedo do acumulador para a porta 3.

AL
s

E
R

RAL o mnemnico para rotacionar o acumulador para a esquerda (rotate the accumulator to
sta instruo deslocar todos os bits do acumulador para a esquerda alm de mover o bit mais
ignificativo (MSB) para a posio do bit menos significativo (LSB). Ver a Fig. 11- 7a. A ttulo de
A= 1011 0100

execuo de RAL dar

omo voc pode ver, todos os bits se deslocaram para a esquerda e o mais significativo foi para a
posio menos significativa.
: (a) RAL;(b) RAR.
RAR
r o acumulador para a direita (rotate accumulator right). Desta vez, os bits
do acumulador se deslocam para a direita ignificativo (LSB) vai para a posio do bit
mais significativo (MSB). Ver Fig. 11.7b. Se
a execuo de uma

EXEMPLO 11-13
Os bits de um byte so numer
um byte atravs da porta 2 e or 1, o programa carrega no
cumulador um Y (yes = sim) em cdigo ASCll. Caso contrrio, o programa carrega um N(no)
no acumulador. A resposta sim ou no deve ser enviada para a porta 3 de sada.
left). E
s
exemplo, suponha que o contedo do acumulador seja

A
A= 0110 1001
C

(a) (b)

Fig. 11-7 Instrues de rotao


RAR significa rotaciona
e o bit menos s
A= 1011 0100

RAR dar
A= 0101 1010



dos de 7 a 0 (MSB a LSB). Mostre um programa que d entrada a a
determine se o bit 0 um 1 ou um 0. Se f
a
ASCll

SOLUO

23
A IN 02H transfere o contedo da porta 2 para o acumulador dando

A= A A A A A A A
7 6 5 4 3 2 1

ato da ANI 01H


1
teremos


Se A
0
(o ASCII de
Y) no acumulador. Se ASCII
de N no acumulador .
A OUT 03H carrega a resposta (Y ou N em ASCII) na porta 3. O display hexadecimal exibir,
EXEMPLO 11-14

lela na porta 3, ns queremos uma sada serial na porta 4. Modifique
programa anterior para que ele converta a resposta (59H ou 4EH) numa sada serial no bit 0 da
porta 4.
da forma paralela para a forma serial, o programa envia primeiro o bit A
0
, depois o A
1
,
A
2
e assim por diante.


O byte imedi
0000 0001
Este byte chamado de mscara porque seus 0s iro mascarar ou eliminar os bits em
correspondentes no acumulador. Em outras palavras, depois da execuo de ANI 01H
A= 0000 000A
0

for 1, a JNZ YES produzir um salto para a MVI A,59H. Isto deposita um 59H
A
0
for 0, o programa seguir direto para a MVI A, 4EH que carregar o

portanto, a resposta: 59H ou 4EH.

Ao invs de uma sada para
o

SOLUO

Ao converter
em seguida o
24
EXEMPLO 11-15

Handshaking (aperto de mo) uma tcnica de interao entre uma UCP e um dispositivo
perifrico e que ocorre durante uma transferncia E/S de dados.
No SAP-2, o handshaking ocorre da seguinte forma. Depois de voc dar entrada a dois dgitos (1
byte) no codificador hexadecimal da Fig. 11-2, o dado carregado na porta 1 e, ao mesmo tempo,
um bit alto de READY (pronto) enviado porta 2.
Antes de dar entrada a dados, a UCP testa o bit de READY na porta 2. Se READY estiver baixo,
a UCP esperar. Se READY estiver alto, a UCP carregar o dado na porta 1. Quando a transferncia
de dados estiver encerrada, a UCP enviar um sinal de ACKNOWLEDGE para o codificador
hexadecimal de teclado fazendo READY baixar de nvel.
Quando voc teclar um novo byte, o ciclo recomear com um novo dado indo para a porta 1 e
um novo READY em nvel alto indo para a porta 2.
A sequncia de handshaking no SAP-2

1. READY (bit 0, porta 2) vai para o nvel alto.
orta 4) vai para o nvel alto zerando o bit READY.
4. Zerar o bit ACKNOWLEDGE.
de handshaking, escreva um programa que d entrada a um byte de dados da
orta 1. Armazene o byte no registrador B.
H. Este lao continuar at que o READY fique e alto
dicando que h dados vlidos na porta 1.
Quando READY estiver alto, o programa passar pela JZ STATUS indo para a IN 01H. Isto far
a transferncia de um byte da porta 1 para o acumulador. A MOV enviar o byte para o registrador B.
A MVI A,80H setar o bit ACKNOWLEDGE (bit 7). A OUT 04H enviar este ACKNOWLEDGE, para
o codificador hexadecimal, onde o hardware interno zerar bit READY. Ento, o bit
ACKNOWLEDGE ser zerado em preparao para o prximo ciclo de entrada de dados.

11-8 RESUMO DO SAP-2

Esta seco resume os estados T, os flags e os modos de endereamento do SAP-2.

Estados T
O controlador-sequencializador do SAP-2 microprogramado com um ciclo varivel de mquina.
Isto significa que algumas instrues sero mais demoradas do que outras para serem executadas.

2. Dar entrada ao dado da porta 1 transferindo-o UCP.
3. O bit ACKNOWLEDGE (bit 7, p


Usando a tcnica
p


SOLUO


Se o bit READY estiver baixo, a ANI 01H ir zerar o contedo do acumulador. A JZ S STATUS,
ento, far o programa retroceder a IN 02
in
25
Como voc se lembra, a idia da microprogramao armazenar as rotinas de controle numa ROM
e acess-las na medida do necessrio.
A Tabela 11-3 mostra cada instruo e o nmero de estados T necessrios sua execuo.Por
exemplo, so necessrios quatro estados T para executar a instruo ADD B, sete para executar a
ANI byte, dezoito para executar a CALL e assim por diante. Em aplicaes que envolvem
temporizaes, importante o conhecimento dos estados T.
Observe que a instruo JM precisa de 10/7 estados T para ser executada. Isto indica 10 estados
T quando ocorre efetivamente o salto e apenas 7 quando o salto no chega a se realizar .A mesma
idia se aplica a outros tipos de saltos.

Flags (Bandeiras)

Como voc Sabe, algumas instrues tornam o acumulador negativo ou zero durante a sua
xecuo. Isto afeta os flags de sinal e de zero. A Fig. 11.8 mostra os circuito usados no SAP-2 para
.
Quando o contedo do acumulador negativo, o seu bit A um 1. Este bit de sinal alimenta a
orta AND inferior. Quando o contedo do acumulador zero, todos os bits so zero e a sada da
xecutadas.
btm-se isto rnicropro ando um bit para cada instruo. Dito de outra forma, na ROM de
it alto para no caso das instrues citadas e um bit baixo em no
Fig. 11-8 Setando os flags.
ss
e
setar os flags

p
porta XOR 1. Esta sada alimenta o AND superior. Quando o sinal de chaveamento
F
L for alto, os
flags sero atualizados para refletir as condies de zero e de sinal do acumulador. Isto significa que
Z
flag
ser alto quando o contedo do acumulador for zero e S
flag
ser alto quando o contedo do
acumulador for negativo.
Nem todas as instrues alteram os flags. Como se mostra na Tabela 11.3, as instrues que
atualizam os flags so ADD, ANA, ANI, DCR, ORA, ORI, SUB, XRA e XRI. Por que estas instrues
apenas? Porque o sinal
F
L da Fig.11-8 est alto apenas quando estas instrues so e
O gram
b

F
L
F
L
F
L
flags e julga se o salto deve ser executado ou no. Em caso afirmativo, a microrrotina prossegue e,
no caso negativo, a microrrotina abortada e o computador comea um novo cicIo de busca.
controle ns colocamos um
caso das demais instrues.

Saltos Condicionais

Como foi mencionado anteriormente, as instrues de salto condicional nece itam de 10
estados T quando o salto ocorre efetivamente e apenas sete no caso contrrio. Em poucas palavras
isto conseguido da forma que se explica a seguir. Durante o ciclo de execuo, o computador
levado ao endereo inicial da microrrotina de salto condicional. A microinstruo inicial analisa os
26


As instrues do SAP-2 acessam os dados de diversas formas. O operando especifica de que
forma o dado deve ser acessa

Modos de Endereamento
do. Por exemplo, as primeiras instrues discutidas foram
LDA endereo
STA endereo

Estas instrues exemplificam o endereamento direto porque o operando especifica onde o dado
pode ser encontrado.
O endereamento imediato diferente. Ao invs de fornecer o endereo do dado, ns damos o
prprio dado. Por exemplo,
MVI A,byte

acessa o dado que deve ser carregado no acumulador usando o byte que sucede imediatamente o
cdigo de operao na memria, A Tabela 11-3 mostra outras instrues imediatas.
Uma instruo como
MOV A,B

ilustra o uso de endereamento de registrador. Em vez de usar a memria, o dado a ser acessado
armazenado num registrador da UCP. O endereamento de registrador tem a vantagem da rapidez
porque menos estados T so necessrios para este tipo de instruo.
O endereamento implcito significa que a localizao do dado est contida no prprio cdigo de
operao da instruo. Por exemplo,
RAL


nos diz para rotacionar os bits do acumulador para a esquerda. O dado est no acumulador. Por
esta razo, nenhum operando necessrio no endereamento implcito.

TABELA 11-3. CONJUNTO DE INSTRUES DO SAP-2

27

Bytes

SAP-2, as suas
de cada
tm 2 bytes,
as CALL


LO 11-16
Cada instruo ocupa um certo nmero de bytes na memria. No caso do
instrues podem ter 1,2 ou 3 bytes de comprimento. A Tabela 11-3 mostra o comprimento
instruo. Como voc pode observar, as instrues ADD tm 1 byte, as instrues ANI
tm 3 bytes e assim por diante.

EXEMP

O SAP-2 tem uma freqncia de relgio de 1 MHz. Isto significa que cada estado T dura
1s.Quanto tempo necessrio para se executar a seguinte sub-rotina?

28
SOLUO

A inst
vezes.A dados pela


Sempre
De
em bytes:
EXEMPLO 11-17

ruo MVI executada uma vez para inicializar a contagem. A DCR executada 70
JNZ retrocede 69 vezes e no salta uma vez. Com o nmero de estados T
Tabela 11-3, pode-se calcular o tempo total de execuo da seguinte forma:
Como voc v, o tempo aproximado de execuo da sub-rotina 1 ms.
que a rotina acima for chamada, ela produzir um retardo de tempo de 1ms. H muitas
aplicaes onde os retardos de tempo so necessrios.
acordo com a Tabela 11-3, as instrues da sub-rotina acima tm os seguintes comprimentos

O comprimento total da sub-rotina 8. Como parte do software do SAP-2, a sub-rotina pode ser
montada e relocada nos endereos F010H a F017H. Daqui para frente, a execuo uma CALL
F010H produzir sempre um retardo de tempo de 1ms.

Qual o retardo de tempo produzido pela seguinte sub-rotina do SAP-2?

SOLUO

Esta sub-rotina tem dois laos, um dentro do outro. O lao interno consiste em DCR C e JNZ
LOOP2. Este lao interno produz um retardo de tempo de


29
Quando o contador chega a zero, o programa passa por cima da JNZ LOOP2
B decrementado e a JNZ LOOP1 manda o programa de volta a
segunda vez estamos em LOOP2. Como LOOP2 est dentro de
executado 10 vezes e o retardo total de tempo ser de 10 ms.
Aqui est o clculo completo do retardo obtido pela sub-rotina:
(LOOP o LAO em
portugus). O contador MVI C,47H.
Assim, pela LOOP1, LOOP2 ser

Esta sub-rotina do SAP-2 tem um comprimento em bytes de

2 + 2 + 1+ 3 + 1+ 3 + 1 = 13

que uma
Tro

conta interno
XEMP

Aqui est uma sub-rotina com trs laos encaixados um dentro do outro. Qual o retardo



Ela pode ser montada e armazenada nos endereos F020H a F02CH. De agora em diante, sempre
CALL F020H for executada, um retardo de aproximadamente 10 ms ser produzido.
cando a sua primeira instruo por
MVI B,64H
dor B ser inicializado com o decimal 100. Neste caso, o tempo escoado com o lao
LO 11-18


O
de aproximadamente 100 ms. Esta sub-rotina de 100 ms poder ser armazenada nos endereos
F030H a F03CH.

E

produzido por ela?

30
SOLUO

O lao LOOP3 ainda leva aproximadamente 1 ms para ser executado. O lao LOOP2 executa
ns pelo lao LOOP3, o que leva aproximadamente 100 ms para ser executado. O lao
OOP1 executa 10 passagens pelo lao LOOP2. Portanto, leva aproximadamente 1s para que se
ara
lao LOOP1 far 100 passagens pelo lao LOOP2, que, por sua vez, executar 100 passagens
pelo lao LOOP3. A sub-rotina resultante poder ser armazenada em F060H a F072H e produzir
m retardo de 10 s.
os



XEMPLO 11-19
Um semforo numa estrada mostra o verde durante 50 s, o amarelo durante 6 s e o vermelho
urante 30 s. Os bits 1, 2 e 3 da porta 4 so os sinais de acionamento do equipamento perifrico que
o semforo. Escreva um programa que produza os retardos de tempos de 50, 6 e
100 passage
L
execute a sub-rotina inteira.
Que temos ns? Uma sub-rotina de 1s. Ela ser armazenada nos endereos F040H a F052H.
Para conseguir um retardo de 1s, ns usaramos uma CALL F040H.
Alterando a instruo inicial p

MVI A,64H

o
u
A Tabela 11-4 resume os retardos programados em sub-rotina no SAP-2. Com elas poderem
produzir retardos de 1ms at 10 s.

TABELA 11-4. SUB-ROTINAS DO SAP-2
E

d
liga as lmpadas d
30s para o semforo.

SOLUO



31

Como as partes amarela, verde e vermelha so iguais, ns analisaremos apenas a parte verde
do programa. Ela comea com uma MVI A,32H, que coloca o decimal 50 no acumulador. A STA
SAVE guardar este valor na posio de memria chamada SAVE. A luz verde . ligada quando a
MVI A,02H executada e seguida de uma OUT 04H, que transfere o bit setado no acumulador para
a porta 4. Como esta porta comanda o semforo, a luz verde acende.
A CALL D1SEC produz um retardo de 1s. A LDA SAVE carrega o acumulado com o decimal 50.
Este valor decrementado para 49 quando a DCR A executada. Este valor guardado de volta na
posio SAVE. Ento a JNZ LOOPGR leva o programa de volta para CALL D1SEC para um novo
retardo de 1 s.
A CALL D1SEC executada 50 vezes mantendo, portanto, a luz verde ligada por 50 s. Ento o
programa passa pela JNZ LOOPGR chegando MVI A,06H. A parte amarela do programa
executada mantendo a luz amarela acesa durante 6 s. Finalmente, a parte vermelha o programa
executada mantendo a luz vermelha acesa durante 30 s. A JMP AGAIN repete todo o processo
novamente. Desta forma, o programa est controlando a temporizao das luzes verde, amarela e
vermelha.

EXEMPLO 11-20

O d mdio do teclado do piano tem uma frequncia de 261,63 Hz. O bit 5 da porta 4
conectado a um amplificador que aciona um alto-falante. Escreva um programa que envia um d
mdio para o alto-falante.

SOLUO

Para comear, o perodo do d mdio

32
s
Hz f
T 822 . 3
63 , 261
1 1
= = =
O que faremos enviar um sinal como o da Fig. 11-9 atravs da porta 4. Esta onda quadrada estar
em nvel alto durante 1.911 s, e em nvel baixo durante 1.911 s. O perodo total 3.822 s e a
freqncia 261,63 Hz. Como a onda quadrada e no senoidal, ela soar distorcida mas ser
reconhecida como um d mdio de fato.
Aqui est um programa que envia um d mdio para o alto-falante.


Fig. 11-9 Gerando uma nota d mdio.



A OUT 04H envia um bit (alto ou baixo, no importa) para o alto.falante. A MVI inicializa o contador
com o decimal 134. Ento vem o lao LOOP2, a DCR e a JNZ, que produzem um retardo de
1.866s . Ento o programa passa para a CMA que complementa todos os bits do acumulador. As
duas NOPs acrescentam 8 s ao retardo. A JMP LOOP1 faz o programa voltar ao incio. Quando a
OUT 04H executada, o bit 5 (agora complementado) enviado ao alto-falante, que passa ao
estado oposto. O tempo total para cada ciclo de 3.824 s, o que est ,bem prximo do d mdio.
Aqui est o clculo do tempo total:

Este o tempo de um semiperodo. O ciclo total de 3.824 s

EXEMPLO 11.21

Os dados seriados so chamados algumas vezes de fluxo de dados seriais, porque os bits fluem
um atrs do outro. Na Fig. 11.10, um fluxo de dados seriais est chegando ao bit 7 da porta 2
33
numa velocidade de aproximadamente 600 bits por segundo. Escreva um programa que d
entrada a um caracter de 8 bits a partir de um fluxo de dados seriais e o armazena na posio
2100H.

SOLUO

Como chegam 600 bits por segundo, o perodo de cada um

s
Hz
667 . 1
600
1
=

A idia receber um bit da porta 2, rotacionar o acumulador para a direita, esperar 1.600 s,
receber o prximo bit, rotacionar o acumulador para a direita e assim por diante at que todos os
bits tenham chegado .
Aqui est um programa que executar a tarefa:




34
Fig. 11-10

A primeira instruo zera o registrador B. A segunda instruo carrega o decimal 7 no contador
C. A IN 02H traz o dado da porta 2. A ANI com a sua mscara isola o bit 7 porque este o bit
SERIAL IN da porta 2. A instruo ORA B no faz nada desta vez porque B est cheio de 0s.A
RAR move os bits do acumulador para a direita. A MOV B,A guarda o contedo do acumulador no
registrador B.
A MVI A,73H inicializa o acumulador com o decimal 115. A seguir tem-se um lao de espera,
DCR A e JNZ BIT verifica se C zero. A seguir, o programa volta para a IN 02H, para obter o
prximo bit do fluxo serial de dados. A ANI com sua mscara isola o bit 7 ,que por sua vez passa
por uma operao lgica OR com o contedo do registrador B. Esta operao combina o bit
anterior com o recm-chegado. Depois de uma nova RAR, os dois bits so armazenados no
registrador B. Ento, vem um novo retardo de 1.600 s.
O programa continua a se repetir dentro do lao e, em cada vez, um novo bit obtido do fluxo
serial de dados. Depois de 7 bits terem sido recebidos, o programa passar pela instruo JNZ BIT
sem efetuar o salto.
As quatro ltimas instrues fazem o seguinte. A IN 02H l o oitavo bit. A ANI isola o bit 7. A
ORA combina este bit com os outros sete presentes no registrador B. Neste momento, todos os
bits recebidos esto no acumulador. A STA 2100H armazena, ento, o byte na posio 2100H.
Um exemplo concreto ajudar. Suponha que o caracter que est sendo recebido seja o W, cujo
cdigo em ASCII igual a 57H. O LSB (bit menos significativo) chega primeiro e o MSB (bit mais
significativo), por ltimo. A seguir, temos os contedos do registrador B depois de cada execuo
da ORA B:

35
A= 1000 0000 (Primeira passagem pelo lao )
A= 1100 0000 (Segunda passagem)
A= 1110 0000 (Terceira passagem)
A= 0111 0000 (Quarta passagem)
A= 1011 1000 (Quinta passagem)
A= 0101 1100 (Sexta passagem)
A= 1010 1110 (Stima passagem)
A= 0101 0111 (Contedo final)

A propsito, o cdigo ASCII necessita de apenas 7 bits;o oitavo bit (A
7
) poder ser zerado ou
usado como um bit de paridade.


GLOSSRIO

Comentrio: Notas pessoais num programa em linguagem de montagem que no s montadas.
Elas ajudam o programador a se lembrar do que faz o programa numa data posterior.
Endereamento de registrador: Endereamento no qual o dado est armazenado num dos
registradores a UCP.
Endereamento direto: Endereamento no qual a instruo contm o endereo do dado com o
qual se vai operar.
Endereamento imediato: Endereamento no qual o dado com o qual se vai operar o byte que
segue o cdigo de operao na instruo.
Endereamento implcito: Endereamento no qual a posio do dado est contida no
mnemnico.
Flag (bandeira): Um flip-flop que armazena uma condio varivel durante uma execuo de
programa .
Handashaking (aperto de mo ): Interao entre uma UCP e um dispositivo perifrico durante uma
operao de E/S. No SAP-2, ela envolve os sinais READY e ACKNOWLEDGE.
Mscara: Um byte usado numa instruo ANI para descartar certos bits.
Montador : Um programa que converte um programa fonte num programa em linguagem de
mquina.
Montagem manual: Traduo manual de um programa fonte num programa em linguagem de
mquina o invs de se usar um computador .
Relocar: Deslocar um programa de uma parte da memria para outra. Ao se fazer isto, os
endereos das instrues de salto devem ser convertidos para novos endereos.
Rtulo: Nome dado a uma instruo num programa em linguagem de mquina. Para saltar para
esta instruo, voc pode usar o seu nome ao invs do seu endereo. O montador calcular o
endereo correto desta instruo (rtulo) e o usar no programa em linguagem de mquina.
Salto condicional: Um salto que ocorrer somente se certas condies estiverem satisfeitas.
Sub-rotina: Um programa armazenado nos endereos superiores da memria que pode ser usado
diversas vezes como parte de um programa principal.



EXERCICIOS DE FIXAO

Leia ccada um dos itens seguintes e preencha os claros com a palavra correta. As respostas
aparecem comeo da questo seguinte.

1. O controlador-sequencializador produz palavras de ______________ou microinstrues.
2. ( controle) Um flag um ______________ que armazena o valor de uma condio varivel
durante uma execuo de programa. O flag de sinal setado quando o contedo do acumulador
se torna negativo. O flag de ______________ setado quando o contedo do acumulador se torna
zero.
36
3. (flip-flop, zero) Quando se codifica a instruo LDA endereo e a instruo STA endereo o
byte do endereo armazenado num endereo inferior da memria e o byte ______________ num
endereo superior.
4. ( menos significativo, mais significativo) A instruo JMP altera a seqncia do programa
saltando para uma outra parte do programa.Com a instruo JM, o salto ser executado somente
se o flag de sinal estiver ______________. Com a instruo JNZ, o salto executado somente se
o flag de zero estiver ______________ .
5. (setado, zerado) Todas as sub-rotinas devem terminar com uma instruo ______________.
Isto leva o computador instruo que se segue CALL no programa principal .A instruo CALL
incondicional; ela envia o computador para o endereo inicial de uma ______________.
6. (RET, sub-rotina) Um montador lhe permite escrever programas na forma mnemnica.Ento,
o montador converte estes mnemnicos na forma de linguagem de ______________. O montador
ignora os ______________ que se seguem ao ponto e vrgula e atribui endereos aos rtulos. Os
rtulos so constitudos de at seis caracteres onde o primeiro deve ser uma ______________.
7. (mquina, comentrios, letra) A adio repetida uma maneira de se fazer ____________. A
multiplicao programada usada na maioria dos microprocessadores porque as suas ULAS
executam apenas adies e subtraes.
8. (multiplicao) Um parmetro um dado que passado para uma ______________.Quando
se chama uma sub-rotina, deve-se passar ______________ para que ela funcione
adequadamente.
9. (sub-rotina, parmetro) Uma ______________ usada para isolar um bit. Isto acontece
porque a ANI zera todos os outros bits.
10. (mscara) Handshaking uma interao entre uma ______________ e um dispositivo
perifrico. No SAP-2, o bit ______________ indica UCP se o dado de entrada vlido ou no.
Depois que o dado foi transferido para o computador, a UCP enviar um bit ______________ para
o dispositivo perifrico.
11. (UCP, READY, ACKNOWLEDGE) O computador SAP-2 microprogramado com um cicIo
de mquina ______________. Isto significa que algumas instrues demoraro mais do que outras
para serem executadas.
12. (varivel) Os tipos de endereamento vistos at agora so: direto, imediato, registrador e
implcito.


PROBLEMAS


11.1 Escreva um programa fonte que carrega o acumulador com o decimal 100, o
registrador B com o decimal 150 e o registrador C com o decimal 200.
11.2 Monte manualmente o programa fonte da questo anterior a partir do endereo
2000H.
11.3 Escreva um programa que armazena o decimal 50 de memria 4000H o
decimal 51 na 4001H e o decimal 52 na 4002H.
11.4 Monte manualmente o programa do problema anterior a partir da posio
2000H.
11.5 Escreva um programa fonte que adiciona o decimal 68 ao 34. A resposta deve
ser armazenada na posio 5000H.
11.6 Monte manualmente o programa anterior a partir da posio 2000H.
11.7 Aqui est um programa:

Rtulo Mnemnico
LOOP: MVI C,78H
DCR C
JNZ LOOP
HLT


37
a. Quantas vezes (decimal) a DCR C executada?
b. Quantas vezes o programa salta para LOOP?
c. Como pode ser alterado o programa para que o lao seja repetido 210 vezes?

11.8 Quais entre os seguintes so rtulos vlidos?

a. G1OO
h. UPDATE
c.. 5TIMES
d. 678RED
e. T
f. REPEAT

11.9 Escreva um programa que multiplique o decimal 25 com o 7 e armazena a
resposta em 2000H.(Use a sub-rotina de multiplicao localizada em F006H.)
11.10 Escreva um programa que d entrada a um byte atravs da porta 1 e
determina se o decimal equivalente par ou impar . Se o byte for par, o programa
dever enviar um ASCII P para porta 3; se for impar , um ASCII I.
11.11 Modifique o programa anterior para que ele envie a resposta na forma serial
para o bit 0 da porta 4.
11.12 Escreva um programa que d entrada a um byte atravs da porta 1 usando
handshaking. Armazene o byte no endereo 4000H.
11.13 Monte manualmente o programa anterior a partir do endereo 2000H.
11.14 Escreva uma sub-rotina que produza um retardo de 500 s, aproximadamente.
11.15 Monte manualmente o programa anterior a partir do endereo 2000H.
11.16 Escreva uma sub-rotina que produza um retardo de aproximadamente 35 ms
usando uma sub-rotina do SAP-2. Monte manualmente esta sub-rotina e localize-a
no endereo inicial E000H.
11.17 Escreva uma sub-rotina que produza um retardo de 50 ms. (Use uma sub-
rotina do do SAP-2.) Monte manualmente o programa a partir do endereo inicial
E100H.


11.18 Escreva uma sub-rotina que produza um retardo de 1 min. (Use CALL F060H.)
11.19 Monte manualmente a sub-rotina precedente a partir do endereo inicial
F080H.
11.20 O d em uma oitava superior ao d mdio tem uma frequncia de 523,25Hz.
Escreva um programa que envia esta nota ao bit 4 da porta 4.
11.21 Monte manualmente o programa anterior a partir do endereo 2000H.

38

Potrebbero piacerti anche