In ARM Assembly each register can contain 32 bits/1 word of information stored in it. That's why when you try to store a value larger than 255 it gives you an error
However, the MUL instruction seems to not have this limitation. You can multiply two registers, each of them having the value of 255 for instance, and store the result in a third register without any errors. How does this happen? Shouldn't the destination register be unable to store values beyond 255?