Linguagem de Montagem



Documentos relacionados
Linguagem de Montagem

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução à Engenharia de Computação

Introdução à Arquitetura de Computadores

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

Linguagens de. Aula 01. Profa Cristiane Koehler

MATA49 Programação de Software Básico

Breve Histórico & Conceitos Básicos

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Arquitetura de Computadores Moderna

Introdução às Linguagens de Programação

Estrutura do tema ISC

Linguagem de Montagem 2. Operações e Operandos

ALP Algoritmos e Programação. . Linguagens para Computadores

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Capítulo 7 Nível da Linguagem Assembly

Sistemas Operacionais Aula 2

Linguagens de Programação

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

Introdução à Engenharia de Computação

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Organização de Computadores Software

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Edeyson Andrade Gomes

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Algoritmos DCC 119. Introdução e Conceitos Básicos

Software Básico (INF1018)

Computador Digital Circuitos de um computador (Hardware)

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Introdução à Arquitetura de Computadores

Algoritmos e Programação Aula 01 Introdução a Computação

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Programação de Computadores

O Windows é um software de sistema, que permite ao utilizador interagir com o computador e com os seus periféricos.

Sistemas Operacionais. Prof. André Y. Kusumoto

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Nesta aula... Analisamos na ultima aula a evolução e caraterísticas de computadores e linguagens de programação. Nesta aula iremos ver:

Introdução à Computação: Sistemas de Computação

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

ARQUITETURA DE COMPUTADORES. EMENTA Prof. Benito Piropo Da-Rin

Linguagem de Programação I. Aula 05 Linguagem C

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

Programação de. Programa. Bibliografia. Páginas electrónicas de PM. Regras das aulas de laboratório. Métodos de Ensino - Aulas

UFRPE Prof. Gustavo Callou

O COMPUTADOR. Introdução à Computação

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

MC-102 Aula 01. Instituto de Computação Unicamp

GBD PROF. ANDREZA S. AREÃO

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Organização e Arquitetura de Computadores I. de Computadores

Convertendo Algoritmos para a Linguagem C

Organização de Computadores 1

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Lição 1 Introdução à programação de computadores

Ementas Disciplinas Obrigatórias

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Sistemas Operacionais. Professor Leslier Soares Corrêa

Sobre C. Linguagem de Programação C

Máquinas Multiníveis

3 Revisão de Software

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquitetura de computadores

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Avaliação de Desempenho

Figura 1 - O computador

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

ANÁLISE DE DESEMPENHO DA PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PRIMOS UTILIZANDO PTHREAD E OPENMP 1

1. Introdução - contextos de aplicações

Paradigmas de Linguagens de Programação

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

Problema: Solução: Vantagens da estruturação em Níveis: Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Introdução

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AOS SISTEMAS OPERACIONAIS. Prof. Dr. Daniel Caetano

Arquitetura e Organização de Computadores

PROTÓTIPO DE LABORATÓRIO DE EXPERIMENTAÇÃO REMOTA MULTIPLATAFORMA CLIENTE ACADÊMICO: NADER ZANOTTO ORIENTADOR: MIGUEL ALEXANDRE WISINTAINER

Introdução à Programação Aula 2 Introdução à linguagem Python

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Prof. Vitório Bruno Mazzola INE/CTC/UFSC 1. INTRODUÇÃO

Sist i em em I a n I fo f rm r at m i at zad

Programação em papel quadriculado

Introdução a Programação Funcional

Linguagens de Programação

Organização de Computadores Como a informação é processada?

Sistemas Operacionais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Arquitetura do conjunto de instruções (ISA); características de instruções de máquina; tipos de operandos

Arquitetura de processadores: RISC e CISC

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

1. DADOS DE IDENTIFICAÇÃO

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

Transcrição:

Linguagem de Montagem Uma introdução à Programação Assembly do PC Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1

A Visão do Usuário sobre o Computador Depende do grau de abstração provido pelos níveis inferiores Vamos considerar uma hierarquia de 6 níveis Os níveis superiores protegem o usuário dos detalhes de baixo nível Os 2 níveis superiores são independentes do sistema Os outros 4 níveis são dependentes do sistema As linguagens de máquina e assembly são específicas de um determinado processador Existe uma correspondência de um-para-um entre uma linguagem de máquina e a linguagem assembly 2

A Visão do Usuário sobre o Computador (cont.) 3

O que é uma Linguagem Assembly (LA)? Linguagem de baixo nível Cada instrução executa uma tarefa de muito mais baixo nível quando comparada a uma instrução de linguagem de alto nível Correspondência um-para-um entre LA e LM Para a maioria das instruções da linguagens assembly, existe uma instrução equivalente em linguagem de máquina O Assembler (Montador) traduz de LA para LM Diretamente influenciada pelo conjunto de instruções e pela arquitetura do processador (CPU) 4

O que é uma Linguagem Assembly? (cont.) Alguns exemplos de instruções LA inc result mov class_size,45 and mask1,128 add marks,10 Algumas observações: Comandos em LA não são muito legíveis Mnemônicos são usados para indicar os comandos inc para incremento, mov para copiar Instruções LA são de baixo nível Instruções como mov A, B não podem ser usadas 5

O que é uma Linguagem Assembly? (cont.) Algumas instruções de Ling. de Alto Nível podem ser expressas diretamente em LA 6

O que é uma Linguagem Assembly? (cont.) Mas a maioria das instruções LAN requer mais que uma instrução LA 7

O que é uma Linguagem Assembly? (cont.) A legibilidade da LA é superior a da LM Instruções em LM são sequências de 1 s e 0 s 8

Vantagens das Linguagens de Alto Nível O desenvolvimento de programas é mais rápido Instruções em alto nível Poucas instruções para codificar A manutenção de programas é mais fácil Os programas são portáveis Contêm poucos ou nenhum detalhe dependente de máquina Podem ser usados em diferentes tipos de máquina O compilador traduz para a LM Programas em LA não são portáveis 9

Por que programar em LA? Duas razões principais: Eficiência Menor espaço Menor tempo de execução Acessibilidade aos recursos de hardware Eficiência no espaço Código assembly tende a ser compacto Eficiência no tempo Código assembly tende a executar mais rápido Apenas código assembly bem escrito executa mais rápido É fácil escrever código assembly que executa mais lento que o seu correspondente em ling. alto nível 10

Aplicações típicas Necessidade de acesso direto ao hardware Aplicações do sistema Compiladores, linkers, montadores Interfaces de rede, device drivers Partes do próprio Sistema Operacional Necessidade de software compacto Não é tanto uma necessidade atual Software para PDA e computadores de bolso Necessidade de eficiência na execução Bibliotecas gráficas Sistemas em tempo real Sistemas de controle de processos 11

Por que aprender LA? Algumas aplicações requerem código assembly Tecnicamente apenas uma parte do software é escrita em assembly normalmente associado a uma linguagem também eficiente como C LA pode ser usada como uma ferramenta para aprender Organização de Computadores Vários conceitos complexos da Computação passam a ser compreendidos a partir de uma abordagem prática Satisfação pessoal em aprender algo inerentemente útil e complexo 12

Desempenho: C versus LA Considerando o algoritmo Bubble Sort Tamanho do código executável Versão em C: 50.256 bytes Versão Assembly: 50.208 bytes Ganho desprezível Tamanho do código fonte: Versão em C: 1.340 bytes Versão em Assembly: 1.851 bytes Demonstra o baixo nível da programação Assembly 13

Desempenho: C versus LA (cont.) 14