Think about it like this.
Software in general is just instructions that tell a computer what to do. A processor, the computational engine of a computer, only understands a limited set of instructions. These few instructions are combined to create a series of instructions that can perform more complex computations. Software may be written in a high-level programming language like C++ or a low-level language like assembly, but in the end, all software gets compiled or translated down into the basic, binary machine instructions, or machine code, that the processor recognizes and knows how to process.
A program is a specific set of instructions that tell a computer to do something. When a program is running, its instructions and data are stored in main memory. Remember, that the instructions of a program boil down to machine code which consists of 1’s and 0’s. In modern computing, these 1’s and 0’s are represented as high voltage and low voltage. So in memory, an instruction and its data are stored as a series of high voltages and low voltages. In order to process the instruction and its data, these voltages are transferred to the processor as input. The processor processes the instructions by either propagating the voltages through the datapath for an arithmetic computation or sending them back to I/O devices.
So software is just a set of instructions that are stored in memory as voltages. So physically, there is no physical component that is between the hardware and software in a computer. The software is a series of high and low voltages, or 1’s and 0’s, stored in memory and processed by the processor.
Conceptually, the instruction set can be considered the interface between the hardware and software. The instruction set is the set of voltage combinations that the processor was designed to process, and it is the fundamental set of instructions upon which all higher-level software is built. The instruction set is the complete set of all the machine code instructions that can be recognized and executed by a central processing unit. The instruction set architecture is the instruction set combined with the CPU hardware architecture that was designed to process those instructions.
Note that software is built on 1’s and 0’s. These 1’s and 0’s don’t have to be represented as high and low voltages. They could be represented as on and off light, or hot and cold temperatures. But using electricity, voltages, and transistors makes it possible to make computers very small and very fast.