UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Documentos relacionados
Atividade prática: Criando e rodando um programa assembly

8. Instruções de multiplicação e divisão

Universidade de São Paulo

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

MATA49 Programação de Software Básico

7. A pilha e subrotinas

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

Introdução. Programando em Assembly. Primeiro Exemplo (2) Primeiro Exemplo (1) Linguagem Assembly do 8086/8088

Relatório MC404 - Trabalho 2 - Prof. Rodolfo

Universidade de São Paulo

Interface Hardware/Software. Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Atividade prática: Rodando o programa SOMA

Programando em Assembly

Laboratório de Sistemas Processadores e Periféricos

Aula 14 Funcionamento de Processadores (Visão específica)

7. Instruções lógicas, de deslocamento e de rotação

Laboratório de Microprocessadores e Microcontroladores

Laboratório de Microprocessadores e Microcontroladores

Universidade de São Paulo

Laboratório de Microprocessadores e Microcontroladores

NEANDERWIN - Resumo operacional

ESTV-ESI-Arquitecturas de Computador-Trabalho Prático Nº7-1/6

EEL Microprocessadores. Parâmetros e Variáveis Locais 4/5/2010. Capítulo 7 Livro Ziller. Prof. Raimes Moraes GpqCom EEL UFSC

Funções de Entrada e Saída

EEL Microprocessadores

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

Microprocessadores. Organização de Memória

Existem três formas básicas de efectuar operações de entrada/saída:

MÓDULO. Conjunto de Instruções do 8086/88 Aritméticas, lógicas, deslocamento e rotação M 02

José Augusto Fabri. Assembly Básico

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

Programação ao nível da máquina. Operações lógicas e aritméticas

Arquitectura de Computadores

Exercício 1. Abre o programa Scratch e executa as seguintes instruções: a) Clica na categoria de comandos Movimento

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Organização Funcional

Arquitetura de Computadores II

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova

Linguagem de Montagem

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

DESCRIÇÃO DA PORTA PARALELA DA IMPRESSORA

Folha Prática Tipos de dados estruturados (vetores e marizes) 1. Tipos de dados estruturados (vetores e matrizes)

4ª Lista de Exercícios de Programação I

Cerne Tecnologia e Treinamento

Arquitectura de Computadores 2006/2007 2º Semestre Repescagem 1º Teste - 11/07/2007. Folha de Respostas

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Anderson L. S. Moreira

Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva bs@cin.ufpe.br lauro Moura lauromoura@gmail.com

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 18

Solução Lista de Exercícios Processadores

Introdução à Arquitetura de Computadores

Arquitetura de Computadores II

Introdução à Arquitetura de Computadores

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE

Laboratório de Microprocessadores e Microcontroladores

OTermo Assembly significa montagem, ou seja, linguagem

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

4ª Lista de Exercícios de Programação I

Instruções de repetição

Linguagem de Montagem 2. Operações e Operandos

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2007/2008

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

Desenho de algoritmos

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

Microprocessadores e Microcontroladores. Prova Substitutiva Uma Solução

Uso de interrupções de BIOS/DOS

Disciplina de Algoritmos e Programação

Arquitectura de Computadores 3º TESTE

Prof. Adilson Gonzaga

Instruções Assembly x Código de máquina Microprocessador Didático

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

LCDs Inteligentes. LCD Inteligente. Gabriel Kovalhuk DAELN / UTFPR

Estudar os passos que devem ser feitos (ponto de partida até o objetivo)

Introdução. introdução. tópicos. referência. INF1005 Programação I Prof. Hélio Lopes 8/14/13

INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO. Sistemas Digitais II. Filipe Moreira

FORMATO DO PROGRAMA FONTE

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA DE CIÊNCIAS E TECNOLOGIA. ECT1203 Linguagem de Programação Turma Prof.

2º Estudo Dirigido CAP 3

Caracteres e Cadeias de Caracteres

Sistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores)

Engenharia Electrotécnica/ Engenharia Informática Microprocessadores e Aplicações

Arquitectura de Computadores 2007/2008 2º Semestre 1º Teste (A) - 30/04/2008. Folha de Respostas

Conjunto de Instruções e Modelos de Arquiteturas

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

( 5,2 ). Quantas soluções existem?

Programação de Computadores IV. Estruturas de repetição Slides cedidos por Bruno Augusto Dorta Marques

Representação de Dados e Sistemas de Numeração

Critérios de Divisibilidade

Programação científica C++

Linguagem e Ambiente Scratch. Introdução à Laboratório Prof.Alfredo Parteli Gomes

CONCURSO PETROBRAS DRAFT. Microprocessadores, CLPs e Arquiteturas Computacionais. Questões Resolvidas

Relatório MC404 - Trabalho 3 - Prof. Rodolfo

Instruções de repetição

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

ANEXO A. Prof. Erico Lisboa 53

Aula 10 Microcontrolador Intel 8051 Parte 2

TÉCNICO DE INFORMÁTICA - SISTEMAS

Transcrição:

Exercícios Resolvidos Assembly NOTA: Seguem propostas para resolução dos exercícios das folhas práticas. Tenha em consideração que existem sempre diversas possibilidades para a resolução de um problema. [FP_N], em que FP é o número da folha prática e N é o número de exercício nessa folha prática. [FP2_1] Desenvolva um programa para escrever no ecrã 20 vezes a palavra "UBI"; escrita equ 40h ;função de escrita ecran equ 1 ;ecran mov [cont], 20 ciclo: mov ah, escrita mov bx, ecran mov cx, 4 mov dx, msg dec [cont] jnz ciclo mov ah, 4ch msg db "UBI", 10 cont rb 1 [FP2_2] Desenvolva um programa que contenha um ciclo em que a cada iteração escreve o próprio valor da variável de controlo. Considere que o ciclo se repete no máximo 9 vezes; escrever equ 40h ;função de escrita ler equ 07h ;função de leitura ecran equ 1 ;ecran terminar equ 4ch ;retorno ao SO mov [cont], 20 ciclo: ;separar a variável de controlo em dezenas/unidades mov ah,0 mov al,[cont] ;AX=dividendo mov dl,10 ;DL=divisor

div dl ;AL=quociente AH=resto mov [dezenas],al ;guarda o algarismo das dezenas mov [unidades],ah ;guarda o algarismo das unidades ;escrever algarismo das dezenas add byte[dezenas],48 ;converte para ASCII mov ah,escrever mov cx,1 mov dx, dezenas sub byte[dezenas],48 ;algarismo das unidades add byte[unidades],48 ;converte para ASCII mov ah,escrever mov cx,1 mov dx, unidades sub byte[unidades],48 ;mudar de linha mov ah,escrever mov dx,novalinha dec [cont] jnz ciclo ;para o programa parar mov ah, ler ;terminar (retorno ao SO) ;dados cont rb 1 dezenas rb 1 unidades rb 1 novalinha db 10 msg db "UBI" [FP3_1] Desenvolva um programa para ler do teclado dois números, entre 0 e 9 inclusive, e apresente no ecrã o valor da sua soma; escrita equ 40h ;escrita ecran equ 01 ;ecran leitura equ 3Fh ;leitura teclado equ 00 ;teclado CR equ 0Dh ;Carriage Return

LF equ 0Ah ;Line Feed terminar equ 4Ch ;terminar ;pedir um número mov cx,16 mov dx,pergunta_primeiro_valor ;ler o valor do teclado (um só algarismo, 0..9) mov ah,leitura ;ler mov bx,teclado ;do teclado ;nº de bytes a ler mov dx,primeiro_valor ;aponta para a variável que guarda os dados lidos ;consumir o CR+LF inseridos pelo teclado ;nada vai ser feito com eles mov ah,leitura mov bx,teclado mov cx,2 mov dx,crlf sub byte[primeiro_valor],48 ;pedir um número mov cx,16 mov dx,pergunta_segundo_valor ;ler o valor do teclado (um só algarismo, 0..9) mov ah,leitura ;ler mov bx,teclado ;do teclado ;nº de bytes a ler mov dx,segundo_valor ;aponta para a variável que guarda os dados lidos ;consumir o CR+LF inseridos pelo teclado ;nada vai ser feito com eles ;mov ah,leitura ;mov bx,teclado ;mov cx,2 ;mov dx,crlf ; sub byte[segundo_valor],48 mov al,[primeiro_valor] add al,[segundo_valor] mov [soma],ax ;guarda a soma

;separa as dezenas das unidades mov ax,[soma] mov dl,10 div dl mov [dezenas],al mov [unidades],ah ;escreve mensagem mov cx,12 mov dx,resultado ;escreve dezenas add byte[dezenas],48 mov dx,dezenas ;escreve unidades add byte[unidades],48 mov dx,unidades ;muda de linha mov cx,02 mov dx,mudalinha pergunta_primeiro_valor db 'Primeiro Valor? ' pergunta_segundo_valor db 'Segundo Valor? ' resultado db 10,'Resultado = ' mudalinha db CR,LF primeiro_valor rb 1 ;primeiro valor a ser lido do teclado segundo_valor rb 1 ;segundo valor a ser lido do teclado crlf rb 2 ;para ler o CR+LF do teclado soma rw 1 ;vai conter o quadrado de 'valor' dezenas rb 1 ;algarismo das dezenas unidades rb 1 ;algarismo das unidades

[FP3_2] Desenvolva um programa para ler do teclado um número, entre 0 e 9 inclusive, e apresente no ecrã o valor do seu quadrado; escrita equ 40h ;escrita ecran equ 01 ;ecran leitura equ 3Fh ;leitura teclado equ 00 ;teclado CR equ 0Dh ;Carriage Return LF equ 0Ah ;Line Feed terminar equ 4Ch ;terminar ;pedir um número mov cx,8 mov dx,pergunta ;ler o valor do teclado (um só algarismo, 0..9) mov ah,leitura ;ler mov bx,teclado ;do teclado ;nº de bytes a ler mov dx,valor ;aponta para a variável que guarda os dados lidos ;consumir o CR+LF inseridos pelo teclado ;nada vai ser feito com eles ;mov ah,leitura ;mov bx,teclado ;mov cx,2 ;mov dx,crlf ; sub byte[valor],48 mov al,[valor] mov bl,[valor] ;multiplica por si própio mul bl ;ax=al*bl=valor*valor mov [quadrado],ax ;guarda o quadrado ;separa as dezenas das unidades mov ax,[quadrado] mov dl,10 div dl mov [dezenas],al mov [unidades],ah ;escreve mensagem mov cx,12 mov dx,resultado

;escreve dezenas add byte[dezenas],48 mov dx,dezenas ;escreve unidades add byte[unidades],48 mov dx,unidades ;muda de linha mov cx,02 mov dx,mudalinha pergunta db 'Valor? ' resultado db 'Resultado = ' mudalinha db CR,LF valor rb 1 ;valor a calcular o quadrado crlf rb 2 ;para ler o CR+LF do teclado quadrado rw 1 ;vai conter o quadrado de 'valor' dezenas rb 1 ;algarismo das dezenas unidades rb 1 ;algarismo das unidades

[FP4_1] Desenhar linha vertical terminar equ 4ch ;selecciona modo de vídeo mov ah, 4FH mov al, 02 mov bx, 13h ;modo 13H int 10h ;desenha uma recta horizontal/vertical mov byte[cont], 100 ;tamanho da linha (em pixeis) ;coordenadas iniciais mov cx,50 ;coluna mov dx,50 ;linha ciclo: mov ah,0ch ;pixel mov al,2 ;verde mov bh,0 int 10h inc cx ;para a linha horizontal inc dx ;para a linha vertical dec byte[cont] jnz ciclo ;desenhar mais um pixel ;leitura dummy para parar o ecran cont rb 1 ;vai controlar o tamanho da linha