| 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. |
|