Upload
dinhthien
View
221
Download
0
Embed Size (px)
Citation preview
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. Verificar a correção do código de instrução e substituir os mnemônicos pelos códigos numéricos binários equivalentes
2. Resolver as referências de memória
3. Reservar espaço em memória para o armazenamento das instruções e dados
4. 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.] [Operando(s)] [;Comentário]
loop: 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 - diz à CPU como organizar o
segmento
– MODEL - declara o modelo que vamos usar
– STACK - quanta pilha vamos alocar?
– DATA - o quê vai no segmento de dados
– CODE - o quê vai no segmento de código
– START - o início do seu código
– END - o fim do seu código
– TITLE - palavra de inicio do código
Mnemônicos – Instruções
� Operações Aritméticas
Operação Formato da instrução
– ADD - ADD <destino> <fonte>
– SUB - SUB <destino> <fonte>
– MUL - MUL <fonte>
– DIV - DIV <fonte>
Mnemônicos – Instruções
� Transferência de dados
– MOV - <destino>, <fonte>
� Operações Lógicas
– AND - <destino> <fonte>
– OR - <destino> <fonte>
– NOT - <fonte>
Registradores
� AX - o acumulador.– Comumente usado em operações matemáticas e de E/S
� BX - a base.– Comumente usado como uma base ou registrador apontador
� CX - o contador.– 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 DB 0 ;equivale a 00h
� A DB 10h
� WORD1 DW 0h ;equivale a 0000h
� CONTA DW 0150h
Um Programa em Assembly
TITLE programa
.MODEL SMALL
.STACK 200h
.DATA
.CODE
START:
MOV AX,B ;AX contem a variável B
SUB AX,A ;AX contem B - A
SUB AX,A ;AX contem B - 2A
MOV A,AX ;movimenta o resultado para A
END