Assembly Language Programming
This presentation is the property of its rightful owner.
Sponsored Links
1 / 48

Assembly Language Programming PowerPoint PPT Presentation


  • 283 Views
  • Uploaded on
  • Presentation posted in: General

Assembly Language Programming. CPU . CPU . The CPU contains a Control Unit, Arithmetic Logic Unit (ALU) and a small number of memory locations called Registers. Different registers perform different tasks such: as manipulating data,

Download Presentation

Assembly Language Programming

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Assembly language programming

Assembly Language Programming


Assembly language programming

CPU


Assembly language programming

CPU

  • The CPU contains a Control Unit, Arithmetic Logic Unit (ALU) and a small number of memory locations called Registers.

  • Different registers perform different tasks such:

    • as manipulating data,

    • keeping track of the results of decision making operations,

    • and pointing to the next instruction to be executed.


Cpu registers

CPU Registers

  • The Instruction Register (IR) contains the actual instruction which is currently being executed by the CPU.

  • The Status Register records the result of comparing the contents of register A with the contents of register B.

  • The Program Counter (PC) contains the address of the next instruction to be executed by the program.


Cpu registers1

CPU Registers

  • Registers A & B hold the operands for each arithmetic operation (ie. the values on which the operation will be performed). After the operation has been carried out, the result is always stored in Register B.

  • Therefore, after an arithmetic operation has been performed, the second operand is no longer stored in Register B, because it has been overwritten by the result of the operation.


Cpu registers2

CPU Registers

  • The computer also has a Compare instruction that can be used to compare the contents of register A with those of register B.

  • The comparison can have three possible outcomes:

    • the contents of register A < B;

    • the contents of the register A = B;

    • the contents of the register A > B.


Cpu registers3

CPU Registers

  • After a comparison has been done, the Status Register will hold a code that stores the results of the comparison.

  • The results are coded as follows:

    • -1 if (A < B);

    • 0if (A = B);

    • 1if (A > B).


Assembly language

Assembly language.

  • Assembly language allows us to use convenient abbreviations (called mnemonics) for machine language operations and memory locations.

  • Each assembly language is specific to a particular hardware architecture, and can only be used on a machine of that architecture.

  • An assembly language program must be translated into machine code before it can be executed. The program that tells the computer how to perform the translation is called an assembler.


Assembly language1

Assembly language.

  • When a processor chip is designed, it is designed to understand and execute a set of machine code instructions (OpCodes) unique to that chip.

  • One step up from machine code is assembly code. Each machine code instruction is given a mnemonic (name), so that it is easier for human beings to write code.

  • There is a one-to-one correspondence between the assembly languages mnemonic instructions and the machine language numeric instructions.

  • A list of assembly code instructions that will perform a task is called an assembly program.


Assembly language2

Assembly language.

OperationWhat it means to the CPU

STPStop the program

LDALoad register A with contents of a specified

memory location

LDBLoad register B with contents of a specified

memory location

STRStore register B contents to a specified

memory location

INP Store data input by user to a specified

memory location

PNTPrint the contents of a specified memory

location to the screen


Assembly language3

Assembly language.

OperationWhat it means to the CPU

JLTJump if less than (Status register = -1)

to a specified memory location

JGTJump if greater than (Status register = 1)

to a specified memory location

JEQJump if equal (Status register = 0)

to a specified memory location

JMPUnconditional jump to a specified

memory location

CMPCompare register A to register B and set Status

Register value


Assembly language4

Assembly language.

OperationWhat it means to the CPU

ADDAdd (register A + register B) and

store sum in register B

SUBSubtract (register A - register B)and

store difference in register B

MULMultiply (register A * register B) and

store product in register B

DIVDivide for quotient (register A / register B)

and store quotient in register B

MODDivide for remainder (register A / register B)

and store remainder in register B


Steps to write assembly programs

Steps to write Assembly Programs

  • Create Pascal Program

  • translate each Pascal statement to the equivalent assembly statement(s)

  • Number the assembly language program starting from 0

  • Replace Memory names by number of empty memory cell

  • Resolve jumps ( replace with number of memory cell jumping to)


Pascal to assembly language

Pascal to Assembly language.

StatementAssembly equivalent

programnone

constput value in memory cell

varput address of memory cell

readlnINP

writelnPNT

assignment (:=)

val3 = val1 + val2LDA Val1

LDB Val2

ADD

STR Val3

End.STP


Assembly language5

Assembly language.

Program #1.

Write an assembly language program that will get a number as input from the user, and output its square to the user.


Assembly language6

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.


Assembly language7

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.

1. Input a number and store it in memory.

2. Compute the square by multiplying

the number times itself.

3. Output the results.


Assembly language8

Assembly language.

Step 2: write Pascal code


Assembly language9

Assembly language.

Step 2: write Pascal code

Var

number , square: integer;

begin

readln ( number);

square := number * number ;

writeln (square);

end.


Assembly language10

begin

readln ( number);

square := number*number;

writeln (square);

end.

INP number

LDA number

LDB number

MUL

STR square

PNT square

STP

Assembly Language


Assembly language11

Assembly language.

Step 4: Number assembly code lines starting from 0

0INP number

1LDA number

2LDB number

3MUL

4STR square

5PNT square

6STP


Assembly language12

Assembly language.

Step 5: Replace memory names by cell numbers after STP

0INP number 7

1LDA number 7

2LDB number 7

3MUL

4STR square 8

5PNT square8

6STP


Assembly language13

Assembly language.

Step 6: Final Assembly code

INP 07

LDA 07

LDB 07

MUL

STR 08

PNT 08

STP


Pascal to assembly language1

Pascal to Assembly language.

StatementAssembly equivalent

if ( N < 10 ) thenLDA N(condition expression)

writeln (N)LDB Ten

CMP

JOP (operation) (Then Block)

JMP to statement after then block

PNT N ( then block)


Pascal to assembly language2

Pascal to Assembly language.

StatementAssembly equivalent

if ( N < 10 ) thenLDA N(condition expression)

writeln (N)LDB Ten

else writeln (‘0’); CMP

JOP (operation) (Then Block)

PNT Zero ( else Block)

JMP to statement after then block

PNT N ( then block)


Assembly language14

Assembly language.

Program #2.

Write an assembly program that will get a number from the user, and determine if the number is evenly divisible by 5. Output zero (false) if the number is NOT evenly divisible by 5 or one (true) if the number IS evenly divisible.


Assembly language15

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.


Assembly language16

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.

1. Input a number and store it in memory.

2. Determine if the input number is evenly divisible by 5.

2.1Divide the input number by 5 to get the remainder.

2.2 Compare the remainder to 0.

If remainder equals 0, the number

is evenly divisible.

If the remainder does not equal 0,

the number NOT evenly divisible.

3. Output the results

3.1 If evenly divisible, output 1.

3.2 If NOT evenly divisible, output 0.


Assembly language17

Assembly language.

Step 2: write Pascal code


Assembly language18

Assembly language.

Step 2: write Pascal code

Const

Zero = 0; One =1; Five = 5;

Var

number , rem: integer;

begin

readln ( number);

rem := number MOD Five ;

if (rem = Zero) then

writeln (One);

else writeln (Zero)

end.


Assembly language19

Assembly language.

Step 3: translate Pascal code to assembly

Const

Zero = 0; One =1; Five = 5;

Var

number , rem: integer;

begin

readln ( number);INP number

rem := number MOD Five ;LDA number

LDB Five

MOD

STR rem


Assembly language20

Assembly language.

Step 3: translate Pascal code to assembly

if (rem = Zero) thencondition expLDA Zero

writeln (One);LDB rem

else writeln (Zero)CMP

end.JEQ then block

else blockPNT Zero

JMP after then

then blockPNT One

STP


Assembly language21

Assembly language.

Step 4: Number assembly code lines starting from 0

0 INP number

1 LDA number

2 LDB Five

3 MOD

4 STR rem

condition exp5 LDA Zero

6 LDB rem

7 CMP

8 JEQ then block

else block9 PNT Zero

10 JMP after then

then block11 PNT One

12 STP


Assembly language22

Assembly language.

Step 5: Replace memory names by cell numbers after STP

0 INP number 16

1 LDA number 16

2 LDB Five 13

3 MOD

4 STR rem 17

condition exp5 LDA Zero 14

6 LDB rem 17

7 CMP

8 JEQ then block

else block9 PNT Zero 14

10 JMP after then

then block11 PNT One 15

12 STP

13 5

14 0

15 1


Assembly language23

Assembly language.

Step 5: Replace jumps by instruction numbers

0 INP 16

1 LDA 16

2 LDB 13

3 MOD

4 STR 17

5 LDA 14

6 LDB 17

7 CMP

8 JEQ then block 11

else block9 PNT 14

10 JMP after then 12

then block11 PNT 15

12 STP

13 5

14 0

15 1


Assembly language24

Assembly language.

Step 6: Final Assembly code

INP 16

LDA 16

LDB 13

MOD

STR 17

LDA 14

LDB 17

CMP

JEQ 11

PNT 14

JMP 12

PNT 15

STP

5

0

1


Assembly language25

Assembly language.

StatementAssembly equivalent

While (N < 10 ) doLDA N(condition expression)

beginLDB Ten

writeln (N)CMP

end; JOP (operation) (While Block)

JMP to statement after while block

PNT N ( while block statements)

JMP Condition


Assembly language26

Assembly language.

  • Program #3.

  • Write an assembly program that will add up a series of positive numbers entered by the user, until the user enters a negative number, then display the total.


Assembly language27

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.


Assembly language28

Assembly language.

step 1: algorithm to describe the steps needed to solve our problem.

1.Input a value and store it in memory.

  • 2.While the Input Value is not a negative number:

    • 2.1 Add the Input Value to the Running Total and store

    • the sum back into the Running Total.

    • 2.2 Input another value and store it in memory.

  • 3.Output the contents of the Running Total.


Assembly language29

Assembly language.

Step 2: write Pascal code


Assembly language30

Assembly language.

Step 2: write Pascal code

Const

Zero = 0;

Var

sum , number: integer;

begin

sum := zero;

readln ( number);

While ( number >= Zero) do

begin

sum := sum + number;

readln (number);

end;

writeln (sum)

end.


Assembly language31

Assembly language.

Step 3: translate Pascal code to assembly

begin

sum := zero;

readln ( number);

While ( number >= Zero) do

LDB Zero

STR sum

INP number

conditionLDA numberLDB Zero

CMP

JGT (While Block)

JEQ (While Block)

JMP after while block


Assembly language32

Assembly language.

Step 3: translate Pascal code to assembly

begin

sum := sum + number;

readln (number);

end;

writeln (sum)

end.

LDA sum

LDB number

ADD

STR sum

INP number

JMP Condition

PNT sum

STP


Assembly language33

Assembly language.

Step 4: Number assembly code lines starting from 0

0 LDB Zero

1 STR sum

2 INP number

condition3 LDA number4 LDB Zero

5 CMP

6 JGT (While Block)

7 JEQ (While Block)

8 JMP after while block

9 LDA sum

10 LDB number

11 ADD

12 STR sum

13 INP number

14 JMP Condition

15 PNT sum

16 STP


Assembly language34

Assembly language.

Step 5: Replace memory names by cell numbers after STP

while body9 LDA sum 18

10 LDB number 19

11 ADD

12 STR sum 18

13 INP number 19

end while 14 JMP Condition

15 PNT sum 18

16 STP

17 0

0 LDB Zero 17

1 STR sum 18

2 INP number 19

condition3 LDA number 194 LDB Zero 17

5 CMP

6 JGT (While Block)

7 JEQ (While Block)

8 JMP after while block


Assembly language35

Assembly language.

Step 5: Replace jumps by cell numbers

while body 9 LDA 18

10 LDB 19

11 ADD

12 STR 18

13 INP 19

end while 14 JMP Condition 3

15 PNT 18

16 STP

17 0

0 LDB 17

1 STR 18

2 INP 19

condition3 LDA 19

4 LDB 17

5 CMP

6 JGT (While Block) 9

7 JEQ (While Block) 9

8 JMP after while block 15


Assembly language36

Assembly language.

Step 6: Final Assembly code

LDA 18

LDB 19

ADD

STR 18

INP 19

JMP 3

PNT 18

STP

0

LDB 17

STR 18

INP 19

LDA 19

LDB 17

CMP

JGT 9

JEQ 9

JMP 15


  • Login