Specifications

MICROPROCESSADORES
O MICROPROCESSADOR 8086
1
Luís Miguel Charrua Figueiredo 1 - 7 E.N.I.D.H.
Registo de flags
O registo de flags é um registo de 16 bits, dos quais apenas 9 bits contêm flags, e que são usados
para indicar várias situações durante a execução das instruções bem como relativas ao seu
resultado.
-- -- -- -- O D I T S Z -- A -- --PC
15 0
Figura 3 - Registo de flags do 8086.
Flag Nome Descrição
O Flag de Overflow
Qualquer resultado de uma operação aritmética sinalizada que exceda os limites da área destinada produz um
overflow OF=1
D Flag de Direcção É usada para indicar a direcção em que as instruções de strings são processadas em relação a SI e DI
I Flag de Interrupção Quando a 1, habilita as interrupções INT externas, a 0 desabilita as mesmas
T Trap Flag
Quando a 1, após a próxima instrução ocorrerá uma interrupção passo a passo, é colocada a 0 pela própria
interrupção
S Flag de Sinal É indicado se um número é positivo ou negativo.
Z Flag de Zero É colocado a 0 se o resultado de uma operação aritmética ou lógica for 0
A Flag de Carry Auxiliar
É utilizada pelas operações de ajuste decimal, reflecte o estado “vai um” entre os nibbles do byte inferior de um
resultado aritmético
P Flag de Paridade
Se o byte menos significativo do resultado de uma operação aritmética ou lógica apresentar um número par de
1’s, o bit é colocado a 1
C Flag de Carry
Vai variando o seu valor de acordo com o resultado das instruções executadas, usado maioritariamente para
resultados de operações aritméticas e de comparação.
Tabela 1 - Descrição das flags do 8086.
Organização da memória do 8086
O microprocessador 8086 tem um barramento de endereços de 20 bits, assim pode endereçar até
2
20
bytes de memória (1 Mbyte). No entanto o 8086 não consegue trabalhar directamente com
endereços maiores do que 2
16
(palavras de 16 bits) pelo que, à partida, o seu funcionamento
estaria limitado a apenas 64 Kbytes de memória.
Para resolver este problema, o 8086 utiliza a memória de forma segmentada (blocos de
64 Kbytes), e para poder trabalhar com a memória disponível usando apenas registos de 16 bits, o
8086 recorre aos registos de segmento.
Assim para aceder a um endereço individualmente, utiliza 2 registos de 16 bits, o primeiro indica a
base do segmento (valor divisível por 16), e o segundo indica o offset dentro do segmento, assim
são designados por endereços relativos ou deslocamentos relativos.