Prévia do material em texto
* * * Assembly Centro de Ciências e Tecnologia Departamento de Estatística e Computação Software Básico Apresentação de Monitoria * * * Apresentação Juliano Efson Norberto Sales 4º Semestre julianoens@gmail.com * * * Agenda A linguagem Assembly - Breve histórico Abordagem da apresentação Montagem e Linkedição Configuração de Ambiente Diretivas Sistemas de Numeração Hello World sem Hello World! Interrupção - Hello World! Operações aritméticas Funções Estruturas de controle Arquitetura e Segmentos de Memória Alocação de Variáveis Pilha Outros Assuntos Importantes Bibliografia Contato * * * A linguagem Assembly - Breve histórico Cenário e Motivação Aplicação atual * * * Comparação entre linguagens * * * Abordagem da apresentação Visão geral e principais estruturas e instruções; Comparação com linguagem de alto nível; Tutorial direcionado e indicação de materiais adicionais. * * * Linguagem, Montagem e Linkedição Linguagem voltada para arquitetura; Sintaxe relacionada com o montador. ATENÇÃO TASM e TLINK * * * Configuração de Ambiente Extração dos arquivos; Configuração da variável de ambiente; Teste. * * * Sistemas de Numeração Binário; Decimal; Hexadecimal; Conversão; Sintaxe para o montador. * * * Diretivas do Montador Definição; MODEL; CODE; Outras no futuro. * * * Hello World Sem Hello World! Ver a cara da aplicação; Conhecer a sintaxe geral; Tipos de Movimento; Finalização do programa; Como gerar o executável. pre.asm Cuidado com caminhos e nomes de arquivos grandes... * * * Interrupção – Hello World! Conceitução; Tipo de Interrupção; Funções; Parâmentros; Exemplos; Hello World! hello.asm * * * Solucionando o problema da impressão Tabela ASCII; Conversão. * * * Operações aritméticas Soma e subtração; ADD destino, parcela SUB destino, subtraendo INC destino DEC destino aritm.asm * * * Operações aritméticas Multiplicação: MUL divisor * * * Operações aritméticas Divisão: DIV divisor multDiv.asm * * * Funções Modularização; Reaproveitamento; Parametrização; Marcação; CALL; RET. func.asm * * * Estruturas de controle A vida das linguagens de programação; Desvios Incondicionais; Desvios Condicionais; Laço. * * * Desvios Incondicionais call; Interrupções; JUMP; Utiliza marcação. Exemplo. * * * Devios Condicionais Jumps condicionados; Ex.: JGE calculo Verificação de registradores de flag; Formas de alteração dos flags; CMP; Flag Zero; CX. * * * Compare - CMP Instrução CMP operando1, operando2 Flag por subtração. * * * Tabela de JUMPS * * * Outros Flags Flag Zero; JZ ou JE. Flag Zero CX JCXZ. * * * Desafio Como criar um laço, como por exemplo, um for da linguagem C utilizando os desvios condicionais e incodicionais? Ex: (...) for(i=0; i<10; i++) { Instrucao A; Instrucao B; } Instrucao C; (...) supondo que a variável 'i' foi declarada previamento como inteiro. * * * Solução (...) MOV CX, 10 laco: intrucao A intrucao B DEC CX JCXZ saida JMP laco saida: instrucao C (...) * * * Arquitetura e Segmentos de Memória Lembrando a teoria; Forma de acesso a memória; Capacidade máxima de endereçamento; Diretivas; Chegando ao futuro: Diretiva DATA * * * Alocação de Variáveis Motivação; Vantagens e desvantagens; De volta ao futuro: Diretiva Dx <identificador> Dx <valor_inicial> * * * x? * * * Manipulação de Memória com Interrupções de Escrita Função 02H x 09H 09H DS:DX = Endereço ? Caracter de parada (\0). @<nome_do_segmento> OFFSET memoria * * * Atenção MOV DS, @DATA ; Não funciona. MOV AX, @DATA ; Agora funciona. MOV DS, AX * * * Ver exemplo Aplicação da função 09H; Cola: men.asm * * * Manipulação de Memória com Interrupção de Leitura Função 0AH; Similar a 09H Formato do dado capturado: * * * Pilha Princípio (FILO); Diretiva STACK; Instruções: PUSH dado; POP destino; pilha.asm * * * Exercício Escrever uma função para converter de caracter (ASCII) para numero e vice-versa. * * * Outros Assuntos Importantes Outras Funções da Interrupção 21H; Instrução LOOP; Operações lógicas; Procedures. Importação de Bibliotecas; Desvios Condicionais de detecção de erro * * * Bibliografia Organização Estruturada de Computadores – Tanenbaum Professional Assembly Language - Richard Blum Wikipédia Outros Sitios: http://magnum.ime.uerj.br/~alexszt/cursos/softsis/material/asm/tutasm/program.html http://www.numaboa.com.br/informatica/oiciliS/assembler/textos/lingAssembly.php http://www.drpaulcarter.com/pcasm/ http://www.saladoprogramador.hpg.ig.com.br/assembler1.htm www.cise.ufl.edu/~mssz/CompOrg/CDA-lang.html * * * Grato pela atenção! julianoens@gmail.com