Download presentation
Presentation is loading. Please wait.
Published byBrianna Ballam Modified over 10 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.