Rules for calling assembly subroutines from, Computer Engineering

Assignment Help:

Q. Rules for calling assembly subroutines from?

The rules for calling assembly subroutines from C are:

(i)  Memory model: The calling program and called assembly programs should be defined with the same memory model. One of the most common convention which makes NEAR calls is .MODEL SMALL, C.

(ii) The naming convention generally involve an underscore (_) character preceding the segment or function name. However this underscore is not used while making a call from C function. Please be careful about Case-sensitivity.

You should give a specific segment name to code segment of your assembly language subroutine. The name differs from compiler to compiler. Microsoft C and Turbo C need the code segment name to be_TEXT or a segment name with suffix_TEXT. Also it needs the segment name _DATA for data segment.

(iii)  Arguments from C to assembly language are passed through stack.

For illustration a function call in C:

function_name (arg1, arg2, ..., argn) ;

Would push the value of every argument on the stack in reverse order. Which is, the argument argn is pushed first and arg1 is pushed last on stack. A pointer or a value to a variable can also be passed on the stack. Because the stack in 8086 is a word stack thuspointers and values are stored as words on stack or multiples of the word size in case value exceeds 16 bits.

(iv) Youmust remember to save any special purpose registers (like CS, DS, SS, ES, BP, SI or DI) which may be modified by the assembly language routine. If you fail to save them then you might have unexplainable / undesirable consequences when control is returned to C program. Though there is no need to save AX, BX, CX or DX registers as they are considered volatile.

(v)   Please note the compatibility of data-types:

            char Byte (DB)

            int Word (DW)

            long Double Word (DD)

(vi) Returned value: The called assembly routine uses the followed registers for returned values:

            char   AL

            Near/ int   AX

            Far/ long DX: AX


Related Discussions:- Rules for calling assembly subroutines from

How does the dialog handle user requests, How does the Dialog handle user r...

How does the Dialog handle user requests? when an action is performed ,the system triggers the PROCESS AFTER INPUT event. The data passed contains field screen data data enter

Inventor, I am the inventor of the railway signaling device now operated by...

I am the inventor of the railway signaling device now operated by timer. I wish to move on to the next phase where the equipment will be operated by DTMF codes. The device is a si

Explain with the help of examples fifo algorithms, Explain with the help of...

Explain with the help of examples FIFO algorithms? FIFO policy: This policy easy removes pages in the order they arrived into the main memory. By using this policy we easily

What is php, The PHP Hypertext Pre processor is a programming language that...

The PHP Hypertext Pre processor is a programming language that permits web developers to make dynamic content that interacts with databases. PHP is basically used for developing we

Explain system software with system programming, Explain the evolution of s...

Explain the evolution of system software with system programming. System-software is collection of system programs which perform a variety of functions, name are: file editing,

Illustrate the working of encoders, Q. Illustrate the working of Encoders? ...

Q. Illustrate the working of Encoders? An Encoder performs reverse function of decoder. An encoder has 2n input lines and 'n' output line. Let's see 8 ×3 encoder that encodes 8

Explain how viewstate is being formed, Explain how Viewstate is being forme...

Explain how Viewstate is being formed and how it is keeps on client. The type of ViewState is System.Web.UI.StateBag, which is a dictionary that keeps name/value pairs. View St

Convert decimal number to ocatl number, Convert (177.25) 10 to octal A...

Convert (177.25) 10 to octal Ans. 177.25) 10 = (         ) 8 Firstly we take integer part Hence (177) 10 = (261) 8 Now as 0.25 x 8 = 2.00 and 0.00 x 8 = 0 Therefor

What are near and far pointers, These days, they're pretty much obsolete; t...

These days, they're pretty much obsolete; they're definitely system-particular. They had to do with 16-bit programming under MS-DOS and perhaps some early on versions of Windows. I

Explain criteria for choosing type of file organization, What criteria shou...

What criteria should be adopted for choosing type of file organization. Selecting a file organization is a design decision; therefore it must be done having in mind the achieve

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