Silício Reverso oicìliS ©
Assembly Intermediário
REFERÊNCIAS
(ver 1.1 de 13.03.03)

ARQUITETURA INTEL 8088 / 8086 / 80186 / 80286 / 80386 / 80486
Registradores de Uso Geral ... Registradores de Segmento
16 bits 32 bits          
AX EAX AH | AL Acumulador   CS Segmento de Código
BX EBX BH | BL Base   DS Segmento de Dados
CX ECX CH | CL Contador   SS Segmento de Pilha (Stack)
DX EDX DH | DL Dados   ES Segmento Extra
          FS Segmento Extra (acima de 386)
          GS Segmento Extra (acima de 386)

Uso mais comum dos Registradores de Uso Geral

  • EAX, AX, AH, AL: Chamado de registrador Acumulador.
    É usado para acessar portas de entrada/saída, operações aritméticas, chamada de interrupções, etc.
  • EBX, BX, BH, BL: Chamado de registrador Base.
    É usado como um ponteiro base para acessar a memória. Recebe alguns valores de retorno.
  • ECX, CX, CH, CL: Chamado de registrador Contador.
    É usado como contador de loop e para shifts. Recebe alguns valores de interrupções.
  • EDX, DX, DH, DL: Chamdo de registrador de Dados.
    É usado para acessar portas de entrada/saída, operações artiméticas e algumas chamadas de interrupção.

Uso mais comum dos Registradores de Segmento

  • CS: Contém o segmento de Código no qual o programa está rodando. Mudar seu valor pode pendurar o computador.
  • DS: Contém o segmento de Dados que o programa acessa. Mudar seu valor pode resultar em dados errados.
  • ES, FS, GS: Estes registrados de segmento extras estão disponíveis para endereçamento distante (far pointer) como memória de vídeo e outras.
  • SS: Contém o segmento de Pilha usado pelo programa. Algumas vezes tem o mesmo valor que DS. Mudar seu valor pode levar a resultados imprevisíveis, geralmente relacionados aos dados.


Registradores de Ponteiros
16 bits 32 bits  
SI ESI Índice de Origem (Source Index)
DI EDI Índice de Destino (Destination Index)
IP   Ponteiro de Instrução


Registradores de Pilha
16 bits 32 bits  
SP ESP Ponteiro da Pilha (Stack Pointer)
BP EBP Ponteiro da Base da Pilha (Base Pointer)

Uso mais comum dos Índices e Ponteiros

  • ES:EDI EDI DI: Registrador do Índice de Destino. É usado para cópia de strings, cópia e configuração de arrays de memória e para endereçamento distante (far pointer) com ES.
  • DS:ESI EDI SI: Registrador de Índice de Origem. É usado para cópia de strings de de arrays de memória.
  • SS:EBP EBP BP: Registrador ponteiro da Base da Pilha. Contém o endereço base da pilha.
  • SS:ESP ESP SP: Registrador ponteiro da Pilha. Contém o endereço do topo da pilha.
  • CS:EIP EIP IP: Ponteiro do Índice. Contém o deslocamento (offset) da próxima instrução. Pode ser apenas lido.


Registradores de Status - FLAGS
  11 10 F E D C B A 9 8 7 6 5 4 3 2 1 0  
  | | | | | | | | | | | | | | | | |
CF - Carry Flag
  | | | | | | | | | | | | | | | |
1
  | | | | | | | | | | | | | | |
PF - Flag de Paridade
  | | | | | | | | | | | | | |
0
  | | | | | | | | | | | | |
AF - Flag Auxiliar
  | | | | | | | | | | | |
0
  | | | | | | | | | | |
ZF - Zero Flag
  | | | | | | | | | |
SF - Flag de Sinal
  | | | | | | | | |
TF - Trap Flag (Single Step)
  | | | | | | | |
IF - Flag de Interrupção
  | | | | | | |
DF - Flag de Direção
  | | | | | |
OF - Flag de Overflow
  | | | | |
 
  | | | |
IOPL - Nível de Privilégio I/O (286+)
  | | |
NT - Nested Task Flag (286+)
  | |
0
  |
RF - Resume Flag (386+)
 
VM - Flag de Modo Virtual (386+)


Registradores de Status - Registradores Especiais (386+)
CR0 Registrador de Controle 0 DR0 Registrador de Debug 0
CR2 Registrador de Controle 2 DR1 Registrador de Debug 1
CR3 Registrador de Controle 3 DR2 Registrador de Debug 2
    DR3 Registrador de Debug 3
TR4 Registrador de Teste 4 DR6 Registrador de Debug 6
TR5 Registrador de Teste 5 DR7 Registrador de Debug 7
TR6 Registrador de Teste 6    
TR7 Registrador de Teste 7    


Registradores de Status - MSW (Machine Status Word - 286+)
  31 30-5 4 3 2 1 0  
  | | | | | |
PE - Protection Enable
  | | | | |
MP - Math Present
  | | | |
EM - Emulação
  | | |
TS - Task Switched
  | |
ET - Tipo de Extensão
  |
Reservado
 
PG - Paging

Bit 0 PE Protection Enable, troca o processador entre modo real e protegido
Bit 1 MP Math Present, controla o funcionamento da instrução WAIT
Bit 2 EM Emulation, indica quais funções do coprocessador devem ser emuladas
Bit 3 TS Task Switched, setado e interrogado pelo coprocessador em tarefas de switches e quando interpretando instruções do coprocessador
Bit 4 ET Extension Type, indica o tipo do coprocessador no sistema
Bits 5-30   Reservados
Bit 31 PG Paging, indica se o processador usa tabelas page para traduzir endereços lineares para endereços físicos


Override de Segmentos

As operações ES:, DS:, CS: e SS: são prefixos de "segment override". Por exemplo, o código operacional para ES: é 26. Dessa forma, para obter MOV ES:[DI],AL, procura-se o código operacional para MOV [DI],AL (8805) e precede-se o mesmo com 26 (268805), transformando-o em MOV ES:[DI],AL.


Registrador Segmento Default Overrides Válidos
BP SS DS, ES, CS
SI ou DI DS ES, SS, CS
Strings DI ES Nenhum
Strings SI DS ES, SS, CS

Registradores mal documentados

Existem registradores nos processadores 80386 e acima que não foram bem documentados pela Intel. Estes são divididos em registradores de controle, de debug, de teste e de segmentação no modo protegido. Ao que tudo indica, os registradores de controle, juntamente com os registradores de segmentação, são usados na programação em modo protegido.

Os registradores de teste foram tirados a partir do Pentium. Os registradores de controle são os CR0 a CR4, registradores de debug são os DR0 a DR7, os registradores de teste são os TR3 a TR7 e os registradores de segmentação no modo protegido são o GDTR (Global Descriptor Table Register), o IDTR (Interrupt Descriptor Table Register), o LDTR (Local DTR) e o TR.




| AAAA | Página Inicial | Mapa do Site | Novidades | Busca | Indique esta página | Mestre da Teia | Voltar |
| Localizador || @ Info NumaBoa > oicìliS > Assembly > Referências > Arquitetura Intel
Créditos: vovó Vicki

webdesign sobMedida by vickiSoft - /informatica/oiciliS/assembler/referencias/arquitetura.php (01.08.01) versão 1.1 de 04.01.04
Licença Creative Commons 1998-2006 Aldeia NumaBoa
Exceto onde especificamente declarado, todo material deste site é disponibilizado de acordo com a Licença Creative Commons.