Explain passing parameters using pointers, Computer Engineering

Assignment Help:

Q. Explain Passing Parameters Using Pointers ?

This method overcomes the drawback of using variable names directly in procedure. It uses registers to pass procedure pointers to desired data. Let's explain it more with the help of a program.

Program version 2:

DATA_SEG               SEGMENT

                        BCD DB   25h; Storage for BCD test value

BIN      DB?  ; Storage for binary value

DATA_SEG ENDS

STACK_SEG SEGMENT    STACK

DW 100 DUP (0)    ; Stack of 100 words

TOP_STACK LABEL    WORD

STACK_SEG ENDS

CODE_SEG SEGMENT

ASSUME CS: CODE_SEG, DS: DATA_SEG, SS: STACK_SEG

START:           MOV AX, DATA_SEG   ; Initialize data

MOV DS, AX   ; segment using AX register

MOV AX, STACK_SEG   ; initialize stack

MOV SS, AX; segment. Why stack?

MOV SP, OFFSET TOP_STACK; initialize stack pointer

; Put pointer to BCD storage in SI and DI prior to procedure call.

                        MOV SI, OFFSET BCD   ; SI now points to BCD_IN 

                        MOV DI, OFFSET BIN; DI points BIN_VAL 

                                                            ; (returned value)

                        CALL BCD_BINARY   ; Call the conversion 

                                                            ; Procedure

                        NOP     ; Continue with program

                                                            ; Here

; PROCEDURE     : BCD_BINARY Converts BCD numbers to binary. 

; INPUT     : SI points to location in memory of data

; OUTPUT     : DI points to location in memory for result

; DESTROYS    : Nothing

BCD_BINARY PROC NEAR

PUSHF     ; Save flag register 

PUSH AX; and AX registers

PUSH BX; BX  

PUSH CX; and CX

MOV AL, [SI]   ; Get BCD value from memory

                                     ; For conversion

MOV BL, AL   ; copy it in BL also

AND   BL, 0Fh   ; and mask to get lower 4 digits

AND AL, 0F0h; Separate upper 4 bits in AL

MOV CL, 04   ; initialize counter CL so that upper digit 

ROR AL, CL; in AL can be brought to lower 4 bit 

                                    ; Positions in AL

MOV BH, 0Ah   ; Load 10 in BH

MUL BH; Multiply upper digit in AL by 10

                                    ; The result is stored in AL

ADD AL, BL   ; Add lower BCD digit in BL to result of 

                                    ; Multiplication

; End of conversion, now restore the original values prior to call. All calls will be in 

; reverse order to save above. The result is in AL register.

MOV [DI], AL   ; Store binary value to memory

POP CX; Restore flags and

POP BX; registers

POP AX  

POPF    

RET    

BCD_BINARY ENDP

CODE_SEG ENDS

             END START

Discussion:

In the program written above DI points to BIN and SI points to the BCD. The instruction MOV AL, [SI] copies the byte pointed by SI to AL register. In the same manner MOV [DI], AL transfers result back to memory location which is pointed by DI. 

This scheme allows you to pass procedure pointers to data anywhere in memory. You can pass pointer to individual data element or a group of data elements such as strings and arrays. This scheme is used for parameters passing to BIOS procedures.


Related Discussions:- Explain passing parameters using pointers

different versions of microsoft access to open the database, What format s...

What format should my database be saved in to allow different versions of Microsoft Access to open the database? Ans) MS Access is not backwards compatible. To share tables amon

What is called static and dynamic branch prediction, What is called static ...

What is called static and dynamic branch prediction? The branch prediction decision is always the similar every time a given instruction is implemented. Any approach that has t

What does realized mean, Realized mean that the component has been painted ...

Realized mean that the component has been painted on screen or that is prepared to be painted. Realization can take place by invoking any of these methods. setVisible(true), show()

Show independent loops in fortran program, Q. Show Independent loops in for...

Q. Show Independent loops in fortran program? In the subsequent code portion the directives point to the outer two loops are independent. The inner loop allocates elements of A

Two ways of constructing a larger module to mount flash chip, What are the ...

What are the two ways of constructing a larger module to mount flash chips on a small card? The two ways are:- a) Flash cards b) Flash drivers.

Illustrate high performance fortran, In 1993 High Performance FORTRAN Forum...

In 1993 High Performance FORTRAN Forum which is a group of academicians and many leading software and hardware vendors in field of parallel processing established an informal langu

Example of input a single digit, Q. Example of Input a Single Digit? I...

Q. Example of Input a Single Digit? Input a Single Digit for example (0,1, 2, 3, 4, 5, 6, 7, 8, 9)  CODE SEGMENT   ... ; Read a single digit in BL register with ech

Explain random-access semiconductor memories, Q. Explain Random-access Sem...

Q. Explain Random-access Semiconductor Memories Q. What is Basic memory cell? Explain Two Dimension Memory Organization with diagram.

Push and pop, Suupose a stack-oriented processor that haves the stack opera...

Suupose a stack-oriented processor that haves the stack operations PUSH and POP.  Arithmetic operations automatically involve the top one or two stack elements. Starting with an

Explain internal organization of bit cells in a memory chip, Explain with n...

Explain with neat diagram the internal organization of bit cells in a memory chip. Memory cells are usually organized in the form of an array, in which every cell is capable of

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd