📄 45d041.asm
字号:
;;;the command:
;;;1: ----main memory page read:
;;;; 52h + 24 bits(include 4 reserved bits) +32 bits(don't care )
;;;2: ----buffer1 read:
;;; 54h + 15 bits(don't care ) +9 bits(address bits) + 8 bits(don't care)
;;;3: ----buffer2 read:
;;; 56h + 15 bits(don't care ) +9 bits(address bits) + 8 bits(don't care)
;;;4: ----main memory page to buffer1 transfer:
;;; 53h +
;;;REQ EQU P3.2
BUSY EQU P1.0
RES EQU P1.3
CS EQU P1.4
SO EQU P1.6
SCLK EQU P1.7
SI EQU P1.5
HHHH EQU 12H ;;;;THE HIGHEST ADDRESS LINES
HHLL EQU 13H ;;;;SECOND
LLLL EQU 14H ;;;;LOW LINES
YYYY EQU 15H
MM EQU 17H
DD EQU 18H
ORG 0
JMP INIT
RETI
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;--- TIMER T0 INT.
ORG 0BH
LJMP BEGIN
;------------
NOP
NOP
NOP
NOP
NOP
RETI
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RETI
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;-- COMM INT
ORG 23H
JMP BEGIN
;------
NOP
NOP
NOP
NOP
NOP
RETI
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ORG 50H
HBCD:DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
DB 10H,11H,12H,13H,14H,15H
ORG 100H
INIT:
MOV A,#00H
MOV PSW,A
MOV SP,#80H
CLR RES
LCALL DELAY
SETB RES
CLR EA
BEGIN:
NOP
NOP
NOP
LCALL RSTATUS
MOV C,P1.0
NOP
NOP
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL
MOV A,#00H
MOV @R0,A
MOV R2,#80 ;;;NUM
LCALL RBUFFER1
NOP
NOP
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL
MOV A,#10H
MOV @R0,A
MOV R2,#16
MOV R0,#50H ;;DATA BUFFER
LCALL WBUF1
LPS00:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPS00
NOP
NOP
MOV R0,#HHHH ;;;4 RESERVED BITS + 4 PAGE ADDR
MOV A,#00H
MOV @R0,A
MOV R0,#HHLL ;;;7 PAGE ADDRESS + 1 FIRST BYTE ADDR
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL ;;;8 BIT FIRST BYTE ADDRESS
MOV A,#00H
MOV @R0,A
MOV R2,#16
MOV R0,#50H
LCALL MAINPGM
LCALL RSTATUS
NOP
NOP
MOV R0,#HHHH
MOV A,#00H
MOV @R0,A
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
LCALL BFTOMAIN
NOP
NOP
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL
MOV A,#00H
MOV @R0,A
LCALL MAINTOBF
NOP
NOP
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL
MOV A,#00H
MOV @R0,A
LCALL MCMPBF1 ;;;;?????????
LCALL RSTATUS ;;IF SAME AND READY RETURN 80H
NOP
NOP
MOV R0,#HHHH ;;;4+4
MOV A,#01H
MOV @R0,A
MOV R0,#HHLL ;;;7+1
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL ;;;8
MOV A,#10H
MOV @R0,A
MOV R0,#YYYY
MOV A,#19H
MOV @R0,A
INC R0
MOV A,#97H
MOV @R0,A
MOV R0,#MM
MOV A,#08H
MOV @R0,A
MOV R0,#DD
MOV A,#02H
MOV @R0,A
NOP
LCALL WONEREC ;;;;;RRRRRRRRRRRRRRRRRRRRRRR
NOP
NOP
MOV R0,#HHHH ;;;4+4
MOV A,#03H
MOV @R0,A
MOV R0,#HHLL ;;;7+1
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL ;;;8
MOV A,#00H
MOV @R0,A
MOV R0,#YYYY
MOV A,#19H
MOV @R0,A
INC R0
MOV A,#93H
MOV @R0,A
MOV R0,#MM
MOV A,#06H
MOV @R0,A
MOV R0,#DD
MOV A,#01H
MOV @R0,A
NOP
LCALL W1PAGE ;;;;;;PPPPPPPPPPPPP
NOP
NOP
MOV R0,#HHHH
MOV A,#00H
MOV @R0,A
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
MOV R0,#LLLL
MOV A,#60H
MOV @R0,A
MOV R2,#80
LCALL RMAINP
NOP
NOP
MOV R0,#HHHH
MOV A,#00H
MOV @R0,A
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
NOP
LCALL FINDREC
NOP
NOP
LCALL FINDALL
NOP
NOP
MOV R0,#HHHH
MOV A,#00H
MOV @R0,A
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
LCALL ATREWR1
LCALL RSTATUS
NOP
NOP
NOP
LJMP BEGIN
;;;;;;;_____________________________________________
TEST:
RET
;;;;;;----------------
FINDALL: ;;;;;;; OK
MOV R0,#HHHH
MOV A,#00H
MOV @R0,A
NEXT11:
MOV R0,#HHHH
MOV A,@R0
INC A
MOV B,A
CLR C
SUBB A,#06H
JNC OOEXIT
MOV A,B
MOV R0,#HHHH
MOV @R0,A
MOV R0,#HHLL
MOV A,#00H
MOV @R0,A
NOP
LCALL FINDREC
JC SSSS
LPSBB:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPSBB
LJMP NEXT11
OOEXIT:
MOV A,#0EEH
JMP FFAA
SSSS: MOV A,#0AAH
FFAA:
RET
;;;;INPUT :HHHH,HHLL,LLLL,YYYY,MM,DD
WONEREC:
NOP
MOV R1,#50H
MOV R0,#YYYY
MOV A,@R0
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV @R1,A
MOV R0,#MM
MOV A,@R0
INC R1
MOV @R1,A
MOV R0,#DD
MOV A,@R0
INC R1
MOV @R1,A
NOP
LCALL MAINTOBF
LPSSS:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPSSS
LCALL DELAY
NOP
;;;;;;;;;;;;;;;;;;
MOV R2,#16
MOV R0,#50H ;;DATA BUFFER
LCALL WBUF1
LPWB:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPWB
LCALL DELAY
NOP
LCALL BFTOMAIN
LPBTM:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPBTM
LCALL DELAY
NOP
RET
;;;;;;PPPPPPPPPPPPPPPPPPPPPPPPPPP
;;;;INPUT :HHHH,HHLL,LLLL,YYYY,MM,DD
W1PAGE:
NOP
MOV R1,#50H
MOV R0,#YYYY
MOV A,@R0
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV @R1,A
MOV R0,#MM
MOV A,@R0
INC R1
MOV @R1,A
MOV R0,#DD
MOV A,@R0
INC R1
MOV @R1,A
NOP
LCALL MAINTOBF
LPS11:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPS11
;; LCALL DELAY1
NOP
;;;;;;;;;;;;;;;;;;
MOV R2,#16
LPZZZ:
MOV A,R2
PUSH ACC
MOV R2,#16
MOV R0,#50H ;;DATA BUFFER
LCALL WBUF1
LPWB11:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPWB11
;; LCALL DELAY1
MOV R0,#53H ;;;UPDATE DD
MOV A,@R0
INC A
MOV B,A
LCALL HTOBCD
MOV @R0,A
MOV R0,#LLLL
MOV A,@R0
ADD A,#10H
MOV @R0,A ;;;;UPDATE LLLL
POP ACC
MOV R2,A
DJNZ R2,LPZZZ
NOP
LCALL BFTOMAIN
LPBTM11:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPBTM11
;; LCALL DELAY1
NOP
RET
; 1A-->15
;;;;INPUT B
HTOBCD:
MOV A,B
ANL A,#0FH
MOV DPTR,#HBCD
MOVC A,@A+DPTR
PUSH ACC
MOV A,B
ANL A,#0F0H
MOV B,A
POP ACC
ADD A,B
RET
;;;;
;;;;; INPUT: SPECIFY PAGE ADDRESS HHHH(4),HHLL(7);
;;;;OUTPUT: C==1 : MATCH RECORD
;;;;; C==0 : NOT FOUND
;;;;; HHHH,HHLL,LLLL--->IF C==1 SPECIFY THE POSITION
FINDREC:
NOP
LCALL MAINTOBF
LPSAA:
LCALL RSTATUS
MOV R0,#26H
MOV A,@R0
JNB ACC.7,LPSAA
NOP
MOV R4,#15
LPFF:
NOP
MOV R0,#LLLL
MOV A,R4
SWAP A
ANL A,#0F0H
MOV @R0,A
MOV R2,#16 ;;;NUM
LCALL RBUFFER1
LCALL CMPDAY
JC HAVE
NOP
DJNZ R4,LPFF ;;;;;;F0H ---> 10H
MOV R0,#LLLL
MOV A,#00H ;;;;;00H
MOV @R0,A
MOV R2,#16 ;;;NUM
LCALL RBUFFER1
LCALL CMPDAY
JC HAVE
CLR C
JMP ENDCMP
HAVE:
SETB C
MOV R0,#LLLL
MOV A,R4
MOV @R0,A
ENDCMP:
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -