Linguagem de montagem

Propaganda
Linguagem de Montagem 2
Operações e
Operandos
Revisão
Para executar uma tarefa qualquer, um
computador precisa receber instruções
precisas sobre o que fazer
Esse conjunto de instruções chamamos de
algoritmo
Isso constitui num PROGRAMA de
computador?
Revisão - Algoritmo vs. Programa
Um algoritmo não representa,
necessariamente, um programa de
computador,
Ele representa os passos necessários para
realizar uma tarefa
Sua implementação pode ser feita por um
computador, por outro tipo de autômato ou
mesmo por um ser humano.
Revisão - Algoritmo vs. Programa
Programa é a formalização de um algoritmo
em qualquer linguagem capaz de ser
transformada em instruções que serão
executadas por um computador gerando os
resultados esperados
O Programa é uma referência ao código fonte,
escrito em alguma linguagem de programação
Revisão - Linguagem de
Programação
Método padronizado para expressar instruções
para um computador
Conjunto de regras sintáticas e semânticas
usadas para definir um programa de
computador
Uma linguagem permite que um programador
especifique precisamente sobre quais dados
um computador vai atuar
Revisão - Linguagem de
Programação
A primeira e mais primitiva linguagem de
computador é a própria linguagem de máquina
Aquela que o computador entende diretamente
e pode ser diretamente executada pelos
circuitos do processador (pelo hardware)
Formada por 0 e 1
Imagine então um programa extenso escrito
apenas usando 1's e 0's
Revisão - Linguagem de
Programação
Cada família de computadores possui sua
própria linguagem de máquina.
Um programa em linguagem de máquina é
dependente do computador
Somente poderá ser executado em
computadores da mesma família
Ou seja para cada computador o programa
devia mudar
Revisão - Linguagem de Montagem
A primeira tentativa bem-sucedida para
resolver o problema acima descrito foi a
criação de uma linguagem em que os códigos
numéricos foram substituídos por mnemônicos
–
–
–
LOAD = carregar
ADD = somar
MOVE = mover dados entre os registradores
Revisão - Linguagem de Montagem
Essa linguagem simbólica recebeu o nome de
Assembly Language (Linguagem de
Montagem)
O programador não precisava decorar os
códigos numéricos que representavam as
diferentes instruções e os endereços reais de
armazenamento
Ele deveria decorar mnemônicos para as
instruções e definir nomes para as referências
dos endereços
Tradução
Um computador é sempre monoglota
Outro programa deve ler o programa escrito
numa linguagem X e traduzir para a linguagem
nativa do computador
A tradução da linguagem de montagem para a
linguagem de máquina é chamado de
montagem e feita pelo Montador
Montagem
Processo
Código Fonte
Tradução
Linguagem de
Máquina
Montagem
O código fonte é examinado, instrução por
instrução e é feita a tradução, gerando o
código que será executado
O código fonte neste processo é escrito em
Assembly
O código final é chamado de código objeto
Montagem
Os passos executados pelo programa
Montador são:
1.
2.
3.
4.
Verificar a correção do código de instrução e
substituir os mnemônicos pelos códigos numéricos
binários equivalentes
Resolver as referências de memória
Reservar espaço em memória para o
armazenamento das instruções e dados
Converter valores de constantes em binário
Linguagem de Montagem 8086
O 8086 é um microprocessador de 16 bits da
Intel
Foi desenvolvido em 1978
Utiliza a arquitetura x86
Utiliza uma linguagem de montagem de
mesmo nome
Elementos Básicos
Rótulo (Label)
–
–
–
Nomeia uma linha no código
Necessários para identificação de saltos;
Devem ser alfanuméricos começando por letras;
Código de operação (mnemônico)
–
especifica o tipo de instrução;
Elementos Básicos
Operandos (argumentos):
–
–
–
Registradores
Endereços de memória
Dados
Comentário
–
Forma de declarar a natureza da idéia codificada.
Elementos Básicos
Sintaxe
[Rótulo:] [Cod. oper.]
loop:
[Operando(s)]
[;Comentário]
MOV
AX,25h
; inicializa AX com 25h
ADD
AX,AX
; AX <-- AX + AX
Rótulos
Pode ser um rótulo de instrução, um nome de
sub-rotina, um nome de variável
Contendo de 1 a 31 caracteres, iniciando por
uma letra
Só pode conter letras, números e os
caracteres ? . @ _ : $ % .
Rótulos
Validos
–
–
–
LOOP1:
.TEST
@caracter
Inválidos
–
–
–
DOIS BITS
2abc
#42
Mnemônicos – Instruções
Cabeçalho
–
–
–
–
–
–
–
–
DOSSEG
segmento
MODEL
STACK
DATA
CODE
START
END
TITLE
- diz à CPU como organizar o
- declara o modelo que vamos usar
- quanta pilha vamos alocar?
- o quê vai no segmento de dados
- o quê vai no segmento de código
- o início do seu código
- o fim do seu código
- palavra de inicio do código
Mnemônicos – Instruções
Operações Aritméticas
Operação
– ADD
– SUB
– MUL
– DIV
-
Formato da instrução
ADD <destino> <fonte>
SUB <destino> <fonte>
MUL <fonte>
DIV <fonte>
Mnemônicos – Instruções
Transferência de dados
–
MOV
-
<destino>, <fonte>
Operações Lógicas
–
–
–
AND
OR
NOT
-
<destino> <fonte>
<destino> <fonte>
<fonte>
Registradores
AX - o acumulador.
–
BX - a base.
–
Comumente usado como uma base ou registrador apontador
CX - o contador.
–
Comumente usado em operações matemáticas e de E/S
Usado freqüentemente em loops
DX - o deslocamento
–
Similar ao registrador de base.
Variáveis
Cada variável possui um tipo e recebe um
endereço de memória;
Usa-se pseudo-instruções para definir o tipo
da variável;
O Montador atribui o endereço de memória.
Variáveis
Definição
Pseudoinstrução Entende-se por
DB
define byte (8 bits)
DW
define word (16 bits, 2 bytes
consecutivos)
DD
define doubleword (2 palavras, 4
bytes consecutivos)
DQ
define quadword (4 palavras, 8 bytes
consecutivos)
DT
define ten bytes (10 bytes
consecutivos)
Variáveis
Eexemplo:
Alfa
A
WORD1
CONTA
DB
DB
DW
DW
0
;equivale a 00h
10h
0h ;equivale a 0000h
0150h
Um Programa em Assembly
TITLE programa
.MODEL SMALL
.STACK 200h
.DATA
.CODE
START:
MOV AX,B
SUB AX,A
SUB AX,A
MOV A,AX
END
;AX contem a variável B
;AX contem B - A
;AX contem B - 2A
;movimenta o resultado para A
Download