3630 registros
0 hoje
14 nesta semana
4 neste mês|
Sex 19 Jun 2009 11:01 |
|
|
Registradores de uso geral
Os usos mais comuns dos Registradores de Uso Geral são: 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: Chamado de registrador de Dados. É usado para acessar portas de entrada/saída, operações artiméticas e algumas chamadas de interrupção. Registradores de segmento
Os usos mais comuns dos Registradores de Segmento são: 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 e de pilha
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 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 | | | | | | | | | | | | | | | | | |--- CF Carry Flag | | | | | | | | | | | | | | | | |------ 1 | | | | | | | | | | | | | | | |--------- PF Flag de Paridade | | | | | | | | | | | | | | |------------ 0 | | | | | | | | | | | | | |--------------- AF Flag Auxiliar | | | | | | | | | | | | |------------------ 0 | | | | | | | | | | | |--------------------- ZF Flag Zero | | | | | | | | | | |------------------------ 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 (especiais)
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 Paginação 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 a 30 - Reservados Bit 31 - PG (Paging): indica se o processador usa tabelas page para traduzir endereços lineares em endereços físicos Override de segmentosAs operações ES:, DS:, CS: e SS: são prefixos de "segment override". Por exemplo, o código operacional para ES: é 26. Desta 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.
Registradores mal documentadosExistem 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Última atualização ( Sex, 19.06.2009 14:27 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||