Tutorial Assembly

  • View
    158

  • Download
    0

Embed Size (px)

Text of Tutorial Assembly

T U T O R I A L ---------------

D E ---

L I N G U A G E M ----------------Contedo:

A S S E M B L Y ---------------

1.Introduo 2.Conceitos Bsicos 3.Programao Assembly 4.Instrues Assembly 5.Interrupes e gerncia de arquivos 6.Macros e procedimentos 7.Exemplos de programas

*********************************************************************** CAPTULO 1: INTRODUO Contedo: 1.1.O que h de novo neste material 1.2.Apresentao 1.3.Por que aprender Assembly?

1.1.O que h de novo neste material: Uma sesso completa sobre como usar o programa debug. Mais exemplos de programas. Um motor de pesquisa, para qualquer tpico ou item relacionado esta nova verso. Considervel reorganizao e reviso do material Assembly. Em cada sesso, h um link para o Dicionrio On-line de Computao de Dennis Howe. 1.2.Apresentao: Este tutorial destina-se quelas pessoas que nunca tiveram contato com a Linguagem Assembly. O tutorial est completamente focado em computadores com processadores 80x86 da famlia Intel, e considerando que a base da linguagem o funcionamento dos recursos internos do processador, os exemplos descritos no so compatveis com qualquer outra arquitetura. As informaes esto dispostas em unidades ordenadas para permitir fcil acesso a cada tpico, bem como uma melhor navegao pelo tutorial. Na sesso introdutria so mencionados alguns conceitos elementares sobre computadores e a Linguagem Assembly em si. 1.3.Por que aprender Assembly? A primeira razo para se trabalhar com o assembler a oportunidade de conhecer melhor o funcionamento do seu PC, o que permite o desenvolvimento de programas de forma mais consistente.

A segunda razo que voc pode ter um controle total sobre o PC ao fazer uso do assembler. Uma outra razo que programas assembly so mais rpidos, menores e mais poderosos do que os criados com outras linguagens. Ultimamente, o assembler (montador) permite uma otimizao ideal nos programas, seja no seu tamanho ou execusso.

CAPTULO 2: CONCEITOS BSICOS Contedo: 2.1.Descrio bsica de um sistema computacional. 2.2.Conceitos bsicos da Linguagem Assembly 2.3.Usando o programa debug

Esta sesso tem o propsito de fazer um breve comentrio a respeito dos principais componentes de um sistema computacional, o que ir permitir ao usurio uma melhor compreenso dos conceitos propostos no decorrer do tutorial. 2.1.DESCRIO DE UM SISTEMA COMPUTACIONAL Contedo: 2.1.1.Processador Central 2.1.2.Memria Principal 2.1.3.Unidades de Entrada e Sada 2.1.4.Unidades de Memria Auxiliar Sistema Computacional. Chamamos de Sistema Computacional a completa configurao de um computador, incluindo os perifricos e o sistema operacional. 2.1.1.Processador Central. O tambm conhecido por CPU ou Unidade Central de Processamento, que por sua vez composta pela unidade de controle e unidade de lgica e aritmtica. Sua funo consiste na leitura e escrita do contedo das clulas de memria, regular o trfego de dados entre as clulas de memria e registradores especiais, e decodificar e executar as instrues de um programa. O processador tem uma srie de clulas de memria usadas com frequncia e, dessa forma, so partes da CPU. Estas clulas so conhecidas com o nome de registradores. Um processador de um PC possui cerca de 14 registradores. Como os PCs tem sofrido evoluo veremos que podemos manipular registradores de 16 ou 32 bits. A unidade de lgica e aritmtica da CPU realiza as operaes relacionadas ao clculo simblico e numrico. Tipicamente estas unidades apenas so capazes de realizar operaes elementares, tais como: adio e subtrao de dois nmeros

inteiros, multiplicao e diviso de nmero inteiro, manuseio de bits de registradores e comparao do contedo de dois registradores. Computadores pessoais podem ser classificados pelo que conhecido como tamanho da palavra, isto , a quantidade de bits que o processador capaz de manusear de uma s vez. 2.1.2.Memria Principal. O um grupo de clulas, agora sendo fabricada com semi-condutores, usada para processamentos gerais, tais como a execuo de programas e o armazenamento de informaes para operaes. Cada uma das clulas pode conter um valor numrico e capaz de ser endereada, isto , pode ser identificada de forma singular em relao s outras clulas pelo uso de um nmero ou endereo. O nome genrico destas memrias Random Access Memory ou RAM. A principal desvantagem deste tipo de memria o fato de que seus circuitos integrados perdem a informao que armazenavam quando a energia eltrica for interrompida, ou seja, ela voltil. Este foi o motivo que levou criao de um outro tipo de memria cuja informao no perdida quando o sistema desligado. Estas memrias receberam o nome de Read Only Memory ou ROM. 2.1.3.Unidades de Entrada e Sada. Para que o computador possa ser til para ns se faz necessrio que o processador se comunique com o exterior atravs de interfaces que permitem a entrada e a sada de informao entre ele e a memria. Atravs do uso destas comunicaes possvel introduzir informao a ser processada e mais tarde visualizar os dados processados. Algumas das mais comuns unidades de entrada so o teclado e o mouse. As mais comuns unidades de sada so a tela do monitor e a impressora. 2.1.4.Unidades de Memria Auxiliar. Considerando o alto custo da memria principal e tambm o tamanho das aplicaes atualmente, vemos que ela muito limitada. Logo, surgiu a necessidade da criao de dispositivos de armazenamento prticos e econmicos. Estes e outros inconvenientes deram lugar s unidades de memria auxiliar, perifricos. As mais comuns so as fitas e os discos magnticos. A informao ali armazenada ser dividida em arquivos. Um arquivo feito de um nmero varivel de registros, geralmente de tamanho fixo, podendo conter informao ou programas.

2.2.CONCEITOS BSICOS Contedo: 2.2.1.Informaes nos computadores

2.2.2.Mtodos de representao de dados 2.2.1.Informao no computador: 2.2.1.1.Unidades de informao 2.2.1.2.Sistemas numricos 2.2.1.3.Convertendo nmeros binrios para decimais 2.2.1.4.Convertendo nmeros decimais para binrios 2.2.1.5.Sistema hexadecimal

2.2.1.1.Unidades de informao Para o PC processar a informao, necessrio que ela esteja em clulas especiais, chamadas registradores. Os registradores so grupos de 8 ou 16 flip-flops. Um flip-flop um dispositivo capaz de armazenar 2 nveis de voltagem, um baixo, geralmente 0.5 volts, e outro comumente de 5 volts. O nvel baixo de energia no flip-flop interpretado como desligado ou 0, e o nvel alto, como ligado ou 1. Estes estados so geralmente conhecidos como bits, que so a menor unidade de informao num computador. Um grupo de 16 bits conhecido como palavra; uma palavra pode ser dividida em grupos de 8 bits chamados bytes, e grupos de 4 bits chamados nibbles.

2.2.1.2.Sistemas numricos O sistema numrico que ns usamos diariamente o decimal, mas este sistema no conveniente para mquinas, pois ali as informaes tm que ser codificadas de modo a interpretar os estados da corrente (ligado-desligado); este modo de cdigo faz com que tenhamos que conhecer o clculo posicional que nos permitir expressar um nmero em qualquer base onde precisarmos dele. O possvel representar um determinado nmero em qualquer base atravs da seguinte frmula: Onde n a posio do dgito, iniciando da direita para a esquerda e numerando de 0. D o dgito sobre o qual ns operamos e B a base numrica usada. 2.2.1.3.Convertendo nmeros binrios para decimais Quando trabalhamos com a Linguagem Assembly encontramos por acaso a necessidade de converter nmeros de um sistema binrio, que usado em computadores, para o sistema decimal usado pelas pessoas. O sistema binrio baseado em apenas duas condies ou estados, estar ligado(1), ou desligado(0), portanto sua base dois. Para a converso, podemos usar a frmula de valor posicional: Por exemplo, se tivermos o nmero binrio 10011, tomamos cada dgito da

direita para a esquerda e o multiplicamos pela base, elevando potncia correspondente sua posio relativa: Binary: Decimal: = 1 1*2^0 1 1 0 0 1

+ 1*2^1 + 0*2^2 + 0*2^3 + 1*2^4 + 2 + 0 + 0 + 16 = 19 decimal.

O caracter ^ usado em computao como smbolo para potncia e * para a multiplicao. 2.2.1.4.Convertendo nmeros decimais para binrio H vrios mtodos para se converter nmeros decimais para binrio; apenas um ser analizado aqui. Naturalmente a converso com uma calculadora cientfica muito mais fcil, mas nem sempre podemos contar com isso, logo o mais conveniente , ao menos, sabermos uma frmula para faz-la. O mtodo resume-se na aplicao de divises sucessivas por 2, mantendo o resto como o dgito binrio e o resultado como o prximo nmero a ser dividido. Tomemos como exemplo o nmero decimal 43. 43/2=21 e o resto 1; 21/2=10 e o resto 1; 10/2=5 e o resto 0; 5/2=2 e o resto 1; 2/2=1 e o resto 0; 1/2=0 e o resto 1. Para construir o equivalente binrio de 43, vamos pegar os restos obtidos de baixo para cima, assim temos 101011. 2.2.1.5.Sistema hexadecimal Na base hexadecimal temos 16 dgitos, que vo de 0 a 9 e da letra A at a F, estas letras representam os nmeros de 10 a 15. Portanto contamos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E, e F. A converso entre nmeros binrios e hexadecimais fcil. A primeira coisa a fazer dividir o nmero binrio em grupos de 4 bits, comeando da direita para a esquerda. Se no grupo mais direita sobrarem dgitos, completamos com zeros. Tomando como exemplo o nmero binrio 101011, vamos dividi-lo em grupos de 4 bits: 10;1011 Preenchendo o ltimo grupo com zeros (o um mais esquerda): 0010;1011 A seguir, tomamos cada grupo como um nmero independente e consideramos o seu valor decimal: 0010=2;1011=11 Entretanto, observa-se que no podemos representar este nmero como 211, isto seria um erro, uma vez que os nmeros em hexa maiores que 9 e menores que 16 so

representados pelas letras A,B,...,F. Logo, obtemos como resultado: 2Bh, onde o "h" representa a base hexadecimal. Para a converso de um nmero hexadecimal em binrio apenas necessrio inverter os passos: tomamos o primei