Example on public divisor, Computer Engineering


Linker appends all segments having the same name and PUBLIC directive with segment name into one segment. Their contents are pulled together in consecutive memory locations.

The subsequent statement to be noted is PUBLIC DIVISOR. It tells the assembler and linker that this variable can be legally accessed by other assembly modules. Whereas EXTRN SMART_DIV: FAR conveys the assembler that this module will access a label or a procedure of type FAR in some assembly module. Please also note that EXTRN definition is enclosed within the PROCEDURES ENDS andPROCEDURES SEGMENT PUBLIC to tell the assembler and linker that procedure SMART_DIV is located within the segment PROCEDURES and all such PROCEDURES segments are required to be combined in one. Let's now define the PROCEDURE module:  



; INPUT                      : Dividend - low word in AX, high word in DX, Divisor in CX

; OUTPUT                  : Quotient - low word in AX, high word in DX. Remainder in CX

; Carry                         - carry flag is set if try to divide by zero


DATA_SEG SEGMENT   PUBLIC; this block tells the assembler that

EXTRN DIVISOR: WORD                          ; the divisor is a word variable and is

DATA_SEG   ENDS                         ; external to this procedure. It would be 

                                                            ; found in segment named DATA_SEG

PUBLIC SMART_DIV                     ; SMART_DIV is available to

                                                            ; Other modules. It is now being defined 

                                                            ; In PROCEDURES SEGMENT.



                                 ASSUME CS: PROCEDURES, DS: DATA_SEG

                                 CMP DIVISOR, 0; this is just to demonstrate the use of 

                                                                        ; External variable, otherwise we can 

                                                                        ; Check it through CX register which

                                                                        ; contains the divisor.

JE        ERROR_EXIT   ; IF divisor = 0, exit procedure

MOV  BX, AX   ; Save low order of dividend

MOV  AX, DX; Position high word for 1st divide

MOV  DX, 0000h; Zero DX

DIV     CX; DX: AX/CX, quotient in AX,

                                 ; Remainder in DX

MOV BP, AX                  ; transfer high order of final result to BP

MOV AX, BX                 ; Get back low order of dividend. Note 

                                         ; DX contains remainder so DX: AX is 

                                         ; The actual number

DIV CX; DX: AX/CX, quotient in AX,

                                         ; 2nd remainder that is final remainder 

                                         ; in DX

MOV CX, DX                 ; Pass final remainder in CX

MOV DX, BP                  ; Pass high order of quotient in DX

                                         ; AX contains lower word of quotient

CLC                                 ; Clear carry to indicate valid result

JMP EXIT                        ; Finished


ERROR_EXIT: STC   ; Set carry to indicate divide by zero






Procedure accesses the data item named DIVISOR that is defined in the main consequently the statement EXTRN DIVISOR: WORD is essential for informing assembler that this data name is found in some other segment. Data-type is defined to be of word type. Please consider that DIVISOR is enclosed in same segment name as that of main which is DATA_SEG and procedure is in a PUBLIC segment.

Posted Date: 8/1/2013 3:40:51 AM | Location : United States

Related Discussions:- Example on public divisor, Assignment Help, Ask Question on Example on public divisor, Get Answer, Expert's Help, Example on public divisor Discussions

Write discussion on Example on public divisor
Your posts are moderated
Related Questions
Artificial Intelligence 1. Explain about artificial intelligence? What are the achievements of AI? 2. Elaborate state space search briefly. 3. Prove that A* is optimal.

Which is not a layer of IO management module? Ans. MCS that is Management Control System, is not a layer of IO management module.

Q. How to Correct the error condition while copying file in DOS? In most case, DOS allows you to correct the error condition and retry the command (by pressing R). If the drive

For the following, cmd1 and cmd2 are arbitrary UNIX commands, and file1 and file2 are files owned by you. Write UNIX (bash) commands to: (a) Run cmd1 and append its output to f

Error detection mechanism may include checking mechanical and data communication errors. These errors must be reported to processor. The illustrations of kind of mechanical errors

Q. Physical characteristics and access mode of disk drive? Access Time: Access time is time needed between requests made for a read or write operation until the time data are

Advantages of random scan display Early computer displays: basically an oscilloscope. Control X, Y with vertical/horizontal plate voltage. Often used intensity as

What is Page-Stealer process? This is the Kernel process that makes rooms for the incoming pages, by swapping the memory pages that are not the part of the working set of a pro

Explain the Programmable ROM (PROM) - Computer Memory? This is a kind of ROM that can be programmed using special equipment it can be written to, but only once and this is usef

What is parsing? Parsing is the process of analyzing a text, formed of a sequence of tokens, to find out its grammatical structure regarding a specified formal grammar. Parsing