140 likes | 349 Views
Lecture 7 Stack Operations and Introduction to Procedure. Modified and Presented By Dr. Rajesh Palit Asst. Professor, EECS, NSU Originally Prepared By Dr. Shazzad Hosain , EECS, NSU. Stack vs. Queue. Stack LIFO : Last In First Out Queue FIFO : First In First Out. Queue. Stack.
E N D
Lecture 7Stack Operations and Introduction to Procedure Modified and Presented By Dr. Rajesh Palit Asst. Professor, EECS, NSU Originally Prepared By Dr. ShazzadHosain, EECS, NSU
Stack vs. Queue • Stack • LIFO : Last In First Out • Queue • FIFO : First In First Out Queue Stack
Introduction to Procedures • Way to implement top-down programming approach • Procedure declaration name PROC type RET name ENDP • Some other place the procedure is called by call name • Type can be FAR or NEAR, and it is optional, in absence of type NEAR is assumed • NEAR indicates that the calling statement is in the same segment, FAR implies different segment
Procedure contd. • The RET instruction causes control to transfer back to the calling procedure. • Every procedure, except the MAIN procedure should have a RET someplace, and usually it’s the last statement in the procedure • A procedure must have a way to receive values from the caller, and a way to return results • In assembly language, there is no parameter lists, so it’s up to the programmer to devise way to communicate • In case of a few parameters, registers are fine to pass values
Procedure Example Product = 0 REPEAT IF lsb of B is 1 THEN product = product + A END_IF Shift left A Shift right B UNTIL B = 0
Passing Data Between Procedures • Using Global Variables • Through Register (call by values) • Passing the address of the data • Using the stack • Suitable for recursive procedure • Used by high-level programming languages • Procedure calling starts by pushing the return address on the stack
Using BP for Accessing Stack MOV AL, a PUSH AX … MOV AL, b PUSH AX CALL addnos (original BP) return address data 1 data 2 data n SP, BP addnos PROC NEAR PUSH BP MOV BP, SP MOV AX, [BP+6] ADD AX, [BP+4] POP BP RET 4 addnos ENDP SP, BP
References • Chapter 8 and Chapter 14 – Assembly Language Programming by Charles Marut