Essa documentação ainda está desenvolvimento.
Mnemônico | Opcode | Tamanho (palavras) |
Ação |
---|---|---|---|
ADD | 01 | 2 | ACC = ACC + mem[OP] |
SUB | 02 | 2 | ACC = ACC - mem[OP] |
MUL | 03 | 2 | ACC = ACC * mem[OP] |
DIV | 04 | 2 | ACC = ACC / mem[OP] |
JMP | 05 | 2 | PC = OP |
JMPN | 06 | 2 | se ACC < 0 então PC = OP |
JMPP | 07 | 2 | se ACC > 0 então PC = OP |
JMPZ | 08 | 2 | se ACC = 0 então PC = OP |
COPY | 09 | 3 | mem[OP2] = mem[OP1] |
LOAD | 10 | 2 | ACC = mem[OP] |
STORE | 11 | 2 | mem[OP] = ACC |
INPUT | 12 | 2 | mem[OP] = entrada |
OUTPUT | 13 | 2 | saída = mem[OP] |
STOP | 14 | 1 | Suspende a execução |
Tabela feita com Tables Generator.
Programa em assembly hipotético que calcula a área de um triângulo tirado de
asm_files/area_triangulo.asm
:
section DATA
B: SPACE
H: SPACE
DOIS: CONST 2
R: SPACE
section TEXT
INPUT B
INPUT H
LOAD B
MUL H
DIV DOIS
STORE R
OUTPUT R
STOP
Se hasm
e area_triangulo.asm
estiverem no mesmo diretório, para montar
basta executar:
./hasm area_triangulo.asm
O resultado deve ser o arquivo objeto area_triangulo.obj
com o seguinte
conteúdo:
H fatorial
H 24
R 010101010101010101010000
T 12 22 10 22 2 23 8 18 11 21 3 22 11 22 10 21 5 4 13 22 14 0 0 1
H fatorial
: cabeçalho (header) com o nome do programa.
H 24
: cabeçalho (header) com o tamanho do programa em palavras.
R 0101...
: informação de relocação (útil para o ligador).
T 12 10 22...
: o programa em si, com seção de texto e seção de dados.
Essa formatação é apenas para imitar a formatação de um arquivo objeto tradicional. Por isso o arquivo objeto resultante ainda é um arquivo texto que pode ser lido por qualquer editor de texto e compreendido por humanos.
Essa parte ainda vai ser melhorada. Se você quiser simular o programa
anterior, você pode usar o simulador do
Trabalho 2 e
compilá-lo seguindo as instruções do
README.md. Depois disso, copie o simulador
para o
diretório do fatorial.obj
.
Antes de simular, faça uma pequena correção em fatorial.obj
: remova tudo o que
vem antes do primeiro número que vem depois do T
. Esse processo pode ser
realizado para outros .asm
únicos que forem montados. O resultado do arquivo
fatorial.obj
deve ser isso:
12 22 10 22 2 23 8 18 11 21 3 22 11 22 10 21 5 4 13 22 14 0 0 1
Simule com:
./simulador fatorial.obj
Futuramente não será necessário realizar esse ajuste manualmente. O próprio
hasm
fará isso.
Rascunho de um diagrama de classes para o Hypothetical Assembler (Hassembler). Visualize aqui.