Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Primeira Aula - ASM Basico - MMMJR


MMMJR
 Compartilhar

Posts Recomendados

Primeira Aula - ASM Basico - MMMJR

 

 

 

 

 

Primeiro quero explicar algumas coisas sobre o Assembly, muito importantes:

À primeira aula vai ser só terias.

 

 

1° O que é Assembler?

 

 

Assembler é uma linguagem de baixo nível, voce pode ultilizar o asm para acelerar tarefas lentas em seus programas. Basicamente ela consite de sentenças que representam instruções em linguagem de máquina, e, como ela está próxima ao código de máquina, o processamento é rapido.

 

 

1° Por que usá-lo?

 

 

Como eu disse antes, Assembler é veloz, e lhe dá muito maior controle e flexibilidade sobre o PC, permite uma comunicação a nivel de hardware. Uma das outras vantagens do Assembler é que ele permite a você impressionar seus amigos com páginas de código aparentemente incompreensível (aparentemente, voce verá que não é tao dificil assim).

 

 

Capitulo 1:

 

OS REGISTRADORES:

 

 

Vamos estudar os registradores, antes de tudo eles são o que fasem tudo, são muito importantes. Vou tentar explicar de uma forma em que todos entendam.

 

Quando você está trabalhando com Assembler, você tem que usar registradores.

Você pode imaginá-los como sendo variaveis já definidas para você.

 

Para quem não tem conhecimentos, variaveis são locais com nomes prédefinidos em que voce pode guardar informações para seu programa.

EX:

Em C:

int num; //num é um nome que foi declarado como variavel tipo int, que são numericos.

 

 

Os mais comuns estão listados abaixo:

 

AX - o acumulador. Compreende AH e AL, os bytes alto e baixo de AX. Comumente usado em operações matemáticas e de E/S.

 

o AX, EAX, são locais de armazenamentos.

 

BX / EBX - a base. Compreende BH e BL. Comumente usado como uma base ou registrador apontador.

 

CX /ECX - o contador. Compreende CH e CL. Usado frequentemente em loops.

 

DX /EDX - o deslocamento, similar ao registrador de base. Compreende DH e DL. Acho que você está pegando o espírito da coisa agora.

 

Saber um pouco mais:

 

 

Estes registradores são definidos como registradores de uso geral pois podemos realmente armazenar qualquer coisa que quisermos neles. São também registradores de 16 bits, o que significa que podemos armazenar um inteiro positivo de 0 a 65535, ou um inteiro com sinal de -32768 to 32768.

 

 

No começo pode parecer meio confuso para voces, más na pratica verão que são simples de usar.

 

EX:

 

 

EX:

 

MOV EAX, 0FF

 

Aqui voce está movendo o valor de FF para EAX (FF está em HEX).

 

 

 

 

Os registradores de segmento:

 

Também temos os registradores de segmento, Estes são outros registradores que nós não vamos ver nos primeiras aulas, mas vamos vê-los em maior profundidade mais tarde. Eles são imensamente úteis, mas podem ser também perigosos.

 

Não lige muito para eles agora, só estou mostrando para voces verem que eles existem.

 

 

 

CS - o segmento de código. O bloco de mem¢ria onde o código ‚ armazenado. NÃO brinque com esse, a menos que saiba o que está fazendo.

 

DS - o segmento de dados. A área na memória onde os dados são armazenados. Durante operações de bloco, quando grandes blocos de dados são movidos, este é o segmento a que a CPU comumente se refere.

 

ES - o segmento extra. Apenas outro segmento de dados, mas este é comumente usado quando se quer acessar o vídeo.

 

SS - não, não é o exército alemão. É o segmento de pilha, em que a CPU armazena endere‡os de retorno de subrotinas. Tome cuidado com ele. :)

 

SI - o índice de fonte. Frequentemente usado para movimentações de blocos

de instruções. Este é um ponteiro que, com um segmento, geralmente DS, é usado pela CPU para leitura.

 

DI - o índice de destino. Novamente, você o usará muito. Um outro ponteiro que, com um segmento, geralmente ES, é usado para escrita pela CPU.

 

BP - o apontador da base, usado em conjunto com o segmento de pilha. Nós

não vamos usá-lo muito.

 

SP - o apontador da pilha, comumente usado com o segmento de pilha. NÃO

brinque com isso de jeito nenhum. :

 

 

Capitulo 2:

 

 

O conjunto de instruções do 8086:

 

 

Okay, então você já aprendeu sobre registradores, mas, como usá-los,

e como se programa em Assembler? Bem, primeiro você precisa de algumas

instruções. As seguintes instruções podem ser usadas em todas as CPU's

do 8086 para cima.

 

Este Capitulo será nossa biblioteca, voce terá que consultar aqui muitas veses!

 

 

Biblioteca de funções:

É necessário se cadastrar para acessar o conteúdo.

 

 

MOV <dest>, <valor>

 

 

MOVE. Esta instrução permite MOVER um valor para uma posição na mem¢ria.

 

Ex.: MOV AX, 13h

 

Isso deveria mover 13h (19 em decimal) para o registrador AX. Logo, se AX valia antes 0, ele agora seria 13h. ISSO APENAS MOVE UM VALOR PARA UM REGISTRADOR, NÃO FAZ NADA MAIS.

 

 

 

PUSH <xxxx>

 

 

Coloca algo no topo da pilha, veremos mas na frente.

 

 

 

INT <número>

 

 

INTERRUPÇÃO. Esta instrução gera uma interupção. Geraria a interrupção 10h (16 em decimal). Não presisa saber desse agora.

 

 

 

ADD <dest> <valor>

 

 

ADICIONA. Esta instrução soma um número ao valor armazenado em dest.

Ex: MOV AX, 0h ; AX agora é igual a 0h

ADD AX, 5h ; AX agora é igual a 5h

ADD AX, 10h ; AX agora é igual a 15h

 

Bem simples, não?

 

 

 

SUB <dest> <valor>

 

 

SUBTRAI. Acho que dá pra você adivinhar o que isso faz.

 

Ex: MOV AX, 13h ; AX agora é igual a 13h (19 decimal)

SUB AX, 5h ; AX agora é igual a 0Eh (14 decimal)

 

 

 

DEC <registrador>

 

 

DECREMENTA algo.

 

Ex: MOV AX, 13h ; AX agora é igual a 13h

DEC AX ; AX agora é igual a 12h

 

 

 

INC <registrador>

 

 

INCREMENTA algo.

 

Ex: MOV AX, 13h ; Adivinha...

INC AX ; AX = AX + 1

 

 

 

LOOP <rótulo/label>

 

 

Faz LOOPS (repetição) durante um certo tempo.

 

 

 

CALL <procedimento>

 

 

Para mim, um dos mais importantes, ele chama uma subfunção, ele execulta uma função definida e retorna ao codigo, veremos mais na frente a sua ultilidade.

 

 

 

CMP <AX, BX>

 

 

Ele compara, AX com BX. Mesma coisa do if no C.

 

EX:

mov eax, 0Eh // Eax = 0Eh

cmp eax, 0Eh // Ele vai comparar eax com 0Eh

 

 

 

 

 

EXERCICIOS:

 

1) Memorizar todas as instruções acima - não é tão difícil assim e não há tantas lá.

 

2) Tenha certeza que você entendeu as teorias.

 

Proxima Aula:

 

Aula Pratica

Novas instruções, e vamos criar alguma coisa na tmsrv.

 

Se tiverem duvidas, postém. Proxima aula amanha ou depois!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Que programa? Até agora só falo da linguagem ASM Registradores são componentes do processador. Vo posta um tuto que tenho aki com alguns conceitos basicos! Vo olha aki ve se tenho + coisa que possa ajudar, eu to estudando JAVA tenho algumas coisas aki que vão servir de ajuda pra uns.

 

Introdução – Conceitos Básicos

 

Constantes, Variáveis e Tipos de Dados

 

Variáveis e constantes são os elementos básicos que um programa manipula. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado.

Variáveis devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e as vezes um valor inicial. Tipos podem ser por exemplo: inteiros, reais, caracteres, etc. As expressões combinam variáveis e constantes para calcular novos valores.

 

Constantes

Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal.

 

Variáveis

Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável corresponde a uma posição de memória, cujo conteúdo pode se alterado ao longo do tempo durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante

 

Tipos de Variáveis

As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas, caracteres, Alfanuméricas ou lógicas.

 

Numéricas Específicas para armazenamento de números, que posteriormente poderão ser utilizados para cálculos. Podem ser ainda classificadas como Inteiras ou Reais. As variáveis do tipo inteiro são para armazenamento de números inteiros e as Reais são para o armazenamento de números que possuam casas decimais.

 

Caracteres Específicas para armazenamento de conjunto de caracteres que não contenham números (literais). Ex: nomes.

 

Alfanuméricas Específicas para dados que contenham letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente literais. Se usado somente para armazenamento de números, não poderá ser utilizada para operações matemáticas.

 

Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.

 

Declaração de Variáveis

As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais.

 

FIM

 

AX - o acumulador. Compreende AH e AL, os bytes alto e baixo de AX. Comumente usado em operações matemáticas e de E/S.

 

E/S = Entrada e Saida

 

Depois Edito e colo + coisa se ajuda alguma coisa! rsrsrs =]

E Parabéns Muito show " A Escola "!

 

EDIT

Queria pedir autorização para o MMMJR e dos que estão afim de aprender se eu posso posta sobre algoritmo aqui ou criar outro tópico, ou tu acha que vai atrapalha sua "aula" ou não a necessidade? Tenho uns tópicos da hora aki sobre algoritmo, arquitetura de processadores fala sobre registradores memorias e blabla... + se tu acha que ñ ah necessidade ou que possa confundir a galera por mim ta tranquilo!

Link para o comentário
Compartilhar em outros sites

Kadu obrigado por explicar os conceitos, amanha ou hoje ainda posto a segunda aula, vou ver se ja começamos a trabalhar na tmsrv para vcs entenderem melhor!

 

 

@lordlouco que programa??? Se estiver achando que asm é um programa, XD, não é!

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.