



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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
1 / 7
Esta página não é visível na pré-visualização
Não perca as partes importantes!
³ RBT þ Curso de Assembly þ Aula N§ 03 ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;
Por: Bruno Diego
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:
ÃÄÄÄÄÄÄ´ ÃÄ 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:
³ 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!):
³ 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! :) ?