implement 16-bit ALU