⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zoujin.asm

📁 工业仪器仪表汇编软件
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        SUBB A,#10
        JC 2
        MOV R5,#0
        MOV A,R4
        MOV B,#10
        MUL AB
        ADD A,R5
        MOV R4,A
        MOV A,B
        ADDC A,#0
        MOV R5,A
        MOV A,R3
        MOV B,#10
        MUL AB
        ADD A,R5
        MOV R3,A
        MOV A,B
        ADDC A,#0
        MOV R5,A
        MOV A,R2
        MOV B,#10
        MUL AB
        ADD A,R5
        MOV R2,A
        RET
;
DIV10:  MOV A,R2        ; R2 R3 R4 / 10 ==> R2 R3 R4 ... A .
        MOV B,#10
        DIV AB
        MOV R2,A
        MOV R5,B        ;   R2 / 10 ==> R2 ... R5 .
;
        MOV A,R3        ;   R5 R3 / 10 ==> R3 ... R6 .
        MOV B,#10       ;   formula: R3 = R5*25 + (R5*6 + R3) / 10 .
        DIV AB
        MOV R3,A
        MOV R6,B
        MOV A,R5
        MOV B,#6
        MUL AB
        ADD A,R6
        MOV B,#10
        DIV AB
        ADD A,R3
        MOV R3,A
        MOV R6,B
        MOV A,R5
        MOV B,#25
        MUL AB
        ADD A,R3
        MOV R3,A
;
        MOV A,R4        ;   R6 R4 / 10 ==> R4 ... R7 .
        MOV B,#10       ;   formula: R4 = R6*25 + (R6*6 + R4) / 10 .
        DIV AB
        MOV R4,A
        MOV R5,B
        MOV A,R6        ;      R6 * 6 .
        MOV B,#6
        MUL AB
        ADD A,R5
        MOV B,#10
        DIV AB
        ADD A,R4
        MOV R4,A
        MOV R5,B
        MOV A,R6        ;      R6 * 25 .
        MOV B,#25
        MUL AB
        ADD A,R4
        MOV R4,A
        MOV A,R5
        RET
;
GADD1:  MOV A,R2                ; R2 R3 R4 + R5 R6 R7 ==> R2 R3 R4 .
        ANL A,#10000000B        ;   R2 R3 R4 sign is R2 (B7) .
        MOV R0,A                ;   R5 R6 R7 sign is R5 (B7) .
        MOV A,R2
        ANL A,#7FH
        MOV R2,A
        MOV A,R5
        ANL A,#10000000B
        MOV R1,A
        MOV A,R5
        ANL A,#7FH
        MOV R5,A
        MOV A,R1
        XRL A,R0
        ANL A,#10000000B
        JNZ ADD1L1
        MOV A,R4                ;    sign is same , ADD .
        ADD A,R7
        MOV R4,A
        MOV A,R3
        ADDC A,R6
        MOV R3,A
        MOV A,R2
        ADDC A,R5
        MOV R2,A
        LJMP ADD1L2
ADD1L1: MOV A,R4                ;   sign isn't same , SUBB .
        CLR C
        SUBB A,R7
        MOV R4,A
        MOV A,R3
        SUBB A,R6
        MOV R3,A
        MOV A,R2
        SUBB A,R5
        MOV R2,A
        JNC ADD1L2
        MOV A,R1                ;  R4 R5 R6 R7 < R1 R2 R3 .
        MOV R0,A
        MOV A,#0
        CLR C
        SUBB A,R4
        MOV R4,A
        MOV A,#0
        SUBB A,R3
        MOV R3,A
        MOV A,#0
        SUBB A,R2
        MOV R2,A
ADD1L2: MOV A,R2
        ANL A,#7FH
        ORL A,R0
        MOV R2,A
        RET
;
;                               R2 R3 R4 / R0 ==> R2 R3 R4 .
DIVR0:  NOP
        MOV A,R0
        JNZ 1
        RET
        MOV A,R2
        ANL A,#80H
        MOV R5,A
        MOV A,R2
        ANL A,#7FH
        MOV R2,A
        MOV R6,#24
        MOV R1,#0
        CLR C
        MOV A,R4
        RLC A
        MOV R4,A
        MOV A,R3
        RLC A
        MOV R3,A
        MOV A,R2
        RLC A
        MOV R2,A
        MOV A,R1
        RLC A
        MOV R1,A
DR0L1:  MOV A,R1
        CLR C
        SUBB A,R0
        JC DR0L2
        MOV R1,A
DR0L2:  CPL C
        MOV A,R4
        RLC A
        MOV R4,A
        MOV A,R3
        RLC A
        MOV R3,A
        MOV A,R2
        RLC A
        MOV R2,A
        MOV A,R1
        RLC A
        MOV R1,A
        DJNZ R6,DR0L1
        MOV A,R5
        ORL A,R2
        MOV R2,A
        RET
;
;
SD232:  JNB 13H,1
        RET
        LCALL TRT2
;       LCALL S232
        MOV 31H,#02H
        MOV 32H,#00H
        mov dptr,ds1225
        mov p2,dph
        mov r0,dpl
        mov dptr,#sd232d
        mov r2,#40h
sd2l1:  nop
        clr a
        movc a,@a+dptr
        movx @r0,a
        inc dptr
        inc r0
        djnz r2,sd2l1
        setb 16h
        RET
sd232d: db 52h,53h,32h,33h,32h,20h,53h,65h,6eh,64h,69h,6eh,67h,20h,20h,20h
        db 44h,61h 74h,61h,20h,74h,6fh,20h,43h,6fh,6dh,70h,75h,74h,65h,72h
        db 20h,20h 20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h
        db 50h,6ch 65h,61h,73h,65h,20h,57h,61h,69h,74h,20h,2eh,2eh,2eh,20h
;
s232:   nop
        mov dptr,#0200h
        mov a,#41h
        mov r2,#26
s232l:  nop
        movx @dptr,a
        inc dptr
        inc a
        djnz r2,s232l
        ret
;
RTS:    JBC TI,TS1
        JBC RI,TS20
        RETI
TS1:    JB 13H,TS2
        RETI
TS2:    CLR EA
        CLR ES
        PUSH PSW
        PUSH DPH
        PUSH DPL
        PUSH A
        MOV DPH,31H
        MOV DPL,32H
        MOVX A,@DPTR
        INC DPTR
        MOV 31H,DPH
        MOV 32H,DPL
TS3:    MOV C,P
        MOV TB8,C
        MOV SBUF,A
        CLR C
        SUBB A,#25H
        JZ TS4
        POP A
        POP DPL
        POP DPH
        POP PSW
        SETB ES
        SETB EA
        RETI
TS4:    SETB 1AH
        clr 13h
        clr 16h
        MOV 31H,#02H
        MOV 32H,#00H
        POP A
        POP DPL
        POP DPH
        POP PSW
        SETB ES
        SETB EA
        RETI
TS20:   CLR EA
        CLR ES
        PUSH PSW
        PUSH DPH
        PUSH DPL
        PUSH A
        PUSH B
        MOV A,SBUF
        MOV B,A
        jnb 16h,ts21
        MOV DPTR,#00f3H
        MOVX A,@DPTR
        CLR C
        SUBB A,B
        JNZ TS21
        MOV 31H,#02H
        MOV 32H,#00H
        MOV DPH,31H
        MOV DPL,32H
        MOVX A,@DPTR
        INC DPTR
        MOV 31H,DPH
        MOV 32H,DPL
        MOV C,P
        MOV TB8,C
        MOV SBUF,A
        setb 13h
TS21:   POP B
        POP A
        POP DPL
        POP DPH
        POP PSW
        SETB ES
        SETB EA
        RETI
;
TRT2:   MOV A,#0FDH             ; baud rate 9600 .
TRT2L:  MOV TMOD,#20H
        MOV TH1,A
        MOV TL1,A
        SETB TR1
        MOV SCON,#0D0H
        MOV PCON,#00H
        SETB ES
        CLR TI
        RET
;
;                               整理显示缓区 .
movbuf: nop
;                               整理第一行 .
        mov dptr,ds1225
        mov a,#8eh              ; "车号" 后面的空格(车号14位) .
        add a,dpl
        mov dpl,a
        mov a,#20h
        movx @dptr,a
        inc dptr
        movx @dptr,a
;                               整理第二行 .
        mov dptr,ds1225
        mov a,#9ah              ; "轴号" 后面的空格(轴号10位) .
        add a,dpl
        mov dpl,a
        mov a,#20h
        movx @dptr,a
        inc dptr                ; "厂代号" 后面的空格(厂代号4位) .
        inc dptr
        inc dptr
        inc dptr
        inc dptr
        movx @dptr,a
;                               整理第三行 .
        mov dptr,ds1225
        mov a,#0c9h             ; "轴型" 后面的空格(轴型4位) .
        add a,dpl               ; 初始化显示 "RD2" 轴型 .
        mov dpl,a
        mov a,#1
        movx @dptr,a
;
        clr 18h                 ; 初始化 "新/旧" 为新 .
        clr 19h                 ; 初始化 "左/右" 为左 .
;
        mov dptr,ds1225         ; 初始化"人名"为"0" .
        mov A,#0cbh
        add a,dpl
        mov dpl,a
        mov a,#0
        movx @dptr,a
;
        mov dptr,ds1225         ; 初始化"检测截面" 为第1个截面 .
        mov A,#0c8h
        add a,dpl
        mov dpl,a
        mov a,#1
        movx @dptr,a
        mov dptr,ds1225         ; 初始化"截面上检测点" 为第1点 .
        mov A,#0cah
        add a,dpl
        mov dpl,a
        mov a,#1
        movx @dptr,a
;
        ret
;
;                               取字母子程序 .
takeAZ: nop
        mov dptr,ds1225
        mov a,#20h
        add a,dpl
        add a,46h
        clr c
        subb a,#1
        mov dpl,a
        movx a,@dptr
        ret
;
;                                 转换编程值 .
trapg:  nop
        mov r0,a
        mov dptr,ds1225
        mov a,#18h              ; 取编程点号 .
        add a,dpl
        mov dpl,a
        mov a,r0
        movx @dptr,a
        clr c
        subb a,#31h
        mov r1,a
        mov dptr,ds1225
        mov a,#0f0h
        add a,r1
        add a,dpl
        mov dpl,a
        movx a,@dptr
        mov r1,a
        mov dptr,ds1225
        mov a,#28h
        add a,dpl
        mov dpl,a
        mov a,r1
        clr c
        subb a,#100
        jnc trpgl1
        mov a,#20h
        movx @dptr,a
        inc dptr
        mov a,r1
        clr c
        subb a,#10
        jnc trpgl2
        mov a,#20h
        movx @dptr,a
        inc dptr
        sjmp trpgl3
trpgl1: nop
        mov a,r1
        mov b,#100
        div ab
        add a,#30h
        movx @dptr,a
        inc dptr
        mov r1,b
trpgl2: nop
        mov a,r1
        mov b,#10
        div ab
        add a,#30h
        movx @dptr,a
        inc dptr
        mov r1,b
trpgl3: nop
        mov a,r1
        add a,#30h
        movx @dptr,a
        ret
;
;                                 查看数据时, 显示数据 .
check:  nop
        mov dptr,ds1225
        mov p2,dph
        mov r0,dpl
        mov r2,#40h
chel1:  nop
        mov a,#20h
        movx @r0,a
        inc r0
        djnz r2,chel1
;                       显示第四行: ***-PAGE1(2)   LOOK .
        mov dptr,ds1225
        mov p2,dph
        mov a,#30h
        add a,dpl
        mov r0,a
        mov a,46h
        mov b,#100
        div ab
        add a,#30h
        movx @r0,a
        inc r0
        mov a,b
        mov b,#10
        div ab
        add a,#30h
        movx @r0,a
        inc r0
        mov a,b
        add a,#30h
        movx @r0,a
        inc r0
        mov a,#2dh
        movx @r0,a
        inc r0
        mov a,#50h              ; P
        movx @r0,a
        inc r0
        mov a,#41h              ; A
        movx @r0,a
        inc r0
        mov a,#47h              ; G
        movx @r0,a
        inc r0
        mov a,#45h              ; E
        movx @r0,a
        inc r0
        mov a,48h
        add a,#30h
        movx @r0,a
        inc r0
;
        mov dptr,ds1225
        mov p2,dph
        mov a,#3ch
        add a,dpl
        mov r0,a
        mov a,#4ch              ; L .
        movx @r0,a
        inc r0
        mov a,#4fh              ; O .
        movx @r0,a
        inc r0
        mov a,#4fh              ; O .
        movx @r0,a
        inc r0
        mov a,#4bh              ; K .
        movx @r0,a
        mov dptr,ds1225
        mov p2,dph
        mov r0,dpl
;
        mov dptr,ds1225
        mov a,#02h
        add a,dph
        mov dph,a
        mov a,46h
        clr c
        subb a,#1
        jnz chel2
        ljmp chel3
chel2:  nop
        mov r2,a
chel21: nop
        push dph
        push dpl
        inc dptr
        inc dptr
        movx a,@dptr
        mov r3,a
        pop dpl
        pop dph
        mov a,r3
        cjne a,#33h,chel22
        mov r4,#118             ; 客车轴径118个字符 .
        sjmp chel25
chel22: nop
        cjne a,#32h,chel23
        mov r4,#70              ; 防尘板座70个字符 .
        sjmp chel25
chel23: nop
        mov r4,#94              ; 货车轴径94个字符 .
chel25: nop
        mov a,r4
        add a,dpl
        mov dpl,a
        mov a,dph
        addc a,#0
        mov dph,a
        djnz r2,chel21
;                       找到当前数组位置, 送B** .
chel3:  nop
        push dph
        push dpl
        mov dptr,ds1225
        mov p2,dph
        mov r0,dpl
        pop dpl
        pop dph
;
chel4:  nop
        mov a,48h
        cjne a,#1,chel5
;                       送车号等第一页显示数据 .
;                       送车号 .
        inc dptr
        inc dptr
        inc dptr
        inc dptr
        mov r2,#15
chel41: nop
        movx a,@dptr
        movx @r0,a
        inc dptr
        inc r0
        djnz r2,chel41
        inc r0
;                       送轴号, 厂号 .
        mov r2,#16
chel42: nop
        movx a,@dptr
        movx @r0,a
        inc dptr
        inc r0
        djnz r2,chel42
;                       送轴型, 新旧, 左右, 人名 .
        mov r2,#11
chel43: nop
        movx a,@dptr
        movx @r0,a
        inc dptr
        inc r0
        djnz r2,chel43
        ret
;                               显示第二页数据 .
chel5:  nop
        inc dptr
        inc dptr
        movx a,@dptr
        mov r5,a
        mov a,#44
        add a,dpl
        mov dpl,a
        mov a,#0
        addc a,dph
        mov dph,a
        mov a,r5
        cjne a,#33h,chel51
;                               客车 : 三组数 .
        lcall ddata             ; 显示一行平均值, 圆度 .
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -