MULLOOP2:
DIV4BY2:
DIVLOOP1: DIVLOOP2: MOV R5, A
MOV A, R6 ADDC A, #00H MOV R6, A MOV A, R7 ADDC A, #00H MOV R7, A
DJNZ 46H, MULLOOP1 RET
*四字节/两字节无符号数除法程序* MOV 46H, #20H MOV R0, #00H MOV R1, #00H
MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A MOV A, R0 RLC A MOV R0, A MOV A, R1 RLC A MOV R1, A CLR C MOV A, R0 SUBB A, R2 MOV B, A MOV A, R1 SUBB A, R3 JC DIVLOOP2 MOV R0, B MOV R1, A CPL C
DJNZ 46H, DIVLOOP1 MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A RET ; END
附C51程序
#INCLUDE
#DEFINE UCHAR UNSIGNED CHAR #DEFINE UINT UNSIGNED INT
#DEFINE ULONG UNSIGNED LONG
EXTERN VOID CS_T(VOID); EXTERN VOID DELAY(UINT);
EXTERN VOID DISPLAY(UCHAR*); //DATA UCHAR DISPLAY(UCHAR*); DATA UCHAR TESTOK;
VOID MAIN (VOID) {
DATA UCHAR DISPRAM[5]; DATA UINT I; DATA ULONG TIME; P0=0XFF; P2=0XFF; TMOD=0X11; IE=0X80; WHILE (1) {
CS_T();
DELAY(1);
TESTOK=0; EX0=1; ET0=1;
WHILE(! TESTOK) DISPLAY(DISPRAM); IF (1==TESTOK) {
TIME=TH0;
TIME=(TIME<<8)| TL0; TIME*=172;
TIME/=10000;
DISPRAM[0]=(UCHAR) (TIME); TIME/=10;
DISPRAM[1]=(UCHAR) (TIME); TIME/=10;
DISPRAM[2]=(UCHAR) (TIME); DISPRAM[3]=(UCHAR) (TIME/10); IF (0==DISPRAM[3]) DISPRAM[3]=17; } ELSE {
DISPRAM [0]=16;
DISPRAM [1]=16; DISPRAM [2]=16; DISPRAM [3]=16; }
FOR (I=0;I<300;I++) DISPLAY(DISPRAM); } }
VOID CS_R(VOID) INTERRUPT 0 {
TR0=0; ET0=0; EX0=0; TESTOK=1; }
VOID OVERTIME(VOID) INTERRUPT 1 {
EX0=0;
TR0=0;
ET0=0;
TESTOK=2; }
NAME CS_T ?PR?CS_T?CS_T SEGMENT CODE PUBLIC CS_T RSEG ?PR?CS_T?CS_T CS_T: PUSH ACC MOV TH0, #00H MOV TL0, #00H MOV A, #4D SETB TR0 CS_T1: CPL p1.0 NOP NOP NOP NOP NOP NOP NOP
NOP NOP NOP
DJNZ ACC,CS_T1
POP ACC RET ;
END NAME DELAY
?PR?_DELAY?DELAY SEGMENT CODE PUBLIC _DELAY
RSEG ?PR?_DELAY?DELAY _DELAY: PUSH ACC MOV A,R7 JZ DELA1 INC R6 DELA1: MOV R5,#50D DJNZ R5, $ DJNZ R7,DELA1 DJNZ R6,DELA1 POP ACC RET END
NAME DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT CODE ?CO?_DISPLAY?DISPLAY SEGMENT DATA
EXTRN CODE (_DELAY) PUBLIC _DISPLAY
RSEG ?CO?_DISPLAY?DISPLAY ?_DISPLAY?BYTE: DISPBIT: DS 1 DISPNUM: DS 1
RSEG ?PR?_DISPLAY?DISPLAY _DISPLAY: PUSH ACC PUSH DPH PUSH DPL PUSH PSW INC DISPNUM MOV A,DISPNUM CJNE A,#4D,DISP1 DISP1: JC DISP2
MOV DISPNUM,#00H MOV DISPBIT,#0FEH DISP2: MOV A,R1
ADD A,DISPNUM MOV R0,A MOV A,@R0
MOV DPTR,#DISPTABLE
MOVC A,@A+DPTR MOV P0,A
MOV A,DISPNUM CJNE A,#2D,DISP3 CLR P0.7 DISP3: MOV P2,DISPBIT MOV R5,#00H MOV R7,#0AH LCALL _DELAY MOV P0,#0FFH MOV P2,#0FFH MOV A,DISPBIT RL A
MOV DISPBIT,A POP PSW POP DPL POP DPH POP ACC RET
DISPTABLE: DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH END