When the computer starts up, the code in BIOS is executed first. However, how is the code in BIOS loaded into the RAM for execution ?
It doesn't need to be loaded, it's just there.
Keeping it simple: A CPU has a big address space.
32 bit CPUs have 232 addresses (0 through 4294967295 ,or 0x00000000 through 0xFFFFFFFF)
64 bit CPUs have 264 (0 through 18446744073709551999 or 0x0000000000000000 through 0xFFFFFFFFFFFFFFFF), when in 64-bit mode.
External hardware determines what appears where. Obviously RAM will be assigned some addresses, but it's also possible to map external devices to addresses - particularly common for graphics adapters.
I believe the chipset, specifically the Platform Controller Hub, will make the firmware chip appear where the CPU is looking when it powers on. The CPU will be able to run the firmware without having to load it - this is called "Execute In Place" or XIP.
Intel x86 CPUs look at 0x00000000FFFFFFF0 at power on. This is likely because of Intel's decision to put processor exception vectors at 0x0 in the 70's or early 80's when the first x86 CPU, the 8086 was developed - and you couldn't tell the 8086 to relocate those elsewhere.
It's called a ROM because historically it was a real socketed mask ROM chip long ago, but since at least the mid-90's it's almost always a NOR or NAND flash chip that can be erased and reprogrammed.
NVRAM can mean anything from battery-backed RAM to flash, so it's an imprecise term, but I've never heard a chip containing firmware called the "BIOS NVRAM".
Firmware flash chips are slow compared to DRAM, and some of the code in the firmware will be running often (e.g. System Management Mode code - code that manages the fans and power). So firmwares will copy themselves to RAM early in boot (called shadowing), and use additional chipset features to protect that region of memory.
If someone could list the steps from computer start-up upto the execution of first BIOS instruction including the memory addresses used, it would be very helpful
It used to be - power on, CPU spends some cycles initializing, then starts executing code at 0xFFFF0000 - and in 1981 when the first PC was developed, the CPU and everything it interacted with was on a common bus - literally wired together - so the ROM was simply on that bus and wired in to the right address lines on the CPU. In the early 90's, PCI was developed, and RAM started to become faster, so everything got separated from the CPU behind controllers and the chipset. Things have gotten even more complex with the Intel Management Engine and AMD's equivalent - the Platform Security Processor - now these processors with their own embedded firmware (and complete access to the rest of the system) bootup, verify various things and "turn on" the CPU when they are ready.