 This time we're going to be building the data path for an Add Immediate Instruction. Add Immediate Instruction is pretty similar to an Add Instruction, but this time we want to add the contents of a register to some value that we've put in our instruction. So again, we'll want to get something out of our registers, and we're going to want to add that value to some other number. So I'm taking something out of my registers and I'm going to add it. But I need that constant. So that's going to be part of my instruction. So I've put in my instruction memory, and my instruction memory is going to tell me which register I need to fetch data from. It's going to tell me where to store my result back to. And it's also going to tell me what that second parameter is, what that immediate value is. And then once I'm done, I'll want to store the results back into my register. But as with the Add Instruction, I don't just want to run this one Add Immediate Instruction. I'd like to be able to run lots of them. So again, we'll add in a Program Counter. That will allow us to select a specific instruction out of Instruction memory. And then we'll set up the hardware that we need to increment our Program Counter each time. As before, we'll increment the Program Counter by 4 each time through the loop, because all of our instructions are 32 bits long or 4 bytes. But again, this is all we'll need for our data path for an Add Immediate Instruction. We can fetch a specific Add Immediate Instruction, pull it apart, pick out which register to use for our source, as well as our immediate. We can add them together and then store that data back into the registers.