Sistemas Computacionais - Linguagens de Montagem

7.93k views1891 WordsCopy TextShare
UNIVESP
univesp.br Eixo de Computação - COM210 Univesp - Universidade Virtual do Estado de São Paulo Profes...
Video Transcript:
E aí [Música] e não mas hoje nós vamos falar um pouquinho Mais especificamente sobre a linguagem de montagem tá nós vamos entender aí as partes que compõem uma instrução de montagem Essa é a estrutura de sentença da linguagem de montagem ela tem basicamente quatro elementos o rótulo o mnemônico os operandos operando e uma sessão é de comentário caso seja necessário então aí como vocês estão vendo na figura você tem um rótulo e o comentário que são funcionais e o nome simbólico né o mnemônico e o operando Então só pode ter zero ou mais operando E
aí o nome simbólico você tem aí o o molde ou lá me de diretivo aí que é o que vai estar escrito nessa parte então é nessa sequência como aí tá apresentada na Vamos agora falar de cada uma dessas partes e o rótulo ele permite que o montador defina como equivalente ao endereço para o qual vai ser carregado aí o primeiro byte do código objeto gerado por uma instrução então ele é o identificador da instrução ou de uma constante né E aí o que ele vai fazer é que isso vai equivaler ao endereço aí onde
isso vai ser carregar o rótulo ele pode ser usada tanto como endereço como dado né como dados no campo endereço de uma outra instrução então aí os rótulos eles também eles têm a função de desvio né como nesse exemplo aí você tem uma instrução de desvio Nessa situação você tem aí um rótulo L2 Você tem o nome simbólico que é o sub né me ache e E deste ano Esses são os operados então o que que você quer dizer com essa instrução né com essa linha é subtrai o conteúdo do registrador e DX do conteúdo
do registrador né e ache e armazena no resultado e a x a é como que eu sei né o outro e Cold aí subir né a instrução disso se traçam a na próxima linha você tem aí é um outro comando que adianta L2 Então significa pula para L2 Então nesse exemplo o Como é o programa ele vai continuar nesse laço aí fazendo essa subtração né até que o resultado seja zero ou negativo então quando a instrução JG né diabo é executada o resultado O resultado é positivo o processador Coloca o endereço equivalente ao rótulo L2
lá no contador de programa lá dos nossos registradores do nosso processador é porque que a gente usa a foto né o rótulo ele possibilita que a posição do programa né ela consiga ser localizada mais fácil né E também não contra ele pode ser movido o ouvido né com facilidade se a gente precisar corrigir o programa né o montador automaticamente muda o endereço de todas as instruções que usam aquele rosto né naquele módulo quando esse programa Sports remontar o programador também não precisa fazer cálculo de endereço de memória né apenas ele o usa com a quando
ele tiver necessidade Esse é o meu é Mônico ele é o nome da operação ou da função da sentença ali da linguagem de montagem e demontagem ele vai identificar operação a função é E no caso de instrução de máquina esse mnemônicos nome simbólico né ele vai estar e associado ao ouvir Cold aí que é correspondente né então ele pode corresponder a uma instituição de makino É Por Esse é associado por esse eu ficou onde ou uma diretiva aí do montador ou mesmo uma macro os operandos que estão a próxima sessão eles servem para especificar dados
necessários para a operação naquele nosso outro exemplo a gente tinha o mnemônico ou na simbólico ou é a instrução subtrair E aí a e esperando né que eram os dois registradores né então para quê que não serviam né para especificar os dados que a gente vai usar nessa operação de subtração tá uma sentença da linguagem de montagem inclui 10 ou mais operamos e cada operando identifica aí um tipo de referência né o valor aí que é imediato né o registrador uma posição de memória a linguagem de montagem ela conhece Convenções aí para você distinguir os
três tipos de referência de operando a gente vai vem próximas aulas e Índia carece modo aí de endereçamento é nessa figura né vocês vão ver aí que para um arquitetura Intel x86 né um comando de linguagem de montagem pode se referir ao operando o registrador pelo nome é a figura ilustra os registradores de propósito Geral do x86 né E aí os operandos eles vão vou ser chamados pelos nossos aí códigos em assembly né o os operamos aí com esse registradores e o montador que vai traduzir o nome simbólico e eu identificador aí binário do registrador
é e última seção é sessão de comentários ela começa com um caractere especial né sinalizando aí para o montador que é o restante da linha né é a minha o restante é um comentário né E aí o montador sabe e isso deve ser ignorado né então todas as linguagens de montagem elas permitem essa inserção de comentários o comentário ele pode estar do lado direito de um co a linguagem de montagem ou mesmo o Palma linha completa do texto em relação as sentenças né Nós temos alguns tipos de sentenças aí que a gente faz em programas
usando a linguagem de montagem existe então a sentença comentário que essa que a gente falou né que a gente escutem o comentário existe o sentença do tipo instrução e foi aquela que a gente viu no Exemplo né é subir e o nome dos registradores né então você não tem a situação é o tipo de sentença com representações simbólica de instruções né de linguagem de Mário existem a sentença chamadas de diretivas né que são conhecidas aí como pseudo-instruções elas fazem parte da linguagem de máquina mas elas não são diretamente traduzidas aí uma elas fazem parte de
um a montagem mas elas não são automaticamente traduzidas para a linguagem de máquina né Elas acabam sendo aí é se ele tem os executáveis né então a gente a gente como a gente fez né gente tinha diretiva também lá em programas e da semana passada né a gente tinha lá os tenido né aquele símbolo Zinho lá do hashtag E aí a gente tenha diretiva né aqui também a gente tem diretiva a diretiva são instruções para o montador executar ações específicas durante o processo de montagem né Que ações são essas definir uma constante de deixar uma
área de memória para armazenar dados inicializar a algumas áreas de memória colocar tabela soldados na memória e permitir também que você chaminé passa referência a outros programas é esse quadro aí ele ilustra algumas é de montagem é do montador na se né um montador aí a tempo Assembleia era reconhecido né que vende netwild assembler e um exemplo de diretiva é uma por exemplo aí vocês vão encontrar uma uma o conjunto aí uma sequência de sentença né Por exemplo l2db a é eu "do ar né que é o que o Bart industrializado para o código a
que a né E aí se você procurar uma tabela o a equivale a 65 depois você tem Movie A L aí tenho Hélio né você vai copiar o byte que está em l-1 para o para né a l e depois você tem movie EA xl1 que acaba armazenando o endereço do byte que está em l n r e l a x né no registrador e ache e movie depois L1 o h né que aí finalmente ele copia o conteúdo DH no byte aí que estava no L1 é além das diretivas nós temos macro e sub-rotina
a macro ela é uma sessão do programa que pode ser usada diversas vezes né sendo chamada aí a partir de qualquer ponto do programa A diferença é que a sub-rotina né Ela é tratada pelo rádio em tempo de execução e as lá para os elas são consideradas pelo montador já no tempo de montagem então agora a gente tem aí dois exemplos né o primeiro aí você tem uma macro né onde você tem é Marco de uma linha Você tem uma definição aí de uma de um b x = 2x né e um artista igual o
mais B Oi e aí quando você tá fazendo o seu programa de montagem e ela e quando você tiver uma sentença de instrução por exemplo Igual essa né movie a 8 para assistir né O que ele vai fazer ele vai substituir né a montadora ele vai expandir essa essa sentença que ia ser instrução substituindo esse a oito né ou aqui o ex é oito né Então aí você vai ter essa Na verdade essa situação né movie 1 + 2 x 8 que você tinha aqui né ou uma x né como essa definição e aí você
vai ficar com esse resultado aí vai ser colocado em a x né 8210 mas um 11 vai ser colocado o valor 11 em X é finalmente aqui a gente tem um exemplo de um programa né E a gente vai ver agora esse programa em uma linguagem de montagem nesse programa se você tem aí o programa que calcula o maior divisor comum de dois números inteiros ahi A e B e a gente tem aí a definição que maior divisor comum de a e b g c d a e b de tal né que seja o máximo
é o k tal quicar é divisor de ar de bebê e Cabra tá é divisor de ar e ficar também a divisor de bebê né então Na expressão cá é esse valor aí divisor de ar se não houver o resto da divisão e o algoritmo de Euclides né para o maior divisor comum a gente tem esse teorema aí que diz para qualquer inteiro positivo A e B nós temos que o GC de da e B é igual o GC de DB A moddb então é risco esse programa aí tá e realizando então né se outro
slide nós temos aí o programa é escrito é compilado né na primeira parte aqui da figura né ó e Aqui nós temos o programa se ele fosse escrito diretamente na linguagem de montagem né então a gente acaba vendo que na quando ele é compilado ele fica maior né ele faz mais movimentações aí como a gente falou na aula passada né quando a gente é que a utilização né no nosso compilador a gente pode sentar e escrever directamente né em linguagem de montagem né ou certeza tem - instruções e menos movimentações e consequentemente aí o a
utilização é um desempenho melhor se comparado ao programa que automaticamente gerado a partir desse desse programa aqui anterior então acho que aqui fica bem para a diferença né as duas versões aí do programa é então era isso que eu queria mostrar para vocês espero que vocês tenham gostado aí da nossa aula 2 16 da disciplina sistemas computacionais que a gente falou da linguagem de voltagem de exemplos e determinou cada uma das partes dessa linguagem um abraço a todos e até a próxima a [Música] E aí [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com