of commands), é enviado um nível alto, que ativa o buffer controlador para seleção de dados da memória de instruções (destacado de cor roxa). E caso isso seja negado, é enviado um nível baixo, desabilitando o buffer controlador (desabilitando também a memória de instruções) e o comando OE clock, passando para o nível baixo e desabilitando a entrada de clock no circuito. Isso faz a execução do programa parar completamente. Para melhor entendimento do funcionamento dos contadores nos seus estados, pode-se observar na Figura 12 a máquina de estados com as cores correspondentes da imagem supracitada. Figura 12 - Máquina de Estados dos Contadores. Para cada ciclo completo do registrador amarelo, conta-se um próximo estado do contador vermelho. Considerando o seguinte problema: “somar dois números menores que 16 e determinar o resto da divisão dessa soma por 4”. Como a ULA não implementa divisão, é preciso pensar em uma maneira de usar as operações suportadas para fornecer o mesmo resultado. Como o divisor é 4, uma potência da base binária, sabemos que o resto da divisão por 2𝑛𝑛 é dado tomando-se os 𝑛𝑛 bits menos significativos do dividendo. Para tomarmos esses bits, devemos usar uma máscara e a operação lógica AND bit a bit (Proposto pelo trabalho). Assim, para resolver o problema, escolhe-se os números 9 e 5 (exemplo do trabalho). Os comandos para resolvê-lo serão: mov R1, 5 # R1 = 5 mov R2, 9 # R2 = 9 add R3, R1, R2 # R3 = R1 + R2 mov R0, 4 # R0 = 4 mov R2, 1 # R2 = 1 sub R0, R0, R2 # R0 = R0 – R2 and R1, R3, R0 # R1 = R3 & R0 Tabela 3 – Sequência de instruções As instruções de máquina correspondentes são estas descritas na tabela 4: Mnemônico mov Op ULA Write Reg Read Reg A Read Reg B mov R1, 5 1 000 01 01 01 mov R2, 9 1 000 10 10 01 add R3, R1, R2 0 000 11 01 10 mov R0, 4 1 000 00 01 00 mov R2, 1 1 000 10 00 01 sub R0, R0, R2 0 001 00 00 10 and R1, R3, R0 0 100 01 11 00 Tabela 4 – Instruções em Linguagem de Máquina Ou, passando diretamente à memória de instruções: 0 215 229 2 036 204 4 221 042 6 11c 000 Tabela 5 – Valores correspondentes às instruções na memória Ao final da execução, na memória de resultado, é possível ver a soma de 9 e 5, e determinar o resto por 4 é 2: Figura 13 - Resultado do comando.