The MIPS opcode format for instructions with immediate operands only has 16 bits available for the immediate constant.
These 16 bits are usually taken to mean either an unsigned 16-bit value (i.e 0 to 65535, or 0x0000 - 0xFFFF in hex) for logical operations (such as ori
here), or a signed 16-bit value (-32768 to 32767, or 0xFFFF8000 to 0x00007FFF) for arithmetic operations.
So you can't directly use 2147483648 (0x80000000) as an immediate value here - hence the "out of range" error.
But there is an instruction for loading a 16-bit immediate value into the top 16 bits of a register (leaving the bottom bits set to 0): lui
(load upper immediate).
So, you can load 0x80000000 into a register like that, and then or
it with your value:
lui $t0, 0x8000
or $t0, $t0, $s3