Desenvolver um programa monolítico, utilizando instruções rotuladas, sobre a máquina 2_REG, que implemente a função B = (A * 2) - (A / 3).
Calcular os valores da função B, em razão da entrada A.
| A | (A * 2) - (A / 3) | B |
|---|---|---|
| 0 | (0 * 2) - (0 / 3) = 0 - 0 | 0 |
| 1 | (1 * 2) - (1 / 3) = 2 - 0 | 2 |
| 2 | (2 * 2) - (2 / 3) = 4 - 0 | 4 |
| 3 | (3 * 2) - (3 / 3) = 6 - 1 | 5 |
| 4 | (4 * 2) - (4 / 3) = 8 - 1 | 7 |
| 5 | (5 * 2) - (5 / 3) = 10 - 1 | 9 |
| 6 | (6 * 2) - (6 / 3) = 12 - 2 | 10 |
| 7 | (7 * 2) - (7 / 3) = 14 - 2 | 12 |
| 8 | (8 * 2) - (8 / 3) = 16 - 2 | 14 |
| 9 | (9 * 2) - (9 / 3) = 18 - 3 | 15 |
Identificar o padrão de geração dos valores da função B, em razão da entrada A.
| A | B | Diferença entre BA e BA - 1 |
|---|---|---|
| 0 | 0 | - |
| 1 | 2 | + 2 |
| 2 | 4 | + 2 |
| 3 | 5 | + 1 |
| 4 | 7 | + 2 |
| 5 | 9 | + 2 |
| 6 | 10 | + 1 |
| 7 | 12 | + 2 |
| 8 | 14 | + 2 |
| 9 | 15 | + 1 |
Como observado, o padrão de geração dos valores da função B, em razão de A, é:
| Atualização da função B |
|---|
| + 2 |
| + 2 |
| + 1 |
Logo, o programa monolítico, utilizando instruções rotuladas, sobre a máquina 2_REG, que implemente a função B = (A * 2) - (A / 3), pode ser descrito como:
R01: Se a_zero então vá_para R00 senão vá_para R02;
R02: Faça subtrair_a vá_para R03;
R03: Faça adicionar_b vá_para R04;
R04: Faça adicionar_b vá_para R05;
R05: Se a_zero então vá_para R00 senão vá_para R06;
R06: Faça subtrair_a vá_para R07;
R07: Faça adicionar_b vá_para R08;
R08: Faça adicionar_b vá_para R09;
R09: Se a_zero então vá_para R00 senão vá_para R10;
R10: Faça subtrair_a vá_para R11;
R11: Faça adicionar_b vá_para R01;