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

📄 glq.asm

📁 一卡通源码程序是我公司的一卡通源码程序,绝对难得
💻 ASM
📖 第 1 页 / 共 5 页
字号:
get_limit:
	mov region,#limitab
	lcall quhead

	mov rec_h,#0

	mov rec_l,id_limit

	lcall get_ar

	mov a,r_nme
	mov b,#8
	div ab
	mov r3,b
	jz g_sf0

	mov r2,a
	lcall n_dptr

g_sf0:  movx a,@dptr
	cjne r3,#0,g_sf1
	ret

g_sf1:  rl a
	djnz r3,g_sf1
	ret
	;

;****************************
;get credit grade
;入口:credit单元
;出口:DAT_H,DAT_L单元
;****************************
get_credit:
	mov region,#credtab		;取得8区区头信息
	lcall quhead

	mov rec_h,#0
	mov rec_l,credit		;根据信用等级确定记录号

	lcall get_ar			;dptr指向整数高位字节

	movx a,@dptr			;dptr指向整数高位字节
	mov dat_h,a			;整数高位字节送dat_h

	lcall indptr

	movx a,@dptr
	mov dat_l,a			;整数低位字节送dat_l

	ret

;****************************
;       Verfity Ram
;****************************
verfity_ram:
	mov r0,#t_buf

	mov dptr,#d_374
	mov a,#10101010b
	movx @dptr,a
	;
	mov dptr,#5555h
	movx a,@dptr
	mov @r0,a
	mov a,#0aah
	movx @dptr,a
	inc r0

	mov dptr,#d_374
	mov a,#01010101b
	movx @dptr,a
	;
	mov dptr,#2aaah
	movx a,@dptr
	mov @r0,a
	mov a,#55h
	movx @dptr,a
	inc r0
	;
	mov dptr,#d_374
	mov a,#10011001b
	movx @dptr,a

	mov dptr,#4ccch
	movx a,@dptr
	mov @r0,a
	mov a,#33h
	movx @dptr,a
	inc r0

	mov dptr,#d_374
	mov a,#01100110b
	movx @dptr,a
	;
	mov dptr,#3333h
	movx a,@dptr
	mov @r0,a
	mov a,#0cch
	movx @dptr,a
	;
	nop
	nop
	nop
	;
	mov dptr,#d_374
	mov a,#10101010b
	movx @dptr,a
	;
	mov r0,#t_buf
	mov dptr,#5555h
	movx a,@dptr
	cjne a,#0aah,alrm
	mov a,@r0
	movx @dptr,a
	inc r0

	mov dptr,#d_374
	mov a,#01010101b
	movx @dptr,a
	;
	mov dptr,#2aaah
	movx a,@dptr
	cjne a,#55h,alrm
	mov a,@r0
	movx @dptr,a
	inc r0
	;
	mov dptr,#d_374
	mov a,#10011001b
	movx @dptr,a
	;
	mov dptr,#4ccch
	movx a,@dptr
	cjne a,#33h,alrm
	mov a,@r0
	movx @dptr,a
	inc r0

	mov dptr,#d_374
	mov a,#01100110b
	movx @dptr,a
	;
	mov dptr,#3333h
	movx a,@dptr
	cjne a,#0cch,alrm
	mov a,@r0
	movx @dptr,a
	;
	clr bit_c
	ret
	;
 alrm:  setb bit_c
	ret



;******************************
;******************************
;       Read 2051
;******************************
;******************************
rd2051: jnb f_ini,rd000

	clr led
	clr bp

	mov r2,#1
	lcall sleep

	setb led
	setb bp

	;
	mov r6,#4

 rrd3:  jb f_rx,rrd8

	mov r2,#1
	lcall sleep

	djnz r6,rrd3

	;
	mov r6,#2

 rrd5:  jb f_rx,rrd8

	clr led
	clr bp

	mov r2,#3
	lcall sleep

	setb led
	setb bp

	jb f_rx,rrd8

	mov r2,#3
	lcall sleep

	djnz r6,rrd5


	mov r6,#25

 rrd6:  jb f_rx,rrd8

	mov r2,#1
	lcall sleep

	djnz r6,rrd6

 rrd8:
	ret


rd000:  mov shn,#00000100b

	mov r6,#0
	mov p1,#0ffh
	;
rd_00:  mov r0,#r_buf
	mov dptr,#r_2051            ;Read 2051
	movx a,@dptr
	anl a,shn
	jz rd_03


rd_02:  inc r6

	mov a,shn
	rl a
	mov shn,a

	cjne a,#40h,rd_00

	mov a,#0ffh
	mov dptr,#w_2051
	movx @dptr,a
	ret

	;
rd_03:  mov a,shn
	cpl a
	movx @dptr,a               ;Write 2051
	;
	mov r7,#50
	;
rd_04:  movx a,@dptr               ;Read 2051
	anl a,shn
	jnz rd_05
	djnz r7,rd_04

	mov a,#0ffh
	movx @dptr,a

	djnz r7,$
	djnz r7,$
	;
	lcall p_err
	sjmp rd_02


rd_05:  mov a,p1
	mov @r0,a

	mov a,#0ffh
	movx @dptr,a
	;
	mov r5,#11
	;
	mov a,@r0
	inc r0
	cjne a,#19,rd_06

	mov r5,#51
	sjmp rd_09

	;
rd_06:  cjne a,#37,rd_07

	mov r5,#35
	sjmp rd_09

	;
rd_07:  cjne a,#41,rd_08

	mov r5,#35
	sjmp rd_09

	;
rd_08:  cjne a,#43,rd008
	mov r5,#51
	sjmp rd_09


rd008:  cjne a,#36,rd_09

	mov r5,#19


rd_09:  mov rtchk,r5
	inc rtchk

	;
	mov dptr,#r_2051

rd_10:  mov r7,#100

rd_11:  movx a,@dptr
	anl a,shn
	jz rd_12
	djnz r7,rd_11

	djnz r7,$
	djnz r7,$

	lcall p_err
	ljmp rd_02

	;
rd_12:  mov a,shn
	cpl a
	movx @dptr,a               ;Write 2051
	;
	mov r7,#50
	;
rd_13:  movx a,@dptr               ;Read 2051
	anl a,shn
	jnz rd_16
	djnz r7,rd_13

	mov a,#0ffh
	movx @dptr,a

rd_15:  lcall p_err

	mov r7,#0
	djnz r7,$
	djnz r7,$

	ljmp rd_02


rd_16:  mov a,p1
	mov @r0,a
	inc r0

	mov dptr,#w_2051
	mov a,#0ffh
	movx @dptr,a

	djnz r5,rd_10

	;
	mov a,rtchk
	rr a
	mov r5,a

	add a,#t_buf
	mov r1,a
	mov r0,#t_buf

	mov rtchk,#0

rd_17:  mov a,@r0
	mov b,@r1

	cjne a,b,rd_15

	add a,rtchk
	mov rtchk,a

	inc r0
	inc r1

	djnz r5,rd_17

	dec r0
	mov a,@r0
	add a,@r0

	cjne a,rtchk,rd_15


	;--------------------
	;  Data Deal
	;--------------------
	mov r0,#r_buf
	mov a,@r0
	cjne a,#32,rd_20
rd_20:  jnc rd_28

	cjne a,#16,rd_21
rd_21:  jc rd_25

	cjne a,#21,rd_22
rd_22:  jnc rd_25

	jnb f_s00,rd_25
	ljmp rd_40


rd_25:  ljmp rd_02


rd_28:  subb a,#32

	mov b,a
	rl a
	add a,b

	mov dptr,#rdtab
	jmp @a+dptr

rdtab:  ljmp rd_30          ;Command=32
	ljmp rd_31          ;Command=33: Scan Requst
	ljmp rd_32          ;Command=34: Requst CardSC && UserID
	ljmp rd_33          ;Command=35: Requst Ration
	ljmp rd_34          ;Command=36: Requst Infor of ID Adress
	ljmp rd_35          ;Command=37: Sale/Save Record
	ljmp rd_36          ;Command=38: Send Person Infor
	ljmp rd_37          ;Command=39: Test Comm
	ljmp rd_38          ;Command=40: Close Command Answer
	ljmp rd_39          ;Command=41: Receive Pos Date && Time
	ljmp rd_3a          ;Command=42: Update Pos Data && Time
	ljmp rd_3b          ;Command=43: Receive Pos UserID && CardSC
	ljmp rd_3c          ;Command=44: Requst Pos Menu
	ljmp rd_3d          ;Command=45: Return Post Status
	ljmp rd_02          ;Command=
	ljmp rd_02          ;Command=

rd_30:  ljmp rd_02          ;Initi Post

rd_31:  mov a,close
	anl a,shn
	jz rd310

	mov a,shn           ;Close Pos
	cpl a
	anl a,close
	mov close,a
	ljmp rd_75


rd310:  mov a,idsc
	anl a,shn
	jz rr310

	mov a,shn           ;Send UserID && CardSC
	cpl a
	anl a,idsc
	mov idsc,a
	ljmp rd_32


rr310:  mov region,#postab
	lcall quhead

	mov a,reclen
	cjne a,#32,rr311
rr311:  jnc rd311

	ret                 ;Ram Not Initilize


rd311:  mov r0,#r_buf
	inc r0

	mov dptr,#d_374
	mov a,#00000000b
	movx @dptr,a

rd312:  mov a,@r0
	cjne a,end_l,r3121

	sjmp r3123

r3121:  jc r3123

	mov @r0,#0

r3123:  mov dptr,#d_pos_in
	mov dpl,@r0
	movx a,@dptr
	jz rd313

	cjne a,shn,r3122

	sjmp rd313

r3122:  mov a,@r0

	inc @r0

	jnz rd312

	mov @r0,a
	ljmp r_317


rd313:  mov rec_h,#0
	mov rec_l,@r0
	mov r_nme,@r0

	lcall get_ar

	movx a,@dptr
	anl a,#7fh
	jnz r3133

	mov dptr,#d_374
	mov a,#00000000b
	movx @dptr,a
	sjmp r3122

	;
r3133:  movx a,@dptr
	jnb acc.7,rd314

	anl a,#7fh
	movx @dptr,a

	cjne a,#ratfunc,rd314

	ljmp rd330


rd314:  mov b,a
	jnb f_wck,rd315

	mov a,r_nme
	cjne a,r_win,rd315

	mov a,#41
	ljmp rd_60


rd315:  jnb f_win,rd316

	mov a,r_nme
	cjne a,r_win,rd316
	mov a,#43
	ljmp rd_60



rd316:  mov a,r_nme
	jnz rd318

	jnb f_s00,rd317
	ljmp rd_50


rd317:  jnb f_s16,rd318

r_317:  mov r0,#t_buf
	mov @r0,#100
	inc r0
	sjmp rd319


	;
rd318:  mov a,shn
	anl a,uptim
	jz  rd319

	mov a,shn
	cpl a
	anl a,uptim
	mov uptim,a
	ljmp rd_70



rd319:  mov r0,#t_buf
	inc r0

	mov @r0,r_nme

	inc r0
	mov @r0,b

	inc r0
	lcall indptr

	movx a,@dptr
	mov @r0,a

	mov dptr,#d_374
	mov a,#00000000b
	movx @dptr,a

	mov dptr,#d_pos_menu

	mov dpl,r_nme

	movx a,@dptr

	inc r0
	mov @r0,a

	mov r5,#6
	lcall chksum

	mov r5,#12
	ljmp wr2051



rd_32:  mov a,#00000000b        ;Send UserID && CardSC Pos
	mov dptr,#d_374
	movx @dptr,a

	mov dptr,#adr_offset

	mov r0,#t_buf

	mov @r0,#34
	inc r0

	mov b,#0

	mov r2,#24

 rd322: movx a,@dptr
	mov @r0,a

	orl a,b
	mov b,a

	inc dptr
	inc r0

	djnz r2,rd322

	mov a,b
	jnz rd325

	mov r0,#t_buf
	mov @r0,#200

	mov r5,#6
	lcall chksum

	mov r5,#12
	ljmp wr2051



rd325:  mov r5,#26
	lcall chksum

	mov r5,#52
	ljmp wr2051


rd_33:  mov region,#postab          ;Send Ration to Pos
	lcall quhead

	mov r0,#r_buf
	inc r0

	mov rec_h,#0
	mov rec_l,@r0

	mov r_nme,@r0

	lcall get_ar

	movx a,@dptr
	anl a,#7fh
	movx @dptr,a

rd330:  mov r2,#3
	lcall n_dptr

	mov r0,#r_buf

	mov @r0,#35
	inc r0

	mov @r0,r_nme
	inc r0

	mov r2,#3

rd337:  movx a,@dptr
	mov @r0,a

	inc r0
	lcall indptr

	djnz r2,rd337

	mov r5,#6
	lcall chksum

	mov r5,#12
	ljmp wr2051




rd_34:  mov region,#acctab            ;Send Person Accounts
	lcall quhead

	mov r0,#r_buf
	inc r0

        mov rec_h,@r0
	inc r0

        mov rec_l,@r0
        inc r0

        mov a,#r_buf
        add a,#16
        mov r1,a

        mov r2,#5
        lcall copy_s


        mov r_nme,@r0
	mov a,r_nme


	 mov r7,#10

rd340:  mov a,#r_buf
        mov r0,a

        add a,#16
        mov r1,a

        mov @r0,#38
        inc r0

        mov @r0,rec_h
        inc r0

        mov @r0,rec_l
        inc r0

	mov a,rec_h
	cjne a,end_h,rd341

	mov a,rec_l
	cjne a,end_l,rd341

	sjmp rd342

rd341:  jc rd342

	mov @r0,#0

	ljmp rd368



rd342:  lcall get_ar

	movx a,@dptr
	mov rtchk,a

        clr f_none
        clr f_sme

	cjne a,#1,r_341
	sjmp r_345

r_341:  cjne a,#2,r_342
	setb f_sme
	sjmp r_345

r_342:  cjne a,#3,r_343
	setb f_sme
	sjmp r_345

r_343:  clr a

        setb f_none

r_345:	mov @r0,a

        lcall indptr
	inc r0
	;
	movx a,@dptr
	mov @r0,a
	mov id_limit,a

	add a,rtchk
	mov rtchk,a

	lcall indptr
	inc r0

        mov r2,#5

r_346:  movx a,@dptr
        mov @r0,a
        mov b,@r1
        cjne a,b,r_348

        add a,rtchk
        mov rtchk,a

        lcall indptr
        inc r0
        inc r1

        djnz r2,r_346

        jb f_none,r3483		;f_none=1,为撤户卡,转r3483
        jb f_sme ,r348a		;f_sme=1,为管理卡或挂失卡,转r348a
				;为正常卡,顺序执行
;=========================================================modify
        mov a,reclen
        clr c
        subb a,#12
   	;subb a,#11
        mov r2,a		;r2=10
        ljmp r_34a
;==========================================================


r_348: djnz r7,r3481

       sjmp r3483


r3481: mov a,r2
       add a,#12
       mov r2,a
       lcall n_dptr

       movx a,@dptr
       mov rec_h,a

       lcall indptr

       mov a,rec_h
       cjne a,#0ffh,r_349

       movx a,@dptr
       cjne a,#0ffh,r_349

r3483: mov r0,#r_buf
       inc r0
       inc r0
       inc r0			;该记录的尾指针为FFFF,意即其后无可查询的记录

       mov @r0,#0
       ljmp rd368
;==========================================================modify

r348a:	mov a,reclen		;若为管理卡或挂失卡,不对预留字节进行处理
	clr c
	subb a,#8
	mov r2,a
	ljmp rd363
;============================================================




r_349: movx a,@dptr
       mov rec_l,a
       ljmp rd340

;======================================================modify

r_34a:	movx a,@dptr		;r2=10
	mov @r0,a

	add a,rtchk
	mov rtchk,a

	inc r0
	lcall indptr

	djnz r2,r_34a		;dptr指向信用额度字节

	;-------------------------------modify

	movx a,@dptr		;信用额度字节送credit单元
	mov credit,a

	;=============
	MOV RR_374,R_374	;保护二区页地址
	MOV SDPH,DPH
	MOV SDPL,DPL		;保护二区高、低地址
	;=============
	mov r2,a			;

	lcall get_credit	;调用获得信用额度子程序
				;将信用额度送入发送缓存
	mov @r0,dat_h		;信用额度整数高位--->发送缓存
	inc r0

	mov @r0,dat_l		;信用额度整数低位--->发送缓存


	mov a,r2

	add a,rtchk
	mov rtchk,a

	;============
	MOV R_374,RR_374

	MOV A,R_374
	MOV DPTR,#D_374
	MOVX @DPTR,A

	MOV DPH,SDPH
	MOV DPL,SDPL
	;===========
	inc r0
	lcall indptr		;dptr指向预留字节
	;--------------------------------

	movx a,@dptr		;dptr指向预留字节
	jnb acc.7,r_34b		;若acc.7=0,转r_34b
				;若acc.7=1
	mov a,#11
	ljmp rd367		;标志字节送11,发送至POS(表示二次靠卡,恶意透支)

r_34b:	orl a,#80h		;acc.7=1

	movx @dptr,a		;送入预留字节

	add a,rtchk		;计算校验和
	mov rtchk,a

	lcall indptr		;dptr指向尾指针(高)

	mov r2,#2

r_34c:	movx a,@dptr
	mov @r0,a

	add a,rtchk
	mov rtchk,a

	inc r0
	lcall indptr

	djnz r2,r_3

⌨️ 快捷键说明

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