A student asks: lets say we want to store a value 0001 001 001 100010 into x3000 which is really R1<- R1+2 . Now how would we be able to store this value into memory without it affecting the R1 value? I am not sure I understand the question. If you are asking how you would get the value 0001001001100010 into location x3000 as part of your program, then this value has nothing to do with R1. The 16-bit pattern that happens to be ADD R1,R1,#2 if interpreted as an instruction is a 2's complement integer if interpreted as a data value, or two ASCII codes if interpreted that way, or a bit vector if interpreted that way. Recall chapter 2. Now then, if I want that 16-bit value in x3000 as part of my machine language program, I just put it there. For example, the following will work: 0010111111111100 ; first address is x2FFC some 16 bits ; this will go into x2FFC some 16 bits ; this will go into x2FFD some 16 bits ; this will go into x2FFE some 16 bits ; this will go into x2FFF 0001001001100010 ; this will go into x3000 Presumably the contents of x2FFC through x2FFF will have a branch in it or a TRAP x25 to prevent the "value" at x3000 from being executed. If those four locations correspond to legitimate instructions that are executed without a branch, then sure enough, the contents of x3000 will be fetched as an instruction and whatever is in R2 at that time will be increased by 2. Yale Patt