Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Arquitetura de Microprocessadores Intel 80x86: Registradores de Uso Geral, Notas de estudo de Eletrônica

Uma descrição detalhada dos registradores de uso geral da família de microprocessadores intel 80x86, incluindo ax, bx, cx, dx, si, di, cs, ds, es e ss, além de suas respectivas funções e utilizações.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 09/02/2008

bruno-diego-10
bruno-diego-10 🇧🇷

5 documentos

1 / 7

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸
³ RBT þ Curso de Assembly þ Aula N§ 03 ³
ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;
Por: Bruno Diego
ÕÍÍÍÍÍÍÍÍÍÍÍÍÍ͸
³ ASSEMBLY III ³
ÔÍÍÍÍÍÍÍÍÍÍÍÍÍ;
Comecemos a dar uma olhadela na arquitetura dos
microprocessadores da fam¡lia INTEL 80x86... Vamos aos
registradores!
Entenda os registradores como se fossem vari veis que o
microprocessador disponibiliza ao sistema. TODOS os registradores
0 0
8 8
0 0
8 7
0 0
8 4
t m 16 bits de tamanho e aqui vai a descri o deles:
ÚÄÄÄÄÄÄ¿
³ AX ³<ÄÄ¿
ÃÄÄÄÄÄÄ´ ³
³ BX ³<ÄÄ´
ÃÄÄÄÄÄÄ´ ÃÄ Registradores de uso geral
³ CX ³<ÄÄ´
ÃÄÄÄÄÄÄ´ ³
³ DX ³<ÄÄÙ
ÀÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄ¿
³ SI ³<ÄÄÄÄ ¡ndice FONTE (Source Index)
ÃÄÄÄÄÄÄ´
³ DI ³<ÄÄÄÄ ¡ndice DESTINO (Destination Index)
ÀÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄ¿
³ SP ³<ÄÄÄÄ Apontador de pilha (Stack Pointer)
ÃÄÄÄÄÄÄ´
³ BP ³<ÄÄÄÄ Apontador de base (Base Pointer)
ÀÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄ¿
³ CS ³<ÄÄÄÄ Segmento de C¢gido (Code Segment)
ÃÄÄÄÄÄÄ´
³ DS ³<ÄÄÄÄ Segmento de Dados (Data Segment)
ÃÄÄÄÄÄÄ´
³ ES ³<ÄÄÄÄ Segmento de dados Extra (Extra data Segment)
ÃÄÄÄÄÄÄ´
³ SS ³<ÄÄÄÄ Segmento de Pilha (Stack Segment)
ÀÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄ¿
0 0
8 7
0 0
8 4
³ IP ³<ÄÄÄÄ Apontador de instru o (Instruction Pointer)
ÀÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄ¿
³Flags ³<ÄÄÄÄ Sinalizadores
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Arquitetura de Microprocessadores Intel 80x86: Registradores de Uso Geral e outras Notas de estudo em PDF para Eletrônica, somente na Docsity!

ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸

³ RBT þ Curso de Assembly þ Aula N§ 03 ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;

Por: Bruno Diego

ÕÍÍÍÍÍÍÍÍÍÍÍÍÍ͸

³ ASSEMBLY III ³

ÔÍÍÍÍÍÍÍÍÍÍÍÍÍ;

Comecemos a dar uma olhadela na arquitetura dos microprocessadores da fam¡lia INTEL 80x86... Vamos aos registradores!

Entenda os registradores como se fossem vari veis que o microprocessador disponibiliza ao sistema. TODOS os registradores 0 0 8 8

0 0 8 7

0 0 t m 16 bits de tamanho e aqui vai a descri (^) 8 4o deles:

ÚÄÄÄÄÄÄ¿

³ AX ³<ÄÄ¿

ÃÄÄÄÄÄÄ´ ³

³ BX ³<ÄÄ´

ÃÄÄÄÄÄÄ´ ÃÄ Registradores de uso geral ³ CX ³<ÄÄ´ ÃÄÄÄÄÄÄ´ ³ ³ DX ³<ÄÄÙ ÀÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄ¿ ³ SI ³<ÄÄÄÄ ¡ndice FONTE (Source Index) ÃÄÄÄÄÄÄ´ ³ DI ³<ÄÄÄÄ ¡ndice DESTINO (Destination Index) ÀÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄ¿ ³ SP ³<ÄÄÄÄ Apontador de pilha (Stack Pointer) ÃÄÄÄÄÄÄ´ ³ BP ³<ÄÄÄÄ Apontador de base (Base Pointer) ÀÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄ¿ ³ CS ³<ÄÄÄÄ Segmento de C¢gido (Code Segment) ÃÄÄÄÄÄÄ´ ³ DS ³<ÄÄÄÄ Segmento de Dados (Data Segment) ÃÄÄÄÄÄÄ´ ³ ES ³<ÄÄÄÄ Segmento de dados Extra (Extra data Segment) ÃÄÄÄÄÄÄ´ ³ SS ³<ÄÄÄÄ Segmento de Pilha (Stack Segment) ÀÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄ¿ 0 0 8 7

0 0 ³ IP ³<ÄÄÄÄ Apontador de instru (^) 8 4o (Instruction Pointer) ÀÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄ¿ ³Flags ³<ÄÄÄÄ Sinalizadores

ÀÄÄÄÄÄÄÙ

0 0 8 7

0 0 Por enquanto vamos nos deter na descri (^) 8 4o dos registradores uso geral... Eles podem ser subdivididos em dois registradore de oito bits cada:

AX (16 bits) BX (16 bits) ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ³ AH ³ AL ³ ³ BH ³ BL ³ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ 15 8 7 0 15 8 7 0

CX (16 bits) DX (16 bits) ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ³ CH ³ CL ³ ³ DH ³ DL ³ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ 15 8 7 0 15 8 7 0

0 0 AH (^) 8 2o byte mais significativo do registrador AX, enquanto que 0 0 AL (^) 8 2 o menos significativo. Se alterarmos o conte£do de AL, estaremos alterando o byte menos significativo de AX ao mesmo 0 0 tempo... N8 4 o existem registradores de oito bits em separado... 0 0 tudo (^) 8 2 uma coisa s¢. Portanto, ao manipularmos AH, estaremos manipulando AX ao mesmo tempo!

O nome de cada registrador tem o seu sentido de ser... "A" de 0 0 AX quer dizer que este registrador 0 0 (^) 8 2 um "acumulador" (usado por

8 7

0 0 default em algumas opera (^) 9 4es matematicas!), por exemplo...

AX -> Acumulador BX -> Base CX -> Contador DX -> Dados

O "X" de AX significa "eXtended". "H" de AH significa "High byte".

0 0 8 7

0 0 9 4

0 0 Embora estes registradores possam ser usados sem restri 0 0 es,8 2 8 7

0 0 interessante atribuir uma fun (^) 8 4o para cada um deles nos nossos programas sempre que poss¡vel... Isto facilita a leitura do c¢digo e nos educa a seguirmos uma linha de racioc¡nio mais concisa... 0 0 8 8

0 0 8 4

0 0 Mas, se for de sua prefer ncia n o seguir qualquer padr8 4 o no uso 0 0 8 4

0 0 desses registradores, n o se preocupe... n8 4 o haver qualquer desvantagem nisso (Well... depende do c¢digo, as vezes somos obrigados a usar determinado registrador!).

0 0 Alguns pontos importantes quanto a esses nomes ser 0 0 8 4 o observados 8 7

0 0 no decorrer do curso... Por exemplo, certas instru 0 0 (^) 9 4es usam AX (ou AL, ou AH) e somente ele, n8 4 o permitindo o uso de nenhum outro registrador... Outras, usam CX para contar, etc... essas

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ MOV AL,ES:[1D4Ah] ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Aqui o valor de ES ser usado.

0 0 O registrador IP (Instruction Pointer) 0 0 (^) 8 2o offset do segmento de 8 2

0 0 8 7

0 0 c¢digo que cont 0 0 m a pr¢xima instru (^) 8 4o a ser execuatda. Este

8 4

0 0 8 2

0 0 8 7

0 0 8 4

0 0 registrador n o acess¡vel por qualquer instru o (pelo menos n8 4 o 0 0 pelas documentadas pela Intel)... (^) 8 2 de uso interno do microprocessador. No entanto existem alguns macetes para 0 0 8 7

0 0 conseguirmos obter o seu conte£do (o que na maioria das aplica 0 0 (^) 9 4es

8 4

0 0 8 2

0 0 n o necessario... Para que conhecer o endere8 7 o da pr¢xima 0 0 8 7

0 0 instru (^) 8 4o se ela var ser executada de qualquer jeito?).

0 0 O registrador SP (^) 8 2o offset do segmento SS (segmento de pilha) onde o pr¢ximo dado vai ser empilhado. A pilha serve para armazenar dados que posteriormente podem ser recuperados sem que tenhamos que 0 0 8 2

0 0 usar um dos registradores para esse fim. Tamb m (^) 8 2usada para 0 0 armazenar o endere8 7 o de retorno das sub-rotinas. A pilha "cresce" 0 0

8 2

0 0 de cima para baixo, isto 0 0 , SP (^) 8 2decrementado cada vez que um novo

8 2

0 0 dado colocado na pilha. Note tamb8 2 m que existe um registrador de segmento exclusivo para a pilha... SP sempre est relacionado a esse segmento (SS), como foi dito antes.

Para ilustrar o funcionamento da pilha, no gr fico abaixo 0 0 simularemos o empilhamento do conte£do do registrador AX atrav 0 0 8 2 s da

8 7

0 0 instru (^) 8 4o:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ PUSH AX ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ AX = A527h (Valor em AX) ³ ³ ³ ³ ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ³ ³ ³ ????h ³<ÄÄÄÄÄ SP = n ³ A527h ³ ³ ³ ÃÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ³<ÄÄÄÄÄ SP = n - 1 ³ ³ ÀÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙ ³

³ (antes de PUSH AX) (depois de PUSH AX) ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

0 0 Observe que SP sempre aponta para um espa8 7 o vago na pilha.

0 0 8 2

0 0 8 7

0 0 9 4

0 0 Na realidade SP decrementado de duas posi es ao inv8 2 s de apenas uma... mas, esse detalhe deixo para mais tarde.

O registrador BP pode ser usado como apontador para a base da pilha (j que, por default, est relacionado a SS) ou como um registrador de uso geral... depende do seu programa. Veremos isso detalhadamente mais tarde.

Um dos registradores mais importantes de qualquer 0 0 8 2

0 0 8 7

0 0 microprocessador o de "Flags". Eis uma descri (^) 8 4o dos bits deste 0 0 8 7

0 0 8 4

0 0 registrador (a descri o abaixo aplica-se ao 8086. Normalmente n8 4 o acessamos diretamente o registrador de flags - embora possamos 0 0 8 8

0 0 8 4

0 0 8 2

0 0 faz -lo - por isso n o conveniente assumirmos que os bits est8 4 o sempre no mesmo lugar para qualquer microprocessador da fam¡lia 80x86!):

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ ÚÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ ³

³ ³ ³ ³ ³ ³O³D³I³T³S³Z³ ³A³ ³P³ ³C³ ³

³ ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ ³

³ C = Carry ³ ³ P = Parity ³ ³ A = Auxiliar Carry ³ ³ Z = Zero ³ ³ S = Signal ³ ³ T = Trap ³ ³ I = Interrupt Enable Flag ³ ³ D = Direction ³ ³ O = OverFlow ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

þ Carry:

0 0 Esse flag (^) 8 2setado sempre quando houver "vai um" depois de 0 0 8 7

0 0 8 4

0 0 8 7

0 0 uma adi o ou quando h 0 0 BORROW depois de uma subtra (^) 8 4o. Ou 8 7

0 0 quando, numa opera (^) 8 4o de deslocamento de bits, o bit mais ao extremo for deslocado para fora do dado (suponha um byte... se 0 0 8 7

0 0 todos os bits forem deslocados em uma posi (^) 8 4o para a direita, o

o resultado cabe em 17 bits. Neste exemplo, o bit de carry 0 0 tamb8 2 m ser setado pois houve "vai um" do bit 15 para o 0 0 inexistente bit 16, mas n8 4 o confunda o flag de overflow com o carry!

0 0 Quando aos demais bits, n8 4 o se pode prever seus estados l¢gicos (1 ou 0).

0 0 8 7

0 0 8 7

0 0 Na pr¢xima mensagem come (^) 0 0aremos a ver algumas instru (^) 9 4es do microprocessador 8086. Ainda n 0 0 8 4 o escreveremos nenhum programa, a

8 7

0 0 8 4

0 0 inten o (^) 8 2 familiariz -lo com a arquitetura do microprocessador 0 0 8 7

0 0 antes de come 0 0 armos a colocar a m8 4 o na massa... tenha um pouco de paci8 8 ncia! :) ?