Curso de Assembly





Já parou pra pensar como realmente funciona um computador?
Por que ao apertar a tecla 'A' de seu teclado, aparece o 'A' na tela? E não o 'B' ?
O que realmente acontece quando você invoca uma função em C ou um método em Java?

Aliás, por que o C é tão eficiente e o Java não?
Como o Java consegue ser multiplataforma, como seu código funciona no Windows, no Linux e até em celulares?

Bem, se quer ir além do óbvio e descobrir como as coisas funcionam, e o motivo delas funcionarem, você tem que aprender a linguagem de programação Assembly.
Se saber C é sair da Matrix, saber Assembly é saber como a Matrix é feita.

Com o Assembly aprendemos e temos controle total do hardware, bem como sua comunicação.
Temos controle dos registros dos microprocessadores, estudamos a organização e funcionamento do sistema de memória, e movemos manualmente cada bit.

Assembly não é somente para engenheiros que vão trabalhar com Microprocessadores e Microcontroladores. Assembly é para aqueles que querem realmente saber computação, que são curiosos e desejam saber como tudo ao seu redor funciona e foi criado.
Estudar Assembly vai te dar um completo e total entendimento dos computadores, fazendo você um profissional mais completo, mesmo que seja um desenvolvedor web ou programador de jogos..

Visando o ensino desta linguagem, mãe de todas as linguagens, iniciamos o projeto Assembly Progressivo, que é um curso de Assembly para processadores Intel x86.

Introdução ao estudo do Assembly x86

Assembly para Intel (IA32)

Tutorial de Assembly, completo, gratuito e onlineAssembly é uma linguagem de montagem. Ou seja, diferente da maioria das outras linguagens, que são compiladas e/ou interpretadas, programar em Assembly é escrever um código que é diretamente entendido pelo hardware.

Assembly é a língua que usamos para falar com os mais diversos tipos de hardwares, como os microprocessadores e microcontroladores.

Todos sabem que em níveis mais baixos, no metal, a máquina só entende os bits: valores lógicos 1 ou 0 (na verdade, se refere a tensão e voltagem, mas podemos compreender como números 1 ou números 0), esse é código de máquina, o único que o hardware verdadeiramente entende e obedece.

Podemos programar escrevendo diretamente em binário, ou no sistema hexadecimal.
Mas seria algo extremamente complicado, confuso e as chances de errarmos seria bem maior.

E é aí que entra o Assembly: é conjunto de notação (ou símbolos, conhecidos por mnemônicos) que os humanos entendem. É a linguagem de máquina.

Assim, em vez de 1's e 0's, escrevemos comandos (ADD de adicionar, MOV de mover, por exemplo) e o Assembler vai montar nosso código, ou seja, substituir esses símbolos, que são uma linguagem que os humanos entendem, pelos seus respectivos códigos de máquina. E o hardware simplesmente segue esse conjunto de valores 1 e 0.

Porém, existem hardwares diferentes, com arquiteturas diferentes. Como Assembly fala com a máquina, para estruturas de hardware diferente, Assembly diferente.

Portanto, para aprender a linguagem Assembly, é preciso entender como seu computador funciona, como sua memória está organizada, os registros que possui, as instruções disponíveis, dentre outros detalhes.

Seja bem-vindo ao mundo da programação Assembly, a única verdadeira e pura linguagem.


00. Níveis de abstração em um computador: onde está o Assembly ?
01. Como começar a programar em Assembly
02. Assembly é a melhor linguagem de programação ?
03. As desvantagens e dificuldades: quando não usar Assembly
04. As vantagens e benefícios: quando se deve usar Assembly


O básico da linguagem Assembly

Agora que você já leu sobre o Assembly, sabe para que serve, onde age, quais suas vantagens e desvantagens, vamos de fato começar a estudar e programar nessa bela linguagem.

Aqui nesta seção iremos apresentar os conceitos básicos para os principiantes em Assembly.

De início, vamos ensinar o que é necessário para programar em Assembly, como baixar, instalar e dar os comandos no Assembler (programa para programar em Assebly) NASM.
Mostraremos como criar seu primeiro programa, criar o código objeto e linkar.

Os conceitos básicos englobam ainda explicações sobre labels, mnemônicos, operandos, registradores, alocação de memória, funções (calls), testes condicionais, loopings e outros assuntos que farão você se tornar um programador Assembly.

Bons estudos e o principal: não desistam.

00. O necessário para programar em Assembly: como instalar o Assembler NASM no Windows
03. Como criar object files(código objeto) e linkar arquivos em Assembly
04. Sections e _start: A divisão do código-fonte Assembly - A diretiva global
05. Labels: o que são, para que servem e como usar - Labels internos (local label)
06. Como alocar e reservar espaços de memória - As diretivas DEFINE e RES
07. Arrays (vetor) em Assembly - A diretiva TIMES


Livro Professional Assembly

Parabéns por optar por estudar essa bela linguagem de programação.
Estudar Assembly é estudar o real funcionamento de um computador, é ter total controle e visão do que ocorre em sua máquina.

Assembly não é difícil, pelo contrário, é, de longe, a linguagem mais simples existente.
Poucos comandos são necessários para programar em Assembly, diferente de dezenas de funções, classes, API e opções existentes nos frameworks das linguagens de alto nível.

Aliás, para programar em Assembly não é necessário nenhum software ou programa.
Você pode criar tudo diretamente de qualquer editor de textos.

Mesmo que não seja um Engenheiro de Elétrico, Eletrônico, de Computação ou um programador profissional de Assembly, estudar essa linguagem fará com que você cresça como profissional, pois você vai entender absolutamente tudo que ocorre os bits dentro de sua máquina.

Sobre o Curso Assembly Progressivo

Como começar programar em Assembly passo a passo, para principiantes?
Basta seguir a ordem do curso, indicada no menu superior.

Qual o programa para programar em Assembly?
Assembler NASM + Editor de textos (Bloco de Notas, Notepad++, gedit etc).

Quanto custa o curso Assembly Progressivo?
Nada. O curso Assembly Progressivo é grátis. Totalmente gratuito, livre e completo.


Qual a diferença desse curso pros outros?
Ensino do jeito que gostaria de ter aprendido. De uma maneira mais lógica e simples.
Com explicações do tipo "pra que serve isso?", "onde vou usar?", "em que situações deve usar" etc.

Assuntos que envolvem programação são explicados de maneira muito "se vire, é problema seu", na Internet.
Nunca entendi e nem concordei porque fazem isso, então decidi criar um material diferente.

O curso Assembly Progressivo é completo, é um curso gratuito e um curso de Assembly para iniciantes pois fala uma linguagem mais 'fácil' e acessível.
Já me disseram muitas vezes: não é um curso, é um bate-papo onde você aprende uma profissão, e bem.










Quem deve fazer o curso Assembly Progressivo ? 
Cobre todos os níveis e é uma apostila 'aberta', dividida em capítulos.

É um curso para programar em Assembly para iniciantes?
SIM!
Mas qualquer pessoa que tenha interesse em aprender a linguagemAssembly também pode usar o curso.
O curso de Assembly gratuito foi dividido em seções e bem seccionado. Se você é iniciante, veja do começo ao fim, é Progressivo, está na ordem que você deve aprender.
Se já sabe e quer tirar uma dúvida específica, é só ir na seção que deseja. Assim você não precisa baixar um pdf inteiro só pra tirar uma dúvida específica.

Existe uma versão para download?
Não. O curso de Assembly é online, todos os capítulos e artigos estão disponíveis no menu superior, onde verá o índice/sumário do curso de Assembly.

Se é de graça, é ruim?
Não. O conhecimento foi baseado em anos de pesquisa, nos melhores livros e na experiência do trabalho prático.
Prova disso são os programas, que sempre tentamos fazer aplicativos úteis, que você realmente possa a vir usar.

Por que é de graça?
O autor (eu) costuma fazer resumos sempre que estudava, para relembrar depois.

Decidi então, formatar esse material que eu tinha, de anos de estudos e publicar, pois vi que muito que eu sabia e tinha em meu computador era dúvida de pessoas que não tinham acesso a livros e faculdades.

Enviei (ou vi que enviaram dúvidas) e foram respondidas. Como funciona? Tem que pagar?
Boa parte do curso é feito de questões resolvidas e detalhadamente comentadas.
Você pode enviar sua dúvida pelo e-mail: programacao.progressiva@gmail.com
Que responderei e publicarei, para que possa servir de ajuda para outras pessoas.

Tanto trabalho, tanta dedicação e nenhum retorno financeiro?
Há o retorno do Google Adsense, que são essas propagandas que aparecem no site.
Sempre que alguém clica, eu recebo alguns centavos. Porém, não cliquem à toa.
O Google tem complexos algoritmos que sabem (através de como você achou o site, o que você estava buscando, o tempo que passou no site, seu IP etc etc) se você clicou por clicar ou realmente tinha interesse.

Então não devo clicar nos anúncios? Alguns são de cursos Assembly e parecem ser interessantes.
Somente se for de seu interesse. Os anúncios são contextualizados.
Ou seja, os anúncios que aparecem são de acordo com o conteúdo do site.
Como nosso site é voltado para a linguagem Assembly, aparecerão anúncios de cursos Assembly de grandes e renomadas empresas.
Só clique se tiver o real interesse em tais anúncios.

Posso usar seu material em meu site?
Sim. Mas tem que me avisar e citar meu site.
Avise por: programacao.progressiva@gmail.com

E se eu quiser imprimir para estudar?
Bons estudos! Se formatar antes de imprimir, não esqueça de me enviar uma cópia.

E se eu formatar pra imprimir e distribuir? Posso?
Sim, mas me informe e cite as fontes.
Avise por: programacao.progressiva@gmail.com

Seu material foi útil. Tirei dúvidas, aprendi, resolvi um problema no trabalho, sou um melhor programador ou dono de empresa, e quero te ajudar, aceita?
A intenção não é receber, mas óbvio que se eu receber por isso, haveria uma maior dedicação.
Qualquer reconhecimento e agradecimento é sempre bem vindo.
Contato: assembly.progressivo [a] gmail.com

Se é um curso, por que continua publicando coisas?
Porque a linguagem continua 'crescendo'. Sempre há ideias novas, questões e dúvidas a serem tiradas.
A ideia é ajudar o máximo de pessoas possíveis, e a linguagem Assembly atinge um ramo simplesmente VASTÍSSIMO.

Por que o curso está em um blog? Por que não tem logotipo, slogan ou coisas mais profissionais?
O curso Assembly Progressivo é um curso online e gratuito.
O curso Assembly Progressivo não é uma empresa.
O curso Assembly Progressivo não é pago.
O curso Assembly Progressivo não exige dinheiro ou cliques.
O curso Assembly Progressivo é online, não exige download.
O curso Assembly Progressivo não foca no lado do business, eu simplesmente quero publicar e contribuir com um material de qualidade e não me importo com a aparência.

6 comentários:

Anônimo disse...

# olha e o maximo ...

Niltão disse...

Casualmente encontrei seu site através do Google.
Muito bom todo o seu trabalho e Louvável sua iniciativa de transmitir conhecimentos. Oxalá você receba a retribuição que merece com merecidas doações. Que Deus Lhe abençoe e Lhe fortaleça para que possa continuar com suas iniciativas.
Gostei especialmente das postagens do curso de Assembly, e espero ansioso pela continuidade do Curso.
Aproveitando a oportunidade desejo um Feliz Natal e um Prospero Ano Novo cheio de Fartura, de Alegrias e Felicidades para vc e a todos que venham a ler este comentário.
Nilton

Ítalo disse...

Obrigado! Vou estudar bastante!

Unknown disse...

Sao pessoas como voce que fazem esse mundo melhor

Anônimo disse...

A principio devo-lhe agradecer pela sua generosidade e dispensabilidade. Nem todo mundo faz o que fizeste, parabéns por esse ato! Eu realmente achei o site procurando por material de assembly no google. Espero que que esse curso online e gratis me ajuda bastante, não apenas eu como também a todos interessados nessa linguagem de programação que estudam o material postado por ti!

Unknown disse...

Boa tarde ! Cheguei ! Antes tarde do que nunca... Gostei bastante da tua aula, pretendo ficar por aqui até o fim e mais algumas outras. Programei em "assembler" do /3, siiimmm, ainda tem um vivo ! Estava com saudades disto. Obrigado.

Veja também: