INTRODUÇÃO
Silício ReversooicìliS ©
Assembly para Todos os Gostos
(ver 1.2 de 02.08.03)

ASSEMBLY significa construir, juntar partes. É também o nome de uma linguagem de programação. Assembler significa construtor e é o nome que se dá a programas que "juntam partes", que "constroem" programas.

A linguagem Assembly é considerada difícil e complicada por ser uma linguagem de baixo nível. Talvez... dê uma olhada e decida se a fama se justifica. Na minha opinião, a melhor maneira de começar é APRENDER FAZENDO. É claro que vai ser preciso saber O QUE fazer, PORQUE fazer, ONDE, PARA QUE e COMO fazer. Tudo isto você vai encontrar nos textos de apoio, nas referências e nos tutoriais.

PARA COMEÇAR

Geralmente é uma romaria conseguir material técnico (sobre CPUs, modelos de memória, etc) e material didático de qualidade. Geralmente os artigos e/ou livros são muito superficiais, ou são incompletos, ou ainda são uma enrolação que mais atrapalha do que ajuda. Além disso, a gama de informações necessárias é um tanto ampla e se perder no emaranhado dos tutoriais são "dois palitos". Tem mais um detalhe: adquirir todos os livros, revistas e software necessários pode ficar muito caro. Além do mais, não é fácil encontrar literatura especializada em Português!

Mas porque JUSTO ASSEMBLY? Cada um tem suas próprias razões para começar ou continuar a usar esta linguagem. As minhas você pode ver em Porque Assembly?

Resolvi dividir o que pude aprender com textos que encontrei na web, livros, manuais e... muitas horas de programação, testes e pesquisas. Se houver alguma imperfeição, peço que me alerte; se faltar alguma coisa, agradeço toda e qualquer contribuição; se tiver dúvidas, faça contato.

É claro que é preciso ter noções de programação. Se você nunca viu Assembly pela frente, não se preocupe. Vá seguindo o roteiro proposto que em três tempos estará produzindo seus programas. No mais... este é o meu tributo aos escovadores de bits. Divirtam-se!

RECONHECENDO O TERRENO - Iniciantes

Algumas coisas precisam ficar bem claras para começarmos com o pé direito. Nosso objetivo será criar programas em linguagem assembly para máquinas com processadores Intel e com o sistema operacional Windows de 32 bits. Antes de começar, existem alguns tópicos interessantes que deveriam ser conhecidos. Se você encontrar dificuldades em algum texto, não desanime e não se preocupe. Vá tocando em frente e, depois de algum tempo, volte ao texto. Você vai ver que as coisas vão ficando cada vez mais claras e coerentes.

  1. Escrevendo um programinha Windows: coisa muito, muito simples para tomar contato com o GoAsm e o GoLink de Jeremy Gordon.
  2. Criando um programa: os arquivos envolvidos na rotina de criação de um programa.
  3. Bit e Binário: o que é possível fazer com um simples bit.
  4. Números Hexadecimais: o que são e porque são usados.
  5. Números Finitos: as implicações do uso de números finitos.
  6. A máquina chamada computador: entenda como funciona um micro conhecendo seus blocos funcionais.
  7. O Sistema Operacional Windows: saiba como o Windows assume o controle da sua máquina.
  8. Registradores: o que são e modo habitual de utilização.
  9. Mnemônicos: o que são códigos operacionais e mnemônicos.
  10. A Lógica Booleana: o que é a lógica booleana e como efetuar operações lógicas.
  11. A Pilha (I): o que é a pilha e as vantagens da sua utilização.
  12. A Linguagem Assembly: o que é possível fazer com uma linguagem tão poderosa.
RECONHECENDO O TERRENO - Intermediário
  1. O Sistema Win32: explicação resumida da arquitetura do win32.
  2. Sistema de Gerenciamento de Arquivos: conhecimento vital para uma boa programação.
  3. Processos e Linhas de Processo: para entender como os programas são executados
  4. Arquitetura básica dos Microprocessadores: a Unidade de Controle, a ALU e o Conjunto de Instruções.
  5. Arquitetura Intel: referências sobre registradores e flags.
  6. Flags e Saltos Condicionais I: o que são flags e como são utilizadas. Flag Zero e Flag de Sinal com exemplos de uso.
  7. Flags e Saltos Condicionais II: Flag de Carry, de Overflow e de Paridade com exemplos de uso.
  8. A Pilha (II): uso avançado da pilha.
  9. Instruções mais comuns: para ter uma noção da sintaxe. Este texto de referência é linkado com frequência nos primeiros tutoriais.
  10. Ordem Reversa de Armazenamento: o sistema de armazenamento de dados na memória dos processadores Intel - o little endian.
  11. Trabalhando com Estruturas: como lidar com blocos de dados.
  12. Tratamento de Erros: mecanismos envolvidos no tratamento de erros - o tratamento estruturado.
  13. Como CRIAR PROGRAMAS:
    Para ajudar a criar programas você vai encontrar uma série de tutoriais. Nos primeiros, os textos são bastante detalhados e, à medida que você for se acostumando com o estilo de programação e absorvendo conceitos e informações, os textos serão mais curtos e haverá mais links de apoio.

RECONHECENDO O TERRENO - Avançado
  1. Lidando com Exceções I: a arte do tratamento estruturado de erros.
  2. Lidando com Exceções II: tratamento estruturado de erros e o stack unwind.
  3. Lidando com Exceções III: final do tratamento estruturado de erros e download de programas exemplo.
  4. Objetos e Manipuladores: manipuladores (handles) e objetos user e gdi com as respectivas funções.
  5. Objetos e Manipuladores II: manipuladores (handles) e objetos kernel com as respectivas funções.




SOFTWARE

GoAsm: no site do Jeremy Gordon, Win32 + Assembler Source Page, você encontra de tudo para a programação Assembly de 32 bits para Windows 95/98/ME ou NT/2000/XP. Tem praticamente tudo o que você precisa, sendo o sofware disponibilizado gratuitamente pelo autor, desde o Assembler até o Compilador de Recursos, Linker, Debugger e Editor. Além disso, Informações, Tutoriais, Exemplos de código e demos (site em Inglês).


MASM32: a maioria dos tutoriais desta série baseiam-se no MASM. Encontrei um pacote excelente no site do hutch que inclui o MASM, todas as bibliotecas e arquivos de inclusão imagináveis, exemplos, tutoriais, uma IDE muito azeitada e uma pá de utilitários e ferramentas para facilitar o trabalho. Este pacote está na sua versão 8, é constantemente atualizado e, o melhor da história, é "de grátis".

Às vezes fica difícil encontrar os pacotes do hutch, por isso coloquei o pacote completo do MASM32 versão 8 (3 Mega) à disposição para download aqui na Aldeia.


OllyDbg: é interessante dar uma olhada no código do programa que é mapeado na memória quando ele é executado. Também é muito interessante executar o programa passo a passo (ou melhor, instrução por instrução) para ver como ele se comporta. Para isto utiliza-se programas especiais chamados de debugadores. Tenho especial predileção pelo OllyDbg, um programa gratuito que você encontra no site do autor em http://home.t-online.de/home/Ollydbg/. O debugador clássico é o SoftIce, caro pra caramba e também bom pra caramba.



REFERÊNCIAS SDK

Se você for programar para Windows, com certeza vai precisar de uma referência das funções da API do Windows. Se você já tem o Delphi ou o C++ instalado no seu computador, procure no diretório Help pelo arquivo .hlp correspondente. No site da Microsoft com certeza você também vai encontrar. Um dos melhores arquivos de referência é o que acompanha a excelente plataforma de desenvolvimento para C, o lcc-win32, no site do autor Jacob Navia e no endereço FTP ftp://ftp.cs.virginia.edu/pub/lcc-win32/.



REFERÊNCIAS NumaBoa

Tabela ASCII: Os caracteres da tabela ASCII e seus valores decimais e hexadecimais.

Principais funções da API do Windows: É o tipo de referência que é consultada a toda hora. Nas "Tabelas e Referências oicìliS" apenas as funções mais utilizadas estão descritas.

Arquitetura Intel: ARQUITETURA INTEL dos processadores 8086 / 80186 / 80286 / 80386 / 80486.

Mnemônicos e Códigos Operacionais: Lista (quase que) completa dos mnemônicos e opcodes (instruções Intel).

Caixa de Ferramentas: Snippets de código, modelos, macetes... tudo o que uma boa caixa de ferramentas precisa ter.



TEXTOS ACESSÓRIOS NumaBoa

Sistemas de Notação Numérica: Decimais, Binários, Hexadecimais, Octais e até BCD. O básico dos sistemas de notação numérica mais utilizados.

Lógica Boleana: Pratique AND, OR, XOR e NOT com bits. É a melhor forma de entender a lógica das operações.

Códigos Operacionais e Mnemônicos: O que são códigos operacionais de um processador. O que são mnemônicos e para que servem.

Registradores: O que são registradores e como funcionam.

As instruções mais comuns: As instruções mais utilizadas em Assembly e a lógica da utilização. Pequeno resumo para quem está começando.

Trabalhando com Estruturas: Manusear dados em bloco e agrupá-los de forma que possam ser endereçados como uma unidade.



TUTORIAIS NumaBoa

Por onde começar: Aquela parte inicial, chata pra caramba, mas que não adianta ignorar pois vai fazer falta mais tarde. Conheça um pouco do MASM e qual é a estrutura de um programa.

O folgado: Aprender fazendo, este é o segredo. Neste tutorial ainda tem muita teoria e o primeiro resultado é, no mínimo, frustrante. Mas não desanime: veja como fazer a API do Windows trabalhar para você. (tutNB01.zip - 12 Kb)

Message Box NumaBoa: Inicializando variáveis para serem usadas pela função escolhida, operadores especiais do MASM para facilitar nossa vida e, finalmente, uma JANELA ! (tutNB02.zip - 13 Kb)

Janelas - Módulo I - Projetando e Registrando uma Classe: Como criar uma janela "de verdade" e o sistema de classes. Conheça a "burocracia" do Windows e prepare-se para fabricar suas próprias janelas. (tutNB03.zip - 34 Kb)

Janelas II - Módulo II - Usando uma classe recém-criada: Aprenda como pôr seus "gerentes" na linha e a fazer com que trabalhem de acordo com as regras do sistema. (tutNB03.zip)

NumaBoa com Recursos: Criando uma janela com "algo mais". Introdução aos Recursos (resources) e sua aplicação. Controles que na verdade são janelas-filha. Usando o sistema de mensagens para mostrar gráficos. (tutNB04.zip - 75 Kb)

Pintando Texto: Texto como objeto GUI. Pegando um gancho na mensagem WM_PAINT. Entendendo o que são modelos de contexto (device context) e retângulos inválidos. (tutNB05.zip - 21 Kb)

Janela Numaboíssima: Saindo do convencional. Um tutorial de três módulos para criar uma janela com a forma e o aspecto que você quiser. (tutNB06.zip - 124 Kb)

Peles: Trocando as peles da janela. Complementando o código fonte da "Janela Numaboíssima" é possível fazer a janela trocar de pele (ou máscara, como quiser). (tutNB07.zip - 153 Kb)

Menus: Um pouco mais de recursos. Como escrever um recurso de menu, como incorporá-lo à sua janela e como gerenciar seus itens. Fácil, fácil. (tutNB08.zip - 15 Kb)

Menu Malandro: Trabalhando com variáveis do sistema. Brinque com o usuário. Resolução de tela, coordenadas de janelas, data e hora do sistema são algumas das novidades usadas para criar uma janela que "foge" do cursor do mouse. (tutNB09.zip - 15 Kb)

Fontes: Mudando o visual do Menu Malandro. Como trabalhar com fontes e cores. O uso de macros para facilitar a programação. (tutNB10.zip - 21 Kb)

Dialog Box: Uma dialog box como janela principal. Facilitando a vida com o uso de classes já definidas e gerenciamento automático. Adicionando componentes economizando programação. (tutNB11.zip - 45 Kb)

Ali Babá: Uma dialog box especial para abrir arquivos. As common dialog boxes são classes prontas para serem usadas. Veja como é fácil abrir arquivos e extrair as informações da seleção. (tutNB12.zip - 27 Kb)



LINKS

Iczelion's Win32 Assembly Homepage: Um dos melhores sites que encontrei (um clássico da Internet) é o do Iczelion. O menino curte Assembly e, até o momento, já produziu cerca de 60 ótimos tutoriais em inglês baseados no MASM. Você pode fazer o download de tutoriais, software, exemplos de código fonte além de ficar por dentro das últimas notícias e ciscar mais alguns links interessantes.

hutch's home page: Steve Hutchesson, de Sidnei (Austrália), é um nome que você vai encontrar com frequência no mundo assembly. Disponibiliza o pacote do MASM32, tools, snippets de códigos e é o autor de diversos softwares (freeware e código aberto) que são a salvação dos iniciantes e uma mão na roda para os experts.



Localizador

| AAAA | Página Inicial | Mapa do Site | Novidades | Busca | Indique esta página | Mestre da Teia | Voltar |
| Localizador || @ Info NumaBoa > oicìliS > Assembly para todos os Gostos
Créditos: vovó Vicki

webdesign sobMedida by vickiSoft - /informatica/oiciliS/assembler/index.php (12.01.02) versão 1.1 de 31.07.03
Licença Creative Commons 1998-2006 Aldeia NumaBoa
Exceto onde especificamente declarado, todo material deste site é disponibilizado de acordo com a Licença Creative Commons.