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

Introdução ao Assembly: Memória e Endereçamento, Notas de estudo de Eletrônica

Aula 1 do curso de assembly por bruno diego da silva. Aprenda sobre a organização da memória em segmentos e o cálculo de endereços físicos.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 09/02/2008

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

5 documentos

Pré-visualização parcial do texto

Baixe Introdução ao Assembly: Memória e Endereçamento e outras Notas de estudo em PDF para Eletrônica, somente na Docsity! ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ þ Curso de Assembly þ Aula N° 01 ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Por: Bruno Diego da Silva ÕÍÍÍÍÍÍÍÍÍÍÍ͸ ³ ASSEMBLY I ³ ÔÍÍÍÍÍÍÍÍÍÍÍ; 0 0 8 4 A linguagem ASSEMBLY (e n o assemblER!) d medo em muita gente! 0 0 8 4 0 0 8 4S¢ n o sei porque! As liguagens ditas de "alto n¡vel" s o MUITO mais complexas que o assembly! O programador assembly tem que saber, antes de mais nada, como est organizada a mem¢ria da m quina 0 0 8 2em que trabalha, a disponibilidade de rotinas pr -definidas na ROM do micro (que facilita muito a vida de vez em quando!) e os demais recursos que a m quina oferece. 0 0 8 7 0 0 8 4 Uma grande desvantagem do assembly com rela o as outras 0 0 8 2 0 0 8 4linguagens que n o existe tipagem de dados como, por exemplo, ponto-flutuante... O programador ter que desenvolver as suas 0 0 8 7pr¢prias rotinas ou lan ar mao do co-processador matem tico (o TURBO ASSEMBLER, da Borland, fornece uma maneira de emular o 0 0 8 4 0 0 8 7 0 0 9 4co-processador). N o existem fun es de entrada-sa¡da como PRINT do 0 0 8 4BASIC ou o Write() do PASCAL... N o existem rotinas que imprimam 0 0 8 2 0 0 8 4dados num ricos ou strings na tela... Enfim... n o existe nada de £til! (Ser ?! hehehe) 0 0 8 4 0 0 8 2 0 0 8 8 Pra que serve o assembly ent o? A resposta : Para que voc possa desenvolver as suas pr¢prias rotinas, sem ter que topar com 0 0 8 7 0 0 9 4bugs ou limita es de rotinas j existentes na ROM-BIOS ou no seu compilador "C", "PASCAL" ou qualquer outro... Cabe aqui uma 0 0 8 7 0 0 8 4 0 0 9 0considera o interessante: muito mais produtivo usarmos uma liguagem de alto n¡vel juntamente com nossas rotinas em assembly... 0 0 8 7 0 0 8 4 0 0 8 4Evita-se a "reinven o da roda" e n o temos que desenvolver TODAS as rotinas necess rias para os nossos programas. Em particular, o 0 0 8 2 0 0 8 4assembly muito £til quando queremos criar rotinas que n o existem na liguagem de alto-n¡vel nativa! Uma rotina ASM bem desenvolvida pode nos dar a vantagem da velocidade ou do tamanho mais reduzido em nossos programas. 0 0 8 7 O primeiro passo para come ar a entender alguma coisa de 0 0 8 2assembly entender como a CPU organiza a mem¢ria. Como no nosso 0 0 8 2 0 0 8 2caso a id ia entender os microprocessadores da fam¡lia 80x86 da Intel (presentes em qualquer PC-Compat¡vel), vamos dar uma olhadela no modelamento de mem¢ria usado pelos PCs, funcionando sob o MS-DOS (Windows, OS/2, UNIX, etc... usam outro tipo de modelamento... MUITO MAIS COMPLICADO!). ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ 0 0 8 7 0 0 8 4³ Modelamento REAL da mem¢ria - A segmenta o ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 0 0 8 2 A mem¢ria de qualquer PC dividida em segmentos. Cada segmento tem 64k bytes de tamanho (65536 bytes) e por mais estranho que 0 0 8 7 0 0 8 4 0 0 8 4pare a os segmentos n o s o organizados de forma sequencial 0 0 8 4 0 0 8 7(o segmento seguinte n o come a logo ap¢s o anterior!). Existe uma 0 0 8 7sobreposi ao. De uma olhada: 64k ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄ¿ ÚÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÂÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÁÄÄÄÄÄÄÙ 0 1 2 <- Numero do segmento ÀÄÄÄÄÄÄÁÄÄÄÄÄÄÙ 16 16 bytes bytes 0 0 8 7 O segundo segmento come a exatamente 16 bytes depois do primeiro. Deu pra perceber que o inicio do segundo segmento est DENTRO do primeiro, j que os segmentos tem 64k de tamanho! Este esquema biruta confunde bastante os programadores menos 0 0 8 2experientes e, at hoje, ninguem sabe porque a Intel resolveu 0 0 8 8 0 0 8 2utilizar essa coisa esquisita. Mas, paci ncia, assim que a coisa funciona! Para encontrarmos um determinado byte dentro de um segmento 0 0 8 8precisamos fornecer o OFFSET (deslocamento, em ingl s) deste byte relativo ao inicio do segmento. Assim, se queremos localizar o 0 0 8 2d cimo-quinto byte do segmento 0, basta especificar 0:15, ou seja, 0 0 8 7 0 0 8 4 0 0 8 2segmento 0 e offset 15. Esta nota o usada no restante deste e de outros artigos. Na realidade a CPU faz o seguinte c lculo para encontrar o 0 0 8 7 0 0 8 7"endere o f¡sico" ou "endere o efetivo" na mem¢ria: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 0 0 8 0 ³ ENDERE O-EFETIVO = (SEGMENTO * 16) + OFFSET ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved