Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Tipos de dados
  2. Sinalização

Por ser um processador de 16-bits, o tamanho máximo de dados processados, em registrador ou memória, possui a mesmo quantidade em bits, 16-bits, exceto pelas instruções de divisão e multiplicação que utilizam dois registradores de 16-bits como resultado.

O tamanho dos registradores e seus respectivos tamanho em bits podem ser revistos na tabela abaixo:

Tab. 1: Registradores de uso geral
8-bits 8-bits 16-Bits
AH AL AX
BH BL BX
CH CL CX
DH DL DX

Para o 8086, e outros processadores, um valor 16-bits é chamado de word. Um valor de 32-bits é chamado de doubleword.

Para trabalhar com nibbles, valores de 4-bits, é necessário utilizar instrução de deslocamento, rotação e outras instruções do mesmo grupo.

Abaixo uma representação simples dos tamanhos de dados mencionados acima para valores em memória. Os valores separados por (...), representam as suas respectivas posições de bits.

Byte
Byte 0
7...0
Word
Byte 1 Byte 0
7...0 15...8
Doubleword
Word 1 Word 0
15...0 31...25

Como o barramento de endereços para acessar dados na memória do 8086 é de 20-bits, os endereços de memória formados com os registradores de segmento, indexadores e ponteiros são armazenados como doublewords.

Tab.2: Endereço
SEGMENTO : OFFSET
Word 0 Word 1

O 8086 possui algumas instruções que trabalham com valores 32-Bits, porém, essas apenas armazenam dados. Operações aritméticas em 32-bits, por exemplo, devem ser realizadas por meio de words.

Quando operações 8-bits são realizadas, o byte mais significativo de um dos registradores Ax~DX não são afetados, exceto quando instruções aritméticas são utilizados.

As operações em 32-Bits estão disponíveis apenas nos processadores 80386, 80486 ou superiores.

Os valores 16-bits ou words, em memória, são armazenados utilizando o forma de armazenamento Little Endian. Esse forma será visto mais adiante.

Assim como em vários processadores, em alguns momentos precisamos manipular dados sinalizados nos registradores AX~DX ou memória. O bit 7 ou bit 15 são os locais onde o bit que indica a sinalização é armazenado.

Tab. 3: Byte
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 - - - - - - -
Tab. 4: Word
Bit 15 Bit 14 Bit 13 ... Bit 3 Bit 2 Bit 1 Bit 0
1 - - ... - - - -
Ex:
$80 / -128 / 10000000b
$7F / 127 / 01111111b
Onde:
b: binário
$: hexadecimal
-: operador unário

Um valor armazenado no registrador AL que possui o bit 7 com valor 1, será visto por ser visto como um valor negativo. Quando o bit 7 possuir o valor 0, será visto como um valor positivo. Essa situação pode ser checada pela flag Sign.

Os valores sinalizados são utilizados para recuperar valores de memória ou desvio de fluxo de execução por intermédio dos modos de endereçamento.

As instruções de rotação e deslocamento ou semelhantes, manipulam o bit mais significativo de bytes e words contidos em registradores e memória.

Os registradores de segmentos não utilizam o conceito de sinalização. Como são endereços de memória, são sempre vistos como positivos. Os offsets são sinalizados.

  1. 18/02/2025 - revisão 1 - ajustes pontuais
  2. 29/10/2024 - versão inicial