IBM assembler supports multiple ways to specify operands. They can be located in registers, specified using base-displacement addressing, specified with index registers added (indexed base-displacement), or supplied directly as immediate data inside the instruction code itself.