This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
daedalus [2016/04/08 13:17] cechin |
daedalus [2017/11/09 11:43] (current) cechin [Ferramentas] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Montador DAEDALUS ====== | ====== Montador DAEDALUS ====== | ||
- | ==== Descrição Geral ==== | + | ===== Descrição ===== |
- | Montador para os computadores AHMES, RAMSES e CESAR. | + | Montador para os computadores AHMES, RAMSES e CESAR. Esse programa pode ser usado para editar um arquivo fonte na linguagem //assembly// e para montar os arquivos ".mem" onde estão as instruções que poderão ser executadas no simulador adequado. Os arquivos fonte são formados por linhas que podem ser de dois tipos: |
+ | |||
+ | * linhas de instruções | ||
+ | * linhas de diretivas | ||
+ | |||
+ | ==== Linhas de Instruções ==== | ||
As linhas que formam um arquivo fonte para ser montado através do DAEDALUS tem a seguinte forma geral: | As linhas que formam um arquivo fonte para ser montado através do DAEDALUS tem a seguinte forma geral: | ||
Line 9: | Line 14: | ||
^ Rótulo ^ Mnemônico ^ Operandos ^ Comentários ^ | ^ Rótulo ^ Mnemônico ^ Operandos ^ Comentários ^ | ||
- | O **__rótulo__** (//label//) é um símbolo definido pelo usuário ao qual é atribuído o valor corrente do contador de programa. Esse símbolo e seu valor associado é colocado na Tabela de Símbolos do montador. A definição dos rótulos devem obedecer as seguintes regras: | + | O **__rótulo__** (//label//) é um símbolo definido pelo usuário ao qual é atribuído o valor corrente do contador de programa. Esse símbolo e seu valor associado é colocado na Tabela de Símbolos do montador. O uso de um rótulo é opcional e sua definição deve obedecer às seguintes regras: |
* não podem ser redefinidos (só podem ser definidos uma única vez); | * não podem ser redefinidos (só podem ser definidos uma única vez); | ||
- | * devem começar na primeira posição da linha (coluna 1) | + | * devem começar na primeira posição da linha (coluna 1); |
- | * Devem ser seguidos por um caractere dois-pontos (":"), que não faz parte do rótulo | + | * devem ser seguidos por um caractere dois-pontos (":"), que não faz parte do rótulo. |
+ | |||
+ | O **__mnemônico__** é uma sequencia de letras que identifica uma instrução da máquina para a qual se está escrevendo o programa. O mnemônico deve ser colocado a direita do rótulo (se houver) ou a partir da posição 2 da linha. A lista de mnemônicos válidos depende da cada computador. O uso de um mnemônico em uma linha é opcional. Mas, uma vez usado, devem ser fornecidos os operandos adequados. | ||
+ | |||
+ | Os **__operandos__** são os parâmetros da instrução. Uma instrução pode requerer o uso de zero (nenhum) ou mais operandos, que devem ser separados por um delimitador (caractere //space// ou vírgula). O seu uso é obrigatório, quando usando instruções que requeiram operandos. Caso contrário, não devem ser utilizados. | ||
+ | |||
+ | Finalmente, os **__comentários__** devem iniciar com ";" (ponto-e-vírgula) e se extende até o final da linha. O uso de comentários é opcional. | ||
+ | |||
+ | ==== Linhas de Diretivas ==== | ||
+ | |||
+ | Todo o montador requer que o arquivo fonte utilize //diretivas// (comandos) para orientar a forma como deve ser realizada a montagem dos programas. No Daedalus, uma linha com diretivas tem o formato semelhante ao de uma linha de instrução. | ||
+ | |||
+ | Notar que, diferentemente de uma linha de instrução, uma linha com diretiva (também chamada de //pseudo-instrução//) atua sobre o processo de montagem do fonte. Ela //não produz// qualquer código executável. No máximo elas são capazes de reservar e inicializar espaços de dados para o programa. Essa linha tem a seguinte forma: | ||
+ | |||
+ | ^ Nome ^ Diretiva ^ Operandos ^ Comentários ^ | ||
+ | |||
+ | O **__nome__** é um símbolo definido pelo usuário ao qual é atribuído um valor que depende da diretiva usada para defini-lo. Algumas diretivas exigem o uso de um "nome" que lhe antecede na linha; em outras o uso de um "nome" é opcional. De forma semelhante aos rótulos, os nome devem obedecer às seguintes regras: | ||
+ | |||
+ | * não podem ser redefinidos (só podem ser definidos uma única vez); | ||
+ | * devem começar na primeira posição da linha (coluna 1); | ||
+ | * devem ser seguidos por um caractere dois-pontos (":"), que não faz parte do nome. | ||
+ | |||
+ | A **__diretiva__** define como o montador deve operar. Essa operação pode ser relativa a própria linha apenas ou pode indicar como proceder em todo o fonte a partir do ponto onde foi definida a diretiva. As diretivas tratadas pelo montador são as seguintes: | ||
+ | |||
+ | * EQU | ||
+ | * ORG | ||
+ | * DB | ||
+ | * DW | ||
+ | * DAB | ||
+ | * DAW | ||
+ | |||
+ | Os **__operandos__** são os parâmetros da diretiva. Uma diretiva pode requerer o uso de zero (nenhum) ou mais operandos, que devem ser separados por um delimitador (caractere //space// ou vírgula). A quantidade de operandos assim como a sua obrigatoriedade depende de cada diretiva. | ||
+ | |||
+ | Conforme descrito anteriormente, os **__comentários__** seguem as mesmas regras já descritas: iniciam com ";" (ponto-e-vírgula) e extende-se até o final da linha. O uso de comentários é opcional. | ||
+ | |||
+ | ===== Ferramentas ===== | ||
+ | |||
+ | === Montadores === | ||
+ | |||
+ | * Última versão | ||
+ | * {{Daedalus.1.0.6.1.exe.zip|Montador DAEDALUS - Vers. 1.0.6.1 - setembro/2017}} | ||
+ | * O montador reconhece símbolos como parâmetro da diretiva ORG | ||
+ | * Versões anteriores | ||
+ | * {{Daedalus.1.0.6.0.exe.zip|Montador DAEDALUS - Vers. 1.0.6.0 - maio/2017}} | ||
+ | * {{Daedalus.1.0.5.6.exe.zip|Montador DAEDALUS - Vers. 1.0.5.6 - outubro/2016}} | ||
+ | * {{Daedalus.1.0.5.exe.zip|Montador DAEDALUS - Vers. 1.0.5 - julho/2016}} | ||
+ | * {{daedalus.zip|Montador DAEDALUS - Vers. 1.04 - set/2015}} | ||
- | O **__mnemônico__** é uma sequencia de letras que identifica uma instrução da máquina para a qual se está escrevendo o programa. O mnemônico deve ser colocado a direita do rótulo (se houver) ou a partir da posição 2 da linha. A lista de mnemônicos válidos depende da cada computador. | ||
- | Os **__operandos__** são os parâmetros da instrução. Uma instrução pode requerer o uso de zero (nenhum) ou mais operandos, que devem ser separados por um delimitador (caractere //space// ou vírgula). | + | === Documentação do Montador=== |
+ | * {{daedalus.pdf|Documentação do montador DAEDALUS}} | ||
- | Finalmente, os **__comentários__** devem iniciar com ";" (ponto-e-vírgula) e se extende até o final da linha. | ||