# Shenzhen I/O #2 - Control Signal Amplifier

Today we’re doing another Shenzhen I/O puzzle.

As this is the second task, the puzzle is again quite simple. As a reminder, we do have the following command documentation:

The task is to amplify a signal. As we can see from the verification tab the output has to be higher than the input - twice as high, to be precise.

This seems fairly easy, we just need to multiply the input signal with `2`

and output the result.
If we take a closer look on our commands we can find a `mul`

operator which can take one argument.
It is documented with the following:

mul R/I Multiply the value of the first operand by the value of the acc register and store the result in the acc register.

So this makes things a bit more complicated. We can not simply take register `p0`

and multiply it with integer `2`

.
The argument for `mul`

always gets multiplied with the register `acc`

.
Therefore we need to do a little extra step and save `2`

into `acc`

.
After that we can multiply register `p0`

with integer `2`

saved in `acc`

which automatically stores the result again in `acc`

.
Now we need to move the result from `acc`

to register `p1`

- our output - and sleep for one second.

```
mov 2 acc
mul p0
mov acc p1
slp 1
```

With these four lines we pass all the tests easily.

Production Cost | Power Usage | Lines of Code |
---|---|---|

3 | 240 | 4 |