Presentation is loading. Please wait.

Presentation is loading. Please wait.

Machine & Assembly Language. Machine Language  Computer languages cannot be read directly by the computer – they are not in binary.  All commands need.

Similar presentations


Presentation on theme: "Machine & Assembly Language. Machine Language  Computer languages cannot be read directly by the computer – they are not in binary.  All commands need."— Presentation transcript:

1 Machine & Assembly Language

2 Machine Language  Computer languages cannot be read directly by the computer – they are not in binary.  All commands need to be translated into binary instructions called machine language.  Each type of CPU has its own machine language.

3 Von Neumann Architecture CPU Control Unit ALU Registers Memory

4 Slightly More Complete Picture CPU Control Unit ALU Registers Memory Secondary Storage

5 Von Neumann Architecture  Program and Data are both stored in memory.  Fetch, Decode, Execute cycle…

6 Machine Language  We will look at a simulated CPU provided by the author of our book…  This machine language has only 12 different instructions  Each instruction is 16 bits long.  Data values are also limited to 16 bits.

7 Sample Instruction LOAD contents of memory location into register 100000010 RR MMMMM example: R0 = Mem[3] 100000010 00 00011 Instruction IDRegister #Memory Location

8 Machine Language LOAD contents of memory location into register 100000010 RR MMMMM ex: R0 = Mem[3] 100000010 00 00011 STORE contents of register into memory location 100000100 RR MMMMM ex: Mem[4] = R0 100000100 00 00100 MOVE contents of one register into another register 100100010000 RR RR ex: R0 = R1 100100010000 00 01

9 Machine Language ADD contents of 2 registers, store result in third. 1010000100 RR RR RR ex: R0 = R1 + R2 1010000100 00 01 10 SUBTRACT contents of 2 registers, store result into third 1010001000 RR RR RR ex: R0 = R1 – R2 1010001000 00 01 10 Halt the program1111111111111111

10 Sample Machine Language Program Add the contents of register 1 to the contents of register 2 and store it in register 0: 1010000100 00 01 10 1111111111111111

11 Sample Machine Language Program Add the contents of memory location 1 to the contents of register 2 and store it in register 0: 100000010 01 00001 1010000100 00 01 10 1111111111111111

12 Assembly Language  Set of mnemonic names for the instructions in a particular computer's machine language.  Works on registers and memory locations in the computer.  Translated into binary instructions.

13 Assembly Language Load contents of memory location into register LOAD [REG] [MEM] ex: R0 = Mem[3] LOAD R0 3 Store contents of register into memory location STORE [REG] [MEM] ex: Mem[4] = R0 STORE 4 R0 Move contents of second register into first register MOVE [REG1] [REG2] ie: R1 = R2 MOVE R1 R2

14 Assembly Language Add contents of 2 registers, store result in third. ADD [REG] [REG] [REG] ex: R0 = R1 + R2 ADD R0 R1 R2 Subtract contents of 2 registers, store result into third SUB [REG] [REG] [REG] ex: R0 = R1 – R2 SUB R0 R1 R2 Halt the programHALT

15 Sample Assembly Language Add the contents of register 1 to the contents of register 2 and store it in register 0: ADD R0 R1 R2 HALT

16 Sample Machine Language Add the contents of memory location 1 to the contents of register 2 and store it in register 0: LOAD R1 1 ADD R0 R1 R2 HALT

17 Sample Program LOAD R2 5 ADD R2 R2 R2 LOAD R1 3 ADD R3 R1 R2 HALT What does this program do?

18 Exercise  What would be the assembly instructions to swap the contents of registers 1 & 2?  STORE [MEM] [REG]  LOAD [REG] [MEM]  MOVE [REG] [REG]  ADD [REG] [REG] [REG]  SUB [REG] [REG] [REG]  HALT

19 Exercise Solution STORE 1 R1 MOVE R1 R2 LOAD R2 1 HALT

20 Exercise  What would be the assembly instructions to do the following computation: R0 = Mem[7] + R2 - R3  STORE [MEM] [REG]  LOAD [REG] [MEM]  MOVE [REG] [REG]  ADD [REG] [REG] [REG]  SUB [REG] [REG] [REG]  HALT

21 Exercise Solution SUB R2 R2 R3 LOAD R1 7 ADD R0 R1 R2 HALT (we want R0 = Mem[7] + R2 - R3)

22 Some More Instructions…  We are missing some crucial functionality…  ??

23 Some More Instructions…  We are missing some crucial functionality…  Loops! Branch to a location in memory BRANCH [MEM] Branch if the ALU result is zero. BZERO [MEM] Branch if the ALU result is negative. BNEG [MEM]

24 A More Complex Example 0ADD R3 R2 R3 1SUB R0 R0 R1 2BZERO 4 3BRANCH 0 4MOVE R2 R3 5HALT R03 R11 R2Number R30

25 In Python  The same program in Python would be the following: z = 0 x = 3 while x != 0: z += y x = x -1 y = z  Or the following: y = y*3

26 Compilers, Interpreters, Assemblers  Because it is not fun to program in Assembly, we have “high level” programming languages. Python Alice C, C++, Java, Fortran, Cobol, Pascal, C++, M, Ada, lisp, Ruby, Smalltalk, C#, … Compiler/Interpreter translates from the high- level language to machine language.

27 Program Translation z = 0 x = 3 while x != 0: z += y x = x -1 y = z ADD R3 R2 R3 SUB R0 R0 R1 BZERO 4 BRANCH 0 MOVE R2 R3 HALT 1010000100000110 1010001000000110 0000001000000100 0000000100000000 1001000100001011 1111111111111111 CompilerAssembler


Download ppt "Machine & Assembly Language. Machine Language  Computer languages cannot be read directly by the computer – they are not in binary.  All commands need."

Similar presentations


Ads by Google