33
ECE 3561 - Lecture 1 1 L11-HLL to Assembler Department of Electrical and Computer Engineering The Ohio State University ECE 2560

L11-HLL to Assembler

Embed Size (px)

DESCRIPTION

ECE 2560. L11-HLL to Assembler. Department of Electrical and Computer Engineering The Ohio State University. HLL to Assembler. Pseudo HLL HLL structure Their flow chart HHL code Corresponding Assembler. What is Pseudo HLL. - PowerPoint PPT Presentation

Citation preview

Page 1: L11-HLL to Assembler

ECE 3561 - Lecture 1 1

L11-HLL to Assembler

Department of Electrical and Computer EngineeringThe Ohio State University

ECE 2560

Page 2: L11-HLL to Assembler

HLL to Assembler

Pseudo HLLHLL structure

Their flow chartHHL codeCorresponding Assembler

ECE 3561 - Lecture 1 2

Page 3: L11-HLL to Assembler

What is Pseudo HLL

Pseudo HLL is a way of expressing an algorithm or procedure for performing a task.

Very similar to modern High Level programming Languages

Best illustrated with an example

ECE 3561 - Lecture 1 3

Page 4: L11-HLL to Assembler

Pseudo HLL example

Sum a list of 10 integers3 7 8 2 4 6 5 5 9 1

There are several methodsThe algorithm here

Create sum and initialize to 0Add first numberRepeat adding number until done with list

ECE 3561 - Lecture 1 4

Page 5: L11-HLL to Assembler

Pseudo HLL

Sequence of ActionsDo action ADo action B ….Do action Q

ECE 3561 - Lecture 1 5

Page 6: L11-HLL to Assembler

Decisions

Decision structures IF condition THEN action if true ELSE action if false END IF; Example:

Remove front bike wheel TURN Bike over IF wheel-has-quick-release-skewer THEN flip level and remove wheel ELSE use wrench to remove nuts from axle remove wheel END IF

ECE 3561 - Lecture 1 6

Page 7: L11-HLL to Assembler

Examples and demo

Example and demo of decision structures

IF THEN ELSESet upTest conditionBranch to after the codeThe action code

ECE 3561 - Lecture 1 7

Page 8: L11-HLL to Assembler

Example

Is a > b ? a and b are memory location labels

.dataa .word 0x00FFb .word 0x00FF

The code if a>b THEN actions cmp a,b ;computes b-a but what jump?after

ECE 3561 - Lecture 1 8

Page 9: L11-HLL to Assembler

The jumps

Jump InstructionsJC,Jump if carry set JHS,Jump if high or

sameThe C bit is tested

If set (i.e. 1) then the branch is taken If clear, the next instruction is executed

JEQ, JZ Jump if equal, Jump if zeroThe Z bit is tested

If set (i.e. 1) then the branch is taken If clear, the next instruction is executed

ECE 3561 - Lecture 1 9

Page 10: L11-HLL to Assembler

The Jumps (2)

JGE Jump if greater or equalThe N and V bits are used –

If N and V are set or reset (both 0 or both 1) the branch is taken

JL Jump if lessThe N and V bits are used

If only one of N or V is set then the branch is taken

JMP Jump unconditionally

ECE 3561 - Lecture 1 10

Page 11: L11-HLL to Assembler

Jumps (3)

JN Jump is negative The N bit is tested

If N is set (i.e. 1) the branch is takenJNC Jump if carry not set

JLOJump is lower The carry bit C is tested.

If C is 0 the branch is takenJNE Jump not equal JNZ Jump if not

zero The Z bit is tested

If Z = 0 the branch is taken

ECE 3561 - Lecture 1 11

Page 12: L11-HLL to Assembler

A test program

Write and compile a test program that sets up two values, uses cmp to compare them, and then runs through the branches.

Have values that are both positive, both negative, and one positive-one negative.

ECE 3561 - Lecture 1 12

Page 13: L11-HLL to Assembler

Adding the ELSE condition

If you have an else condition, set up the branch such that when the condition is not met, you have a label to branch to this code section. cmp a,b jge elsecond ;THEN condition actions jmp ifendpt elsecond ;ELSE condition actions Ifendpt ;following code

ECE 3561 - Lecture 1 13

Page 14: L11-HLL to Assembler

Repeat structures - Do Loops

Finite number of times – DO LOOP Set up any values for loop FOR counter = start TO end [STEP x] LOOP actions of loop END FOR;

Example: Sum = 0; FOR i = 1 to 10 LOOP Sum = Sum + element(i); END FOR;

ECE 3561 - Lecture 1 14

Page 15: L11-HLL to Assembler

A fix number of times

For I in 1 to 10 loop action in loop End loop;

Assembler Use a register for the current value of the loop

counter In data area have stval – the starting value, endval – the ending value

.data stval .word 0x0001 endval .word 0x000F ;loop 15 times

ECE 3561 - Lecture 1 15

Page 16: L11-HLL to Assembler

The structure

;start of loop – setup mov &stval,R8 ;i to R8tol cmp R8,&endval jeq done ;actions of loop inc R8 jmp toldone;code after loop

ECE 3561 - Lecture 1 16

Page 17: L11-HLL to Assembler

Demo

Want to do loop 4 timesSetup – stval of 1, endval of 4But only execute the loop 3 timesCould you solve this with the type of

branch? DifficultEasy – endval is number of times through

the loop + 1 OR i is one less than the iteration through the

loop at compare, i.e. initial value is 0 – move inc instruction to just after the jump

ECE 3561 - Lecture 1 17

Page 18: L11-HLL to Assembler

New material - TA

New material starts here

ECE 3561 - Lecture 1 18

Page 19: L11-HLL to Assembler

Repeat structures

Indeterminate number of times – Repeat loop or decision loop – action inside the loop causes condition to occur that ends the loop.

2 structuresOne has code that executes at least onceOne has code that may or may not execute

at all

ECE 3561 - Lecture 1 19

Page 20: L11-HLL to Assembler

While condition

While loop – may or may not execute code WHILE condition LOOP SEQUENCE_of_ACTIONS END loop; Example: WHILE not EOF LOOP Read line from file Process line END LOOP;

ECE 3561 - Lecture 1 20

Page 21: L11-HLL to Assembler

Repeat

Repeat Until structureREPEAT Sequence_of_statementsUNITL condition;

Example - attempt to read will be done at least once REPEAT Read line from file UNTIL EOF;

ECE 3561 - Lecture 1 21

Page 22: L11-HLL to Assembler

Now what is the assembler?

For each of these Pseudo HLL structures what is the corresponding assembler.

Each will have assumption as to were data to be tested is.

ECE 3561 - Lecture 1 22

Page 23: L11-HLL to Assembler

Straight line code - Sequence

Straight line Pseudo HLL – little modification is needed. A = m*x + b in Pseudo HLL Where are values – say in memory locations labeled by the

same name Code becomes mov m,R8 push R8 push x call smult pop R8 pop R8 add b,R8 mov R8,A

ECE 3561 - Lecture 1 23

Page 24: L11-HLL to Assembler

Decision

Decision structureIF condition THEN action if true ELSE action if falseEND IF;Example:

IF (A<B) THEN temp=A; A=B; B=tempEND IF;

ECE 3561 - Lecture 1 24

Page 25: L11-HLL to Assembler

Assembler for example

A and B are in memoryWill use a register for temp.

cmp A,B ;B-A is positive if A<B jl noexch ;jump if B<A mov A,R6 mov B,A mov R6,Bnoexch

ECE 3561 - Lecture 1 25

Page 26: L11-HLL to Assembler

A more efficient coding

Could be made a little more efficientPrevious code also exchanges when A=Bcmp B,A ;A-B is negative if A<B jge noexch ;jump if B<=A mov A,R6 mov B,A mov R6,Bnoexch

ECE 3561 - Lecture 1 26

Page 27: L11-HLL to Assembler

When there is an else

Else is similar to the previous code IF (A<B) THEN temp=A; A=B; B=temp; ELSE A = 0; END IF;

Much like previous cmp B,A ;A-B is negative if A<B jge else ;jump if B<=A mov A,R6 mov B,A mov R6,B jmp after else clr A after

ECE 3561 - Lecture 1 27

Page 28: L11-HLL to Assembler

Repeat structures

Finite number of times – DO LOOP Set up any values for loop FOR counter = start TO end [STEP x] LOOP actions of loop END FOR;

Example: Sum = 0; FOR i = 1 to 10 LOOP Sum = Sum + element(i); END FOR;

How would this example be coded?

ECE 3561 - Lecture 1 28

Page 29: L11-HLL to Assembler

Coding for Do Loop

Where are control values? i – the current index value – use R9 startval – the starting value for i – memory loc endval – the ending value for i – memory sum – in memory element – label of list of values in memory

mov i,R9 tol cmp endval,R9 ;R9-endval jge lpexit mov R9,R8 dec R8 clrc rolc R8 add #element,R8 add @R8,sum inc R9 jmp tol lpexit

ECE 3561 - Lecture 1 29

Page 30: L11-HLL to Assembler

The repeat and while loops

The coding of the repeat and while loops is very similar.Documents where variables areNeed loop control and testing of loop controlWhich branch instruction to use takes some

thoughtNeed to remember what the cmp instruction

does!!

ECE 3561 - Lecture 1 30

Page 31: L11-HLL to Assembler

The while loop example

i=0; flag=TRUE;WHILE flag LOOP increment i; Actions when value i; IF i = 5 THEN flag = False; END IF;END LOOP;

Now translate this to assembler

ECE 3561 - Lecture 1 31

Page 32: L11-HLL to Assembler

Assembler for while example

mov #0,&i mov #1,&flag ;1=TRUE rpt cmp &flag,#0 jeq done inc &i nop ;code to do actions cmp &i,#5 jne rpt mov #0,&flag jmp rpt done nop ;code after loop

ECE 3561 - Lecture 1 32

Page 33: L11-HLL to Assembler

ECE 3561 - Lecture 1 33

Demo

Demo of loop code.