linguagem de montagem2 -...
TRANSCRIPT
![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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022022109/5c4968f193f3c34c5063f670/html5/thumbnails/27.jpg)
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