=====asm Keywords===== ====Fetch-execute cycle==== ===Definition=== The sequence of actions that a central processing unit performs to execute each machine code instruction in a program. It goes through all the components of the computer such as the CPU, then the processor, instruction register, etc. ===Demonstration=== {{:opus:spring2012:dgirard3:220px-comp_fetch_execute_cycle.png?200|}} This picture accurately shows the route of this cycle. ====Binary and Hexadecimal Number Representation==== ===Definition=== Binary representation is taking a decimal number, a number such as 6 and changing it into a binary number which would be 110. Now in binary it only uses 1 and 0, a computer can only read these values so thats why it is necessary for this. But if we were to get more intricate, we would get into hexadecimal. Hexadecimal is 0 to the letter f. In a computer we start getting bigger with our numbers so it compacts the binary down so we dont have huge lines of code. ===Demonstration=== {{:opus:spring2012:dgirard3:14091_77_1.jpg?200|}} This is a table of showing how to do simple conversions of smaller decimal numbers. it shows how binary and hex represents its numbers. ====Boolean Arithmetic Operations (Addition, Subtraction, Multiplication, Division)==== ===Definition=== Boolean Arithmetic is the logic behind our logic gates such as AND, NOR, OR, NOT and so on. The operations behind it is what makes the magic happen. Addition and multiplication is all you really need because subtraction and division are just variances of the others. But like with addition you have 1 plus 1 equals 1 or 1 plus 0 equals 1. ===Demonstration=== {{:opus:spring2012:dgirard3:02776x02.png?200|}} These are the logic gates that would implement these type of operations. ====Registers (General Purpose/Integer, Floating Pointer, Accumulator, Data)==== ===Definition=== General purpose registers can store both data and addresses, i.e., they are combined Data/Address registers. They can be known as GPR's. Floating point registers store floating points in many computers today. Accumulator which intermediate arithmetic and logic results are stored. Without a register like an accumulator, it would be necessary to write the result of each calculation (addition, multiplication, shift, etc.) to main memory. Data register can hold numeric values such as int, floating and even char. ====Processor & Memory Organization==== ===Definition=== The number of registers in a processor unit may vary from just one processor register to as many as 64 registers or more. One part you will have is the accumulator AC or 'A' register. It is the main operand register of the ALU. Then you will have the data register (DR) acts as a buffer between the CPU and main memory. It is used as an input operand register with the accumulator. Then the instruction register (IR) holds the opcode of the current instruction. Next is the address register (AR) holds the address of the memory in which the operand resides. Lastly, the program counter (PC) holds the address of the next instruction to be fetched for execution. There can always be additional registers within the processor but these are the main ones you will find. There are actually more then one way to organize memory but it will general be connected to cache or RAM to store most of the data that is ran through the processor. ====von Neumann vs. Harvard architecture==== ===Definition=== The most obvious characteristic of the Harvard Architecture is that it separates signals and storage for code and data memory. Typically, code (or program) memory is read-only and data memory is read-write. Therefore, it is impossible for program contents to be modified by the program itself. In the Von neumann architecture all signals and storage was shared, so it was easily changeable in a read-write memory. ===Demonstration=== {{:opus:spring2012:dgirard3:neumann_harvard.gif?200|}} Here is a picture example. ====Logic Operations (AND, OR, XOR)==== ===Definition=== These logic operations are the simple operations of the logic gates. AND is where bot statement 1 AND statement 2 must be true for it to pass. OR is saying that statement 1 OR statement 2 need to be true in order for it to pass. XOR is saying that one of the 2 statements must be true and the other must be false, if anything else its not true. ===Demonstration=== AND 1 // nick sano 2 #include "and.h" 3 4 bool AND::getX() 5 { 6 bool tmp = false; 7 8 if((A == true) && (B == true)) 9 { 10 tmp = true; 11 } 12 13 return tmp; 14 } OR 1 #include "or.h" 2 3 bool OR :: getX() 4 { 5 bool tmp = false; 6 if((A == true) || (B == true)) 7 { 8 tmp = true; 9 } 10 return(tmp); 11 } XOR 1 2 #include "xor.h" 3 4 XOR::XOR() 5 { 6 myorgate = new OR(); 7 mynotgate = new NOT(); 8 myandgate = new AND(); 9 } 10 11 bool XOR::getX() 12 { 13 bool tmp = true; 14 15 myandgate -> setA(A); 16 mynotgate -> setA(B); 17 tmp = mynotgate -> getX(); 18 myandgate -> setB(tmp); 19 myorgate -> setA(myandgate -> getX()); 20 21 myandgate -> setB(B); 22 mynotgate -> setA(A); 23 tmp = mynotgate -> getX(); 24 myandgate -> setA(tmp); 25 myorgate -> setB(myandgate -> getX()); 26 tmp = myorgate -> getX(); 27 28 return(tmp); 29 } ====Negated Logic Operations (NOT, NAND, NOR, XNOR)==== ===Definition=== These are the negative operators of the logic table. NOT just takes what you currently have and negates it. NAND AND NOR take what they normally do (AND=1 and 2 both must be true, OR= 1 or 2 can be true) and just takes the opposite of what they do. So if it was true when AND was run, now that result will be untrue. and XNOR will run to see if both statements are true or both are false. ===Demonstration=== NOT 1 #include "not.h" 2 3 bool NOT::getX() 4 { 5 bool tmp; 6 tmp = ! A; 7 return(tmp); 8 } NAND 1 #include "nand.h" 2 3 NAND::NAND() 4 { 5 myandgate = new AND(); 6 mynotgate = new NOT(); 7 } 8 9 bool NAND::getX() 10 { 11 bool tmp = true; 12 13 myandgate -> setA(A); 14 myandgate -> setB(B); 15 16 tmp = myandgate -> getX(); 17 18 mynotgate -> setA(tmp); 19 20 tmp = mynotgate -> getX(); 21 22 return(tmp); 23 } 24 NOR 1 #include "nor.h" 2 3 NOR::NOR() 4 { 5 myorgate = new OR(); 6 mynotgate = new NOT(); 7 } 8 9 bool NOR::getX() 10 { 11 bool tmp = false; 12 13 myorgate -> setA(A); 14 myorgate -> setB(B); 15 16 tmp = myorgate -> getX(); 17 18 mynotgate -> setA(tmp); 19 20 tmp = mynotgate -> getX(); 21 return(tmp); 22 } XNOR 1 #include "xnor.h" 2 3 XNOR::XNOR() 4 { 5 myxorgate = new XOR(); 6 mynotgate = new NOT(); 7 } 8 9 bool XNOR::getX() 10 { 11 bool tmp; 12 13 myxorgate -> setA(A); 14 myxorgate -> setB(B); 15 tmp = myxorgate -> getX(); 16 mynotgate -> setA(tmp); 17 tmp = mynotgate -> getX(); 18 19 return(tmp); 20 } =====asm Objective===== ====asm Objective==== An understanding of the concepts of assembly ===Definition=== Do you know what assembly is? How does it work? etc. ===Method=== I will discuss this and just state what i know of this language. ===Measurement=== Assembly language is the lowest level language that we have. It is used for microprocessors, processors, single instruction mechanical computers and a computer. Assembly Language uses 'mnemonic codes' or 'symbols'. Instead of remembering the exact memory locations where data and instructions are stored, symbolic memory addresses are used for data. In the language there is assemble that converts the assembly into object code. There is a single assembler and a multi one. both do similar things, just obviously one runs more then one. MOV AL, 1h ; Load AL with immediate value 1 MOV CL, 2h ; Load CL with immediate value 2 MOV DL, 3h ; Load DL with immediate value 3 this is an example of what assembly looks like. You have to move data line by line to get it where you want it. There are no shortcuts. Assembly is the basis of pretty much everything and without it, we would not have gotten as far as we did, today. ===Analysis=== Reflect upon your results of the measurement to ascertain your achievement of the particular course objective. I think i did pretty well. We didnt touch assembly much but i think i have gained a little knowledge towards it and i believe i have conveyed the concept quite nicely.