Procedure which divides a 32-bit number by a 16-bit number, Computer Engineering

Assignment Help:

Write a procedure which divides a 32-bit number by a 16-bit number. The procedure must be general which is it's defined in one module and can be called from another assembly module.

; REGISTERS   : Uses CS, DS, SS, AX, SP, BX, CX

; PROCEDURES: Far Procedure SMART_DIV

DATA_SEG SEGMENT   WORD PUBLIC

     DIVIDEND DW 2345h, 89AB; Dividend = 

    ; 89AB2345H

     DIVISOR DW 5678H; 16-bit divisor

     MESSAGE DB 'INVALID DIVIDE', '$'

DATA_SEG ENDS    

 

MORE_DATA   SEGMENT     WORD

                                 QUOTIENT   DW   2 DUP (0)

                                 REMAINDER   DW      0 

MORE_DATA ENDS

STACK_SEG   SEGMENT   STACK

                                 DW   100 DUP (0); Stack of 100 words

                                 TOP - STACK   LABEL WORD; top of stack pointer

STACK_SEG   ENDS

PUBLIC       DIVISOR

PROCEDURES SEGMENT   PUBLIC                    ; SMART_DIVis declared as an

EXTRN SMART_DIV: FAR                                    ; external label in procedure 

                                                                                    ; Segment of type FAR

PROCEDURES ENDS

; declare the code segment as PUBLIC so that it can be merged with other PUBLIC

; Segments

CODE_SEG SEGMENT WORD   PUBLIC

            ASSUME CS: CODE, DS: DATA_SEG, SS: STACK SEG

            START:  MOV AX, DATA_SEG; Initialize data segment

            MOV DS, AX   ; using AX register

            MOV AX, STACK_SEG   ; Initialize stack segment

            MOV SS, AX; using AX register

            MOV SP, OFFSET TOP_STACK; Initialize stack pointer

            MOV AX, DIVIDEND   ; Load low word of

                                                ; Dividend

            MOV   DX DIVIDEND + 2; Load high word of

                                                ; Dividend

            MOV CX, DIVISOR   ; Load divisor

            CALL SMART_DIV   

; This procedure returns Quotient in the DX: AX pair and Remainder in CX register. 

; Carry bit is set if result is invalid.

                                 JNC SAVE_ALL; IF carry = 0, result valid

                                 JMP STOP          ; ELSE carry set, don't

                                                             ; save result

                                 ASSUME DS: MORE_DATA   ; Change data segment

SAVE_ALL:  PUSH DS   ; Save old DS 

MOV BX, MORE_DATA          ; Load new data segment

MOV DS, BX                              ; register

MOV QUOTIENT, AX              ; Store low word of

                                                     ; Quotient

MOV QUOTIENT + 2, DX   ; Store high word of

                                                     ; Quotient

MOV REMAINDER, CX   ; Store remainder

ASSUME DS: DATA_SEG  

POP   DS; Restore initial DS

JMP ENDING

STOP:                       MOV DL, OFFSET MESSAGE

                                 MOV AX, AH 09H

                                 INT   21H  

ENDING:   NOP

CODE_SEG ENDS

                                 END START


Related Discussions:- Procedure which divides a 32-bit number by a 16-bit number

What is low-level formatting, What is low-level formatting?  Before a d...

What is low-level formatting?  Before a disk can store data, it must be divided into sectors that the disk controller can read and write. This process is known as low-level for

Conversion of data types done between abap/4 & db layer, How is conversion ...

How is conversion of data types done between ABAP/4 & DB layer? Conversion among ABAP/4 data types and the database layer is complete within the database interface

What are the properties of e-cash, What are the properties of E-cash? ...

What are the properties of E-cash? Properties: a. Monetary Value: It must be backed through either cash, bank –certified cashier’s cheque and authorized credit cards.

Testing project, Design and test the functions that are needed: a.  Test...

Design and test the functions that are needed: a.  Test Main  in the Testing project add a new file main.c. b.  Test Drivers  in the Testing project add 2 new files, testDriver

Artificial neural networks - artificial intelligence, Artificial Neural Net...

Artificial Neural Networks - Artificial intelligence: Decision trees, while strong, are a easy representation method. While graphical on the surface, they may be seen as disjun

Define local area network, LAN is a privately - owned computer networks con...

LAN is a privately - owned computer networks confined to small geographical area, like a factory or an office widely used to connect office PCs to share resources and information.

Elucidate in brief the functions of the clock generator chip, Elucidate in ...

Elucidate in brief the functions of the clock generator chip, 8284. 8284 Clock generator: 8284 is an ancillary component to the microprocessors. Without clock generator, many

Create a web page from which customers can order equipment, Q. Create a Web...

Q. Create a Web page from which customers can order equipment? Suppose your boss wants you to create a Web page from which customers can order computer equipment. You need to c

Explain the quantization error of an ADC, Explain the Quantization error...

Explain the Quantization error of an ADC. Ans. Quantization error- An analog voltage is within the range of 0 to 1V and for 3 bit output, the size of all intervals are

Main problems with evaluation functions, Main problems with evaluation func...

Main problems with evaluation functions: Superlatively, evaluation functions should be quick calculates. Wherever is chance they take a long time to estimate, so after then le

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