27
Linguagem de Montagem 2 Operações e Operandos

Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Embed Size (px)

Citation preview

Page 1: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Linguagem de Montagem 2

Operações e

Operandos

Page 2: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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?

Page 3: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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.

Page 4: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 5: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 6: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 7: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 8: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 9: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 10: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 11: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Montagem

� Processo

Código Fonte

Tradução

Linguagem de

Máquina

Page 12: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 13: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 14: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 15: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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;

Page 16: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Elementos Básicos

� Operandos (argumentos):

– Registradores

– Endereços de memória

– Dados

� Comentário

– Forma de declarar a natureza da idéia codificada.

Page 17: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 18: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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 ? . @ _ : $ % .

Page 19: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Rótulos

� Validos– LOOP1:

– .TEST

– @caracter

� Inválidos– DOIS BITS

– 2abc

– #42

Page 20: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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

Page 21: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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>

Page 22: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Mnemônicos – Instruções

� Transferência de dados

– MOV - <destino>, <fonte>

� Operações Lógicas

– AND - <destino> <fonte>

– OR - <destino> <fonte>

– NOT - <fonte>

Page 23: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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.

Page 24: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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.

Page 25: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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)

Page 26: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

Variáveis

� Eexemplo:

� Alfa DB 0 ;equivale a 00h

� A DB 10h

� WORD1 DW 0h ;equivale a 0000h

� CONTA DW 0150h

Page 27: Linguagem de montagem2 - apostilas.wdfiles.comapostilas.wdfiles.com/.../arquitetura/Linguagem_de_montagem2.pdf · A primeira e mais primitiva linguagem de computador é a própria

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