UNIVERSIDADE FEDERAL DE ITAJUBÁ
Instituto de Engenharia de Sistemas e Tecnologia da Informação
ELT007 - LABORATÓRIO DE MICROPROCESSADORES II
Roteiro de Laboratório 3
Objetivos:
•
•
Familiarizar-se com instruções de transferência de dados; e
Familiarizar-se com modos de endereçamento.
Material Necessário:
•
•
•
Ambiente de desenvolvimento Visual Studio;
Assembler MASM;
Material disponível no endereço http://kipirvine.com/asm/
Observações Importantes:
•
•
•
•
•
Todas as atividades de laboratório devem ser realizadas de forma individual;
Quando pertinente, necessariamente utilize o exemplo de estrutura de programa (template)
disponibilizado ao longo do roteiro;
Ao final de cada atividade presente neste roteiro, chame pelo professor responsável e mostre
a ele os resultados obtidos;
Quando solicitado, transcreva à folha de respostas os códigos-fonte desenvolvidos;
A folha de resposta deve ser levada impressa à atividade de laboratório.
Atividades
Utilize o tutorial “Creating a Project From Scratch” presente em http://kipirvine.com/asm/,
incluindo-se o passo 12, para preparar o ambiente de desenvolvimento para as atividades seguintes.
Atividade 1:
Escreva um programa que utilize as variáveis definidas no trecho de código seguinte e instruções
MOV para converter um valor numérico no formato “big endian” para um valor numérico no
formato “little endian”. O valor numérico de 32 bits equivale a 12345678h. O programa deve ser tal
que, a seu fim, a posição de memória littleEndian receba a versão “little endian” do valor numérico
presente na posição bigEndian.
.data
bigEndian
littleEndian
BYTE
DWORD
12h,34h,56h,78h
?
1
Ao fim, transcreva apenas o trecho do código-fonte desenvolvido para a folha de respostas.
Atividade 2:
Desenvolva um programa que utilize um ciclo (loop) para copiar todos os elementos de um array
WORD não sinalizado para um array DWORD não sinalizado. Utilize o template presente neste
roteiro e transcreva o código-fonte obtido para a folha de respostas.
Atividade 3:
Utilize um ciclo (loop) com endereçamento indireto ou indexado para inverter a posição dos
elementos de um array inteiro(isto é, o primeiro para o último, o segundo para o penúltimo, etc).
Não copie os elementos para outro array. Empregue os operadores SIZEOF, TYPE e LENGTHOF
para tornar o programa o mais flexível possível de forma que o tamanho e o tipo do array possam
ser futuramente alterados. Utilize o template presente neste roteiro e transcreva o código-fonte
obtido para a folha de respostas.
Estrutura de programa de exemplo (template)
; Program Template (Template.asm)
;
;
;
;
;
Program Description:
Author:
Creation Date:
Revisions:
Date: Modified by:
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
.data
; declare variables here
.code
main PROC
; write your code here
INVOKE ExitProcess,0
main ENDP
; (insert additional procedures here)
END main
; Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2015. 20
2
ELT007 - LABORATÓRIO DE MICROPROCESSADORES II
Folha de respostas - Roteiro de Laboratório 3
Aluno: ________________________________
Mat.:
Turma:
Atividade 1
Atividade 2
Atividade 3
3
Download

UNIVERSIDADE FEDERAL DE ITAJUBÁ Instituto de