| ??? 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 |
| Topic | Author | Date |
| 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 |



