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

Rubbers, engineering plastics ,rubbers ,composites

engineering plastics ,rubbers ,composites

Give the difference b/w multiprogramming and multiprocessing, Give the diff...

Give the difference between multiprogramming and multiprocessing. A multiprocessing system is a computer hardware configuration which contains more than one independent proc

What is the kernel, What is the kernel?          A more common definiti...

What is the kernel?          A more common definition is that the OS is the one program running at all times on the computer ,usually  known as the kernel, with all else being

Explain the working of any one of centralized spc, Explain the working of a...

Explain the working of any one of centralized SPC? Standby mode of operation is the easiest of dual processor configuration operations. Usually, one processor is active and

Different possible handover scenarios in a gsm network, Problem: (a) C...

Problem: (a) Cellular systems are based on two types of multiplexing, what are those two types of multiplexing? Describe how they are used to improve channel allocation in cel

What is an imperative statement, What is an imperative statement? Ans. ...

What is an imperative statement? Ans. Shows an action to be performed throughout execution of assembled program is an imperative statement.

Show the foundation of ALU design, Q. Show the foundation of ALU design? ...

Q. Show the foundation of ALU design? The foundation of ALU design starts with micro-operation implementation. Thus let's first explain how bus can be used for Data transfer m

Describe the limitation of fat16, Q. Describe the Limitation of FAT16? ...

Q. Describe the Limitation of FAT16? DOS designers decided to use clusters with as a minimum four sectors in them (so a cluster size of at least 2KB) for all FAT16 hard disks.

What is task identifier, Q. What is task identifier? Each and every PVM...

Q. What is task identifier? Each and every PVM task is uniquely recognized by an integer known as task identifier (TID) assigned by local pvmd. Messages are received from and s

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