quarta-feira, 16 de abril de 2014

O que é JAVASCRIPT?

Mas aquele Consolador, o Espírito Santo, que o Pai enviará em meu nome, esse vos ensinará todas as coisas, e vos fará lembrar de tudo quanto vos tenho dito. (João 14:26)

Javascript é extremamente importante pra quem trabalha com desenvolvimento WEB. Além de tornar a navegação um pouco mais agradável ao usuário, a maioria das validações de formulários hoje em dia é feita no lado do cliente, não apenas no lado do servidor. Pode-se dizer que, toda página HTML é estática, ou seja, é apenas visualizada e renderizada pelo navegador. Hoje em dia, já existem alguns elementos em HTML que fazem algum processamento (Validação, animação, etc). Porém, em tese, todo o processamento do lado do cliente é feito via JAVASCRIPT. Deslocamento de divs, gerenciamento de eventos; tudo isso é controlado via javascript. Sem JS, voçê não poderia controlar o comportamento da página, apenas o desenho da mesma.

Afinal, o que é javascript? Em poucas palavras, é uma linguagem de script empregada nos navegadores, afim de alterar o comportamento ou tornar mais funcional determinada página em HTML. Mas, antes de aprender um pouco mais sobre este assunto, é bom entender alguns conceitos.

Primeiro, o DOM. DOM é uma sigla equivalente á Document Object Model. O DOM representa a árvore hierárquica de elementos, conforme observado na fígura abaixo:

 

 

Como voçê vê, o desenho acima pode representar a seguinte marcação em HTML

<!DOCTYPE html>
<html lang=”en-US”>
<head>
 
 BRINCANDO COM JAVASCRIPT
</head>
<body>
 

OI

ALGUM TEXTO AQUI

OUTRO TEXTO AQUI

</body> </html>

Então, o DOM é uma interface única provida pelo navegador de acesso á estes elementos em HTML, que permite tanto ao CSS quanto ao JAVASCRIPT acessarem elementos específicos do documento. Por exemplo: 




   

 

Caso queira saber um pouco mais, acesse: http://tableless.com.br/tenha-o-dom/

Outro conceito importante é o de evento. Eventos são, digamos, gatilhos disparados por uma ação. Por exemplo: Quando o usuário clica em um botão, ocorre o evento CLick no botão clicado. Quando a página acaba de ser carregada, é executado o evento load do documento. Voçê pode associar uma função ou qualquer instrução á um evento em específico, conforme demonstrado abaixo:


    

    /*OU */

    

   

Observe que, todo evento tem o prefixo on. Por exemplo: onClick, onBlur, etc.

Caso queire ter acesso á uma lista completa de eventos, acesse: http://www.marciobrasil.net.br/javascript-2/lista-completa-de-eventos-javascript.html

Voçê também pode criar funções, e associá-las á algum evento em específico, conforme demonstrado abaixo:

    
    
    

    /* OU */
    
    
   

 

Seguem alguns exemplos abaixo, que voçê pode baixar clicando aqui, e que serão explicados um á um. Isto é só pra voçê ter uma idéia do quanto javascript é importante e do que este pode fazer. 

1)  Mudar valor de um campo de texto

    

    <body>
     
Mudar valor de campo
</body>

 

2) validar formulário, pra não deixar passar formulário em branco

    
    <body>
    
Formulário não deixa passar em branco
</body>

 

3) enviar requisição ajax

Caso queira saber um pouco mais, acesse esta postagem: http://nunes-developer.blogspot.com.br/2014/04/o-que-sao-requisicoes-ajax.html

 

    
<body>
 
Fazendo requisição AJAX
</body>

 

4) Adicionar elementos á um container

    
    <body>
     
Adicionando campos dinamicamente
</body>

 

5) Mudar propriedades CSS de um elemento (Cor de fundo, largura, altura)

  
   <body>
    
Mudar propriedades CSS de um elemento (Cor de fundo, largura e altura)
</body>

 

Observe que, quando altera o campo altura, a altura da div muda. Isto porque o evento change do campo altura é associado á função mudaAltura. O mesmo acontece com os campos de mudança de largura e cor.

Como voçês viram, dá um pouco de trabalho programar em javascript puro, para realizar coisas relativamente simples. Por isso, já existem alguns frameworks javascript que podem agilizar seu processo. Porém, antes de aprender qualquer framework, é recomendável aprender  a linguagem, independente de qual seja.

Seguem abaixo alguns frameworks mais utilizados no mercado:

http://api.jquery.com

http://dojotoolkit.org/

 

Segue abaixo o código-fonte do exemplo: CÓDIGO-FONTE DO EXEMPLO

 

segunda-feira, 14 de abril de 2014

Dojo e Jquery: 2 frameworks javascript em alta

O Senhor o sustentará no leito da enfermidade; tu o restaurarás da sua cama de doença. (Salmos 41:3)

Programar em javascript, em alguns casos, é escrever N linhas de código. Se lembrar de todos os atributos e métodos de determinados elementos do DOM, ás vezes, é algo penoso. Por isso, foram criados alguns frameworks, que abstraem toda esta lógica de uma forma um pouco mais intuitiva. No nosso caso, falemos de 2 especificamente: Dojo e Jquery. 

Esta postagem visa introduzir, de forma concisa, um pouco da síntaxe e de como funciona cada um destes frameworks. Como voçê verá, ambos tem uma síntaxe simples e de fácil aprendizado. Lembrando que, antes de aprender qualquer framework, seja de javascript ou qualquer outra linguagem, é importante ter a base, conhecer a linguagem. Frameworks servem apenas como atalho pra agilizar o trabalho. Mas, antes de buscar atalhos, é necessário conhecer o trabalho. Há coisas que se pode fazer em javascript puro, mas não dá pra fazer em jquery ou em dojo. 

No exemplo de hoje, há 3 funcionalidades que são implementadas tanto em dojo quanto em jquery:

a) Mudar cor de uma div

b) Fazer requisição AJAX

c) Adicionar campos de texto

 

Se quizer, voçê pode ver como funciona cada uma destas implementações visualizando o código-fonte.

Os scripts em DOJO são executados normalmente no fim da página. Como devem ter acesso ao documento, primeiramente o documento deve ter sido carregado.

 

Segue abaixo o código-fonte do exemplo.

<!DOCTYPE html>
<html lang=”en-US”>
<head>

TESTE DE MESA




</head>
<body>
 

TESTE COM DOJO E JQUERY

</body> </html>

 

Segue o código completo no link abaixo

Código-fonte completo

 

É bom dar uma olhada nos sites oficiais de cada framework:

JQUERY

DOJO

 

sexta-feira, 11 de abril de 2014

DESIGN RESPONSIVO: Introdução e exemplo

A glória de Deus está nas coisas encobertas; mas a honra dos reis, está em descobri-las. (Provérbios 25:2)

Design responsivo já um termo que já está na boca de todo webdesigner que está ligado nas novidades. Mas, afinal de contas, o que é isto? Eu não sou nenhum expert no assunto, tanto é que, nem sou webdesigner, mas, em poucas palavras: Layout responsivo é um layout que se adequa á largura de tela de diversos dispositivos, sem, contudo, ser necessário criar um site inteiro adaptado pra isso. Ou seja, o código HTML deste site se mantém íntegro, deixando toda a parte da adaptação para o CSS. Voçê quer um exemplo? Este site aqui:  http://sergiolopes.org/.

Para ver funcionando, tente redimensionar a tela do navegador o menor possível. Notou alguma diferença? Percebeu que os elementos conseguem se adaptar á variação de largura, sem comprometer a visualização do usuário? Então, isso é DESIGN RESPONSIVO. Mas, qual é o segredo? Precisa recriar um site do zero? Não necessariamente, vai depender de cada caso. Mas, na maioria dos casos, basta apenas uma ligeira adaptação no CSS. Já existem frameworks que auxiliam neste aspecto? Sim. Entre eles posso citar o bootstrap, zurb, etc. Porém, é sempre importante conhecer um pouco o fundamento disso tudo, afim de não ficarmos tão dependentes de frameworks. 

Quando se lida com este assunto, normalmente aparecem duas palavras mágicas: User-agent e media-query. User-agent é uma frase que representa quem esté acessando o site. Ele vem através de um header de requisição. Identifica se o cliente é IPAD, IPHONE ou ANDROID, por exemplo. Media-query, pelo que entendi, calcula e redimensiona os elementos da página para se adequar á tela do usuário.

Para que os media-query entrem em ação, voçê deve, primeiramente, colocar o seguinte trecho de código no cabeçalho de seu site:


OK. Este é o primeiro passo. Sugiro que voçê crie uma página qualquer em HTML, com esta tag mágica, e acesse. Redimensione a janela do navegador até a largura mínima. Voçê pode observar que os elementos são automaticamente ajustados á largura da tela. Agora, voçê pode ir um pouco mais além: O menu  é horizontal quando a largura é maior, e, vertical, caso a largura fique menor. Voçê pode fazer isso através do código CSS, como veremos em seguida:

 @media screen and (max-width: VALOR){
  /* Código CSS aqui */
 } // Tratamento por tipo de largura

Como voçê vê, tu pode definir as propriedades CSS caso a largura de tela seja inferior ao atributo max-width, por exemplo. Voçẽ pode trabalhar também com min-width ou max-device-width (Largura máxima de dispositivo). 

Num exemplo que fiz, em tela normal, há a seguinte apresentação:

Agora, aplicando o conceito de DESIGN RESPONSIVO para telas com largura máxima de 600 px e 300 px, há a seguinte apresentação:

Pois bem, observe que, há algumas alterações á mais além de uma simples adaptação de layout:

a) O menu ficou vertical

b) A fonte ficou menor quando a largura ficou menor do que 600 px, e menor ainda quando ficou menor do que 300 px.

c) Divs com ids conteudo e plus passaram a ocupar a largura inteira do container principal.

 

Estas alterações acima são específicas para telas menores, e obedecem ao código CSS abaixo:

    @media screen and (max-width: 600px) {
  #left{
   float: none;
   width: 100%;
  }
  
 
  #content{
   float: none;
   width: 100%;
  }
  
  #plus{
   float: none;
   width: 100%;
  }
  
  #nav ul li{
   clear: both;
   display: block;
  }
 
  #nav{
   width: 100%; 
  }
  
  #nav ul li a{
   line-height: 100%;
   font-size: 80%;
  }
  
  h1{
   font-size: 80%;
  }
  
  #foot{
   font-size: 80%;
  }
  
  #imagens{
   width: 80%;
   margin-top: 2em;
  }
 
 }
 
 @media screen and (max-width: 300px) {

 
  #left{
   float: none;
   width: 100%;
  }
  
  #imagens{
   width: 80%;
   margin-top: 2em;
  }
  
  #plus{
   float: none;
   width: 100%;
  }
  
  #nav ul li{
   clear: both;
   display: block;
   margin-bottom: 0.5em;
  }
 
  #nav{
   width: 100%; 
  }
  
  #nav ul li a{
   line-height: 100%;
   font-size: 70%;
  }
  
  h1{
   font-size: 70%;
  }
  
  #foot{
   font-size: 70%;
  }
 
 }

   

 

Como voçê pode ver, a única diferença entre as adaptações de 600 e 300px é quanto ao tamanho da fonte.

Caso queira se aprofundar, sugiro a visita do seguinte site:

http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries

 

Clique no link abaixo para baixar o código-fonte do exemplo:

Código do exemplo

 

 

 

 

segunda-feira, 7 de abril de 2014

O que são requisições AJAX?

Porque Moisés disse: Honra a teu pai e a tua mãe; e quem maldisser, ou o pai ou a mãe, certamente morrerá. (Marcos 7:10)

AJAX é um acrônimo para: Asynchronous JavaScript And XML. Mas, o que é isto? Antes de respondermos esta pergunta, levantemos a problemática que permitiu seu surgimento: quando o site deve buscar alguma informação no servidor, é necessário recarregar a página para ter esta informação acessível, o que é custoso para o usuário.

Por exemplo: Imaginemos que voçê acessa uma página na qual há 3 caixas de seleção: Continente, país e estado. Para nao ter que carregar todas as informações de país ou estado, e nem correr o risco de  ser selecionado um país que não faz parte do continente selecionado, quando voçê seleciona algum continente, logo o sistema deve buscar os países deste continente, e por aí vai. Do ponto de vista cliente-servidor, isto implicaria em recarregar o formulário com os valores á cada alteração de continente. Para evitar este fluxo de dados desnecessário, é que se faz necessário o uso do AJAX. O mesmo é constituído de um conjunto de tecnologias que permite que haja a comunicação entre o cliente (Página carregada pelo navegador) e o servidor (Que provê os dados e sempre retornar as páginas HTML). No nosso exemplo, quando voçê seleciona um continente, há um objeto em javascript que faz a conexão com o servidor para retornar os países desejados.  Este objeto literalmente acessa a página onde está a informação desejada, e retorna a resposta do servidor. Dependendo do navegador utilizado, este objeto pode ser o XMLHttpRequest (Navegadores modernos); ou o XMLHttp(IE7-). 

Normalmente, ou o servidor retorna uma simples string, ou código HTML. É melhor, que retorne em forma de algum formato de transporte de dados, como o JSON ou o XML, por exemplo, afim de ser fácil interpretar a resposta por parte da página que fez a requisição.  

No exemplo abaixo, há 2 formas de fazer requisições AJAX: Uma, com AJAX puro, sem uso de nenhum framework. O outro, é com Jquery, que é um framework javascript. A segunda forma é a mais fácil, e menos sujeita a erros, pois, funciona em todos os navegadores (Comigo, nunca deu errado). A primeira é mais sujeita a erros, pois, algumas funções podem funcionar em uns navegadores, e em outros requer uma certa adaptação. Além disso, atente-se que nem todos usam o XMLHttpRequest como objeto realizador de requisições AJAX. No caso do Jquery, isto tudo está encapsulado. 

No código abaixo, há um campo onde voçê faz a pesquisa e 2 botões, que te permite fazer requisições das duas formas. Ambas irão retornar a mesma lista de pessoas.

Caso queire aprender a fazer o mesmo com XML, sugiro o seguinte tópico: AJAX com XML

Quando se faz um requisição AJAX, podem ocorrer 2 coisas: O usuário não mexe na página até a requisição acabar, ou, ele mexe normalmente enquanto a página aguarda o fim da requisição. Quando ocorre o primeiro caso, dizemos que a requisição é síncrona.  No segundo, que ela é assíncrona. Qual é a melhor alternativa? Voçê, provavelmente diria que é a segunda, mas, depende de cada caso em particular. Se estiver asíncrona, voçê pode permitir que haja N requisições desnecessárias ao servidor, o que pode fazer com que o javascript "enlouqueça". 

Só pra lembrar: Nossos exemplos utilizam como linguagem do lado do servidor, o PHP.  

Segue abaixo o código-fonte do exemplo e algumas observações:


 <!DOCTYPE html>
<html lang=”en-US”>
<head>

Requisições AJAX








 

PROCESSAR NO CONTAINER ABAIXO UMA RESPOSTA AJAX

DADOS FICAM AQUI  

</body> </html>

Segue abaixo o código do lado do servidor:

<?php

/*
 * Dados virão em formato de JSON, que é um formato de transporte de dados, como o XML. 
 * 
 * */
header('Content-Type: application/json');

header('Cache-Control: no-cache');


$dados = array();
$x = 0;
$q = $_REQUEST['q'];

$dados[$x]['nome'] = "ALBERTO";
$dados[$x]['idade'] = "18";
$x++;

$dados[$x]['nome'] = "LUIZ";
$dados[$x]['idade'] = "19";

$x++;

$dados[$x]['nome'] = "LUIZA";
$dados[$x]['idade'] = "19";

if(!empty($q)){
 foreach($dados as $i => $v){
  if(!preg_match('/.*'.$q.'.*/',$dados[$i]['nome'])){
   unset($dados[$i]);
  }
 }
}

foreach($dados as $i => $v){
 $saida[] = $dados[$i];
}

sleep(2);

echo json_encode($saida);

 

Segue abaixo todos os códigos para voçê baixar:  EXEMPLO COMPLETO

 

 

 

 

 

 

terça-feira, 1 de abril de 2014

ASSEMBLY com NASM

Eu sou o pão vivo que desceu do céu; se alguém comer deste pão, viverá para sempre; e o pão que eu der é a minha carne, que eu darei pela vida do mundo. ( João 6:51 )

Antes de dar continuidade á leitura desta postagem, seria bom voçê já ter uma noção de programação. Já tem? Pois bem, então, esqueça. Estamos diante de um paradigma totalmente diferente. Assembly é uma linguagem considerada de baixo nível, ou seja, mais próxima da linguagem de máquina (Que só a máquina entende). PHP, JAVA e PYTHON podem ser consideradas linguagem de alto nível (Muito mais próximo do entendimento humano).  Ela tem algumas peculiaridades bem interessantes, que deixam qualquer programador acostumado com linguagens de alto nível de cabelo em pé.

Este tutorial serve para voçê ter uma noção de como trabalha e se desenvolve nesta linguagem tão clássica. Voçê terá uma noção teórica importante antes de por a mão na massa, e alguns exemplos para analisar e ir treinando.

Esta linguagem, hoje em dia, é utilizada para escrever softwares que se comunicam diretamente com o hardware, como, por exemplo: controle remoto, microcontrolador, etc.

Pra começar, voçê deve saber que, uma vez que o código-fonte já esteja sido escrito, ele precisa ser compilado, ou seja, precisa ser transformado num programa executável, para poder rodar. Os programas que fazem este papel chamam-se ASSEMBLADORES. Assemblador, em poucas palavras, converte a linguagem assembly em linguagem de máquina, por processo conhecido como montagem. A máquina só entende agrupamentos de bits 0 e 1. O assemblador converte o seu código em bits 0 e 1, compreensíveis ao seu computador.

Para utilizar nossos exemplos, utilizaremos o assemblador NASM, que pode rodar tanto em WINDOWS quanto em LINUX. Está disponível no seguinte endereço:  Site oficial da NASM.

Sugiro que baixe e instale este programa antes de dar continuidade á este artigo.

Pois bem, antes de continuar, vamos entender o que é registrador, pois, voçê vai manipulá-los direto. Registrador é a unidade de armazenamento interno do processador. Em poucas palavras, são os espaços para manipular dados. Normalmente, através das  instruções em assembly, estes registradores são manipulados. Fique esperto que, alguns registradores tem finalidade específica. Por exemplo: EAX pode ser usada para realização de operações aritméticas, mas também é utilizadas para fazer chamadas ao núcleo do sistema operacional, como por exemplo: Exibir algo na tela, finalizar execução, etc. Segue ao lado uma lista destas interrupções que se deve setar no registrador EAX:  Lista de interrupções.

É preciso lembrar que, existem registradores de 32 bits, de 16 bits e de 8 bits. Por exemplo: EAX é um registrador acumulador de 32 bits, AX é o mesmo só que em 16 bits; AL e AH  são o mesmo em 8 bits. Neste caso, AX é composto por AX e AL, tendo 8 bits cada. Uma explicação mais detalhada sobre cada registrador voçê vê em:  Lista de registradores

Agora sim, vamos por  a mão na massa. Lembrando que, cada assemblador possui uma estrutura própria de programa. No nosso caso, a estrutura própria é a seguinte:

section .data
 ; Dados inicializados
section .bss
 ; Dados não-inicializados

section .text
 ; Conteúdo do programa
global _start ; Definindo como global, para ser interceptado por alguma biblioteca em C
 
_start:
 ; Conteúdo mesmo é aqui

 

Pois bem, segue abaixo um programa que recebe dois números (Que voçê ira digitar), e irá retornar a soma.

 

 

 

section .data
 ; Onde ficam dados inicializados. Normalmente o padrão para declarar variável é:
 ; NOME TIPO (POde ser DB-BYTE,DD-DOUBLE WORD,DW-WORD) VALOR
 p DB "Digite um número: "
 len_p  equ $-p ; Tamanho da variável p. É necessário para passar ao registrador edx
 pp DB "Digite o segundo número: "
 len_pp equ $-pp

 m DB "Resultado: "
 len_m equ $-m




section .bss
 ; Reservando espaço de 1 byte para posterior uso. No nosso caso, troca-se apenas o D por RES
 numero RESB 2
 resultado RESB 2
 segundo RESB 2

section .text

global _start

_start:
 ; Qualquer instrução do trecho de programa _start ficará aqui. Neste caso, _start é um rótulo dado á este trecho específico de programa. _start é o fluxo principal do programa


; Em instruções que se exibe algo na tela. O EAX possui valor 4, que é a interrupção para se exibir algo na tela. EDX armazena a quantidade de caracteres a serem exibidas
 mov edx, len_p ; Tamanho da string que será exibir
 mov ecx, p ; Conteúdo da mensagem
 mov eax, 4 ; Chamada ao núcleo do sistema para exibir algo na tela
 mov ebx, 1 ; 0 = NADA; 1 = STDOUT (Saída); 2 = STDIN (Entrada)  
 int 0x80 ; CHamada ao núcleo do sistema, que recebe o valor contido em eax para executar

 ; Trecho abaixo  trata de receber o número digitado pelo usuário e o armazena na variável numero
 mov eax, 3 ; Indica ao núcleo que é pra receber um valor preenchido pelo usuário
 mov ebx, 2 ; STDIN (Preparar o programa para uma entrada de texto)
 mov edx, 1 ; Tamanho do campo recebido
 mov ecx, numero ; Armazena a entrada na variável numero
 int 0x80 ; Interrupção


 ; Exibindo na tela a segunda mensagem
 mov edx, len_pp
 mov ecx, pp
 mov eax, 4
 mov ebx, 1
 int 0x80

 ; Recebendo o segundo parâmetro
 mov eax, 3
 mov ebx, 2
 mov edx, 2
 mov ecx, segundo
 int 0x80

 ; Exibindo terceira mensagem
 mov edx, len_m
 mov ecx, m
 mov eax, 4
 mov ebx, 1
 int 0x80


 ; Efetuando a soma
 mov bl, [segundo] ; Atribuindo o valor da variável segundo ao registrador BL
 mov al, [numero] ; Atribuindo o valor da variável numero ao registrador AL
 
 sub bl, '0' ; Convertendo valor de ASCII em decimal para fins de operação


 add al, bl ; Efetuando a soma, sendo que, o resultado fica armazenado no registrador al
 
 mov [resultado], al ; Movendo o valor de al na variável resultado


 ; Trecho abaixo exibe o resultado na tela
 mov ecx, resultado
 mov edx, 2
 mov eax, 4
 mov ebx, 1
 int 0x80

 mov eax,1 ; SAIDA
 int 0x80

 

Para compilar  o programa acima, copie e cole o código acima em seu editor de texto, e salve com o nome de soma.asm. Todo código-fonte em assembly deve ter a extensão .asm.

Em seguida, execute os seguintes comandos em linha de comando:

 

nasm -f elf64 soma.asm // Para compilar
ld soma.o -o soma // Para gerar o executável
./soma   // Para executar

// Lembrando que o comando acima serve para LINUX, não sei como deve ser no WINDOWS

 

Segue outro programa que calcula a área de um triângulo tendo a base e a altura da mesma.

 

 

section .data
 msg DB "Digite a base do triangulo" ,0xa
 l_msg equ $ - msg
 msg2 DB "Digite a altura do triangulo", 0xa
 l_msg2 equ $ - msg2
 msg3 DB "Resultado", 0xa
 l_msg3 equ $ - msg3

 divisor DB '2'
 
section .bss
 base RESB 1
 altura RESB 1
 area RESB 2

section .text

global _start
 
_start:
 mov eax, 4
 mov ebx, 1
 mov edx, l_msg
 mov ecx, msg
 int 0x80

 mov eax, 3
 mov ebx, 2
 mov ecx, base
 mov edx, 2
 int 0x80

 mov eax, 4
 mov ebx, 1
 mov edx, l_msg2
 mov ecx, msg2
 int 0x80

 mov eax, 3
 mov ebx, 2
 mov ecx, altura
 mov edx, 2
 int 0x80


 ; Multiplicando base e altura
 sub [base], byte '0'
 sub [altura], byte '0'
 mov al, [base]
 mov bl, [altura]
 mul bl  ;AL = AL * BL  OU AX = AL * BL
 
 ; Dividindo o produto por 2
 sub [divisor], BYTE '0' ; Conversão de decimal para ASCII

 mov bl, [divisor]

 div bl ; Divisão do acumulador(AX) pelo divisor (bl) . No AX, está o resultado da multiplicação 
 add al, '0'
 mov [area], al

 mov eax, 4
 mov ebx, 1
 mov edx, l_msg3
 mov ecx, msg3
 int 0x80

 mov eax, 4
 mov ebx, 1
 mov edx, 2
 mov ecx, area
 int 0x80
 
 jmp sair

sair:
 mov eax, 1
 mov ebx, 0
 int 0x80

 

 

 

Caso queira conhecer um pouco mais desta linguagem, sugiro os seguintes links abaixo:

 

Tutorial de ASSEMBLY Uma breve introdução ao ASSEMBLY

Segue abaixo uma lista de exemplos que fiz para aprender a usar esta ferramenta:

Outros exemplos