Montador para Intel TASM - Turbo Assembler

Slides:



Advertisements
Apresentações semelhantes
SOFTWARE BÁSICO.
Advertisements

Sequences Marilde Santos. O que são Sequences? Valores sequenciais podem ser gerados automaticamente pelo Oracle com o uso de sequences. A sequence gera.
Assembly Language for Intel-Based Computers, 5th Edition
Assembly Language for Intel-Based Computers, 5 th Edition Chapter 8: procedimentos avançados (c) Pearson Education, All rights reserved. You.
Manipulação de Arquivos de Dados
PROCEDIMENTOS COM RECURSIVIDADE
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ESTRUTURA DE UM PROGRAMA
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Capítulo 10 Arrays. 2Capítulo 10 – Arrays Arrays Introdução Tipo do array Tamanho do array Preenchendo o array Varrendo um array Array com 2 dimensões.
Grupo Paralelismo – Unesp RC
FORTRAN 90 Denise Yumi Takamura.
SQL Procedural Junho/2006.
SQL procedural – parte 2.
SISTEMAS DE NUMERAÇÃO Material elaborado pelo Prof. José Luiz Mendes e alterado pela Profa Janine.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Instruções de manipulação de strings Registradores implícitos –[E]SIíndice para string fonte –[E]DIíndice para string destino –ESsegmento do string destino.
Montador para Intel TASM - Turbo Assembler
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Utilização do montador Daedalus
(As bases da civilização atual)
Multiplicação em binário
1. Equivalência entre portas 2. Derivação de expressões booleanas 3
Teste Estrutural de Software
(Como implementar multiplicação e divisão uma vez só :-)
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Conceitos iniciais Hardware/Software
CES-11 LAB 03 Bitmap Quadtree
CES-41 COMPILADORES Capítulo IV Complementos de Análise Léxica.
CES-41 COMPILADORES Aulas Práticas
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
O TÍTULO DO TRABALHO DEVE SER EM FONTE VERDANA, TAMANHO 66, LETRAS MAIÚSCULAS, EM NEGRITO SOBRENOME, Autor 1., SOBRENOME, Autor 2…., Verdana, 32, negrito,
FUNDAÇÃO CARLOS CHAGAS
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 5a série de slides Versão 26/04/2012.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
ANEXO-1 : INSTRUÇÕES(ROTINA)
ARQUITETURA DE COMPUTADORES ANEXO-1: INSTRUÇÕES (LOGICAS) AND DE DADOS ENTRE REGISTRADORES REG 0 :AH,AL,AX,BH,BL,BX,CH,CL,CX,DH,DL,DX,SI,DI,SP,BP,CS, DS,ES,SS.
ANEXO-1: INSTRUÇÕES (MOVIMENTAÇÃO DE DADOS)
ARQUITETURA DE COMPUTADORES SOFTWARE PROGRAMA SEQUENCIA DE INSTRUÇÕES
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
Organização de Sistemas de Computadores
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Marco Antonio Montebello Júnior
The Data Warehouse Toolkit
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Curso de Programação em C++
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
Assembly x86.
A ULA P RÁTICA - A SSEMBLY Ciro Luiz Araujo Ceissler.
Aula Prática - Assembly
João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.
Prática de Programação Assembly 8086
Interface Hardware/Software
2 -1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Arrays e modos.
Interface Hardware Software
Ney Laert Vilar Calazans
Transcrição da apresentação:

Montador para Intel TASM - Turbo Assembler

Passos Principais Escrever o programa fonte (xx.ASM) Usar o seu editor de texto preferido Utilizar o montador (TASM) Geração de código objeto (xx.OBJ) Utilizar o carregador (TLINK) Geração de código executável (xx.EXE) Utilizar o depurador (CodeView, Debug, TD)

Formatos de linha Linha de instrução Linha de diretiva rótulo: prefixo instrução operandos ; comentários Linha de diretiva nome diretiva operandos ; comentários tudo depois de ponto-e-vírgula é comentário zero, um ou dois seguido de dois pontos (usado para desvios) quando necessários sem dois pontos (usado para definir operandos, segmentos e procedures)

Nomes de variáveis Letras, dígitos e os símbolos @, _ e $ Nome deve iniciar por letra (não pode ser dígito) Recomenda-se não usar _ e @ Palavras reservadas não devem ser usadas Mnemônicos, Nomes de diretivas, Nomes de registradores Sem limite de comprimento Mas o montador considera somente os primeiros 31 caracteres

Números Decimal Binário Hexadecimal Sistema default Dígitos de 0 a 9 Dígitos 0 e 1 Terminado por B Hexadecimal Dígitos 0 a 9, letras A a F Deve iniciar por dígito (usar 0 se iniciar por letra) Terminado por H

Definição de Constantes Diretiva EQU Associa um nome a um número Não utiliza espaço de memória Exemplos MAXIMO EQU 32 MENOS_UM EQU 0FFH ZERO EQU 0 SETE EQU 0111B

Definição de Espaço para Variáveis Diretivas DB, DW, DD, DQ Reserva um Byte, Word, DoubleWord ou QuadWord Reserva espaço em memória Exemplos VAR1 DB 5 ; reserva um byte com o nome de VAR1 e inicializa com 5 VAR2 DW 0FH ; reserva palavra com o nome de VAR2 e inicializa com 15 VAR3 DW ? ; reserva uma palavra com o nome de VAR3 e não inicializa AB DB 'AB' ; string armazenado como 4142H BA DW 'AB' ; string armazenado como 4241H END$AB DW AB ; inicializa com offset da variável AB

Definição de Espaço para Variáveis Exemplos TBL1 DW 6 DUP(0) ; reserva seis palavras ; a 1ª com o nome de TBL1 e ; inicializa todas com 0 TBL2 DB 12 DUP(?) ; reserva doze bytes ; o 1º com o nome de TBL2 e ; não inicializa NUM DW 1234H ; armazena 34H em NUM e 12H em NUM+1 DB 0 ; reserva um byte sem nome com valor 0 PILHA DW 1024 DUP (?) ; reserva espaço para 1024 palavras

Definição de Espaço para Variáveis Exemplos DIGIT DB '0123456789' ; dez bytes alocados SINGLE$QUOTE DB '''' ; um byte alocado PRIMES DW 2,3,5,7,11,13,17 ; sete palavras alocadas MSG DB 'Meu primeiro programa Assembler',0DH,0AH Strings podem ter até 255 caracteres Listas podem ter até 16 elementos

Definição de Nomes (Rótulos) Diretiva LABEL Para identificar instruções SOMA_VETOR LABEL NEAR ADD AX,VETOR[BX] Forma abreviada: SOMA_VETOR: ADD AX,VETOR[BX] São possíveis dois ou mais rótulos: SOMA_VETOR_ACESSO_EXTERNO LABEL FAR

Definição de Nomes (Rótulos) Diretiva LABEL Para identificar operandos ARRAYW LABEL WORD DW 1000 DUP(0) Forma abreviada: ARRAYW DW 1000 DUP(0) São possíveis dois ou mais rótulos: ARRAYB LABEL BYTE

Acessando características de símbolos OFFSET – fornece o deslocamento do símbolo dentro do segmento MOV BX, OFFSET VAR SEG – fornece o segmento do símbolo MOV BX, SEG VAR PTR –altera o tipo de um símbolo. Por exemplo, se VAR foi definida como palavra, a instrução INC BYTE PTR VAR acessa VAR como um byte

Declaração, associação e inicialização de segmentos Diretiva: SEGMENT Formato: [seg_name] SEGMENT [param. opcionais] ……… ……... [seg_name] ENDS

Declaração, associação e inicialização de segmentos Diretiva: ASSUME Formato: ASSUME seg_reg:seg_name [, ... ] Função: associa segmentos lógicos (criados através do montador) com segmentos físicos (endereçados por CS, DS, SS, ES)

Declaração, associação e inicialização de segmentos Por instruções assembler Função: carrega os valores adequados nos registradores de segmento CS inicializado pelo sistema operacional DS, SS, ES devem ser inicializados pelo programa

Declaração, associação e inicialização de segmentos Exemplo ARRAYS SEGMENT AR1 DW 100 DUP(0) AR2 DW 500 DUP(0) ARRAYS ENDS SUM SEGMENT ASSUME CS:SUM, DS:ARRAYS START: MOV AX, ARRAYS MOV DS, AX ………. SUM ENDS

Declaração, associação e inicialização de segmentos Exemplo STK1 SEGMENT DW 1000 DUP(0) ; define 1000 palavras (2000 bytes) STK1 ENDS STK_INIT SEGMENT ASSUME CS:STK_INIT, SS:STK1 MOV AX,STK1 MOV SS,AX MOV SP,2000 ; primeiro PUSH coloca SP em 1998 …… STK_INIT ENDS

Exemplo DATA SEGMENT VAR1 DB 0 DATA ENDS DATA2 SEGMENT VAR2 DB 0 CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA2 MOV AX,DATA MOV DS,AX MOV AX,DATA2 MOV ES,AX MOV VAR1,99 ; VAR1 endereçado por DS MOV VAR2,99 ; VAR2 endereçado por ES CODE ENDS

Declaração de subrotinas (procedures) Diretivas: PROC (inicio de subrotina) ENDP (fim de subrotina) Formato: name PROC [ NEAR / FAR ] name ENDP Função: PROC e ENDP delimitam um bloco que contém uma subrotina

Programa Exemplo PILHA SEGMENT STACK DB 32 DUP (‘STACK---’) PILHA ENDS DADOS SEGMENT MENSAGEM DB ‘Hello World !’,0DH,0AH TAMANHO EQU $-MENSAGEM CONTADOR DB ? DADOS ENDS

CODIGO SEGMENT ASSUME CS:CODIGO,SS:PILHA,DS:DADOS START: MOV AX,DADOS ; Inicializa segmento de dados MOV DS,AX MOV CONTADOR,10 DE_NOVO: CALL FRASE DEC CONTADOR JNZ DE_NOVO MOV AH, 4CH ; Retorna ao DOS INT 21H FRASE PROC NEAR MOV BX,0001H LEA DX, MENSAGEM MOV CX, TAMANHO MOV AH,40H INT 21H ; Escreve mensagem RET FRASE ENDP CODIGO ENDS END START