Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
07/18/00 09:38
Read: times


 
#3809 - RE: 16-bit division
Well friends this is a 16 bit division routine tested ok.
Try it yourself.
Srikanth;
;---------------------------------------
;DIVISION ROUTINE OF 2 BYTE / 1 BYTE
;EXECUTION TIME -> 50 TO 200 MICRO S.
;STATUS -> TESTED O.K.
; X1 X2 / Y1 = DATA_MSB DATA_LSB
;---------------------------------------
DATA_MSB: EQU 20H
DATA_LSB: EQU 21H
X1: EQU 23H
X2: EQU 24H
Y1: EQU 25H
MUL_FACT: EQU 30H
REMINDER: EQU 32H

ORG 0000H
JMP START



ORG 00060H
START:

DIVISION:
CALL INI_MUL
CALL CAL_MF_REMINDER
RE_MUL:
CALL MUL_MULF
CALL MUL_REMINDER
MOV A,X1
CJNE A,#00H,RE_MUL
CALL CAL_LSB_DATA
RET

INI_MUL:
MOV DATA_LSB,#00H
MOV DATA_MSB,#00H
RET

CAL_MF_REMINDER:
MOV A,#FFH
MOV B,Y1
DIV AB
MOV R7,A
MOV A,B
ADD A,#01H
MOV B,Y1
DIV AB
ADD A,R7
MOV MUL_FACT,A
MOV REMINDER,B
RET
MUL_MULF:
MOV A,X1
MOV B,MUL_FACT
MUL AB
CLR C
ADD A,DATA_LSB
MOV DATA_LSB,A
MOV A,DATA_MSB
ADDC A,B
MOV DATA_MSB,A
RET
MUL_REMINDER:
MOV A,X1
MOV B,REMINDER
MUL AB
CLR C
ADD A,X2
MOV X2,A
MOV A,B
ADDC A,#00H
MOV X1,A
RET
CAL_LSB_DATA:
MOV A,X2
MOV B,Y1
DIV AB
JZ OU_CALS
MOV X2,B
CLR C
ADD A,DATA_LSB
MOV DATA_LSB,A
MOV A,DATA_MSB
ADDC A,#00H
MOV DATA_MSB,A
JMP CAL_LSB_DATA
OU_CALS:
RET

Try this out








List of 4 messages in thread
TopicAuthorDate
16-bit division            01/01/70 00:00      
RE: 16-bit division            01/01/70 00:00      
RE: 16-bit division            01/01/70 00:00      
RE: 16-bit division            01/01/70 00:00      

Back to Subject List