📄 s2.asm
字号:
;辛工:我们改的位置都用"?????"作了标记,其它没改.孙刚
MDATA SEGMENT
DST2_0 DB 0
DST2_1 DB 0
DST2_2 DB 0
DST2_3 DB 0
DST2_4 DB 0
DST3 DB 2 DUP(0)
DST3F DB ' '
DB '*'
DST5_0 DW 0
DST5_1 DW 0
DST5_2 DW 0
DST5_3 DW 0
DST5_4 DW 0
DST5_5 DW 0
DST6_0 DW 0
DST6_1 DW 0
DST6_2 DW 0
DST6_3 DW 0
DST7_0 DW 0
DST7_1 DW 0
DST7_2 DW 0
DST7_3 DW 0
DST7_4 DW 0
DST7_5 DW 0
ATC0 DB 70H,71H,72H,73H,30H
ATC1 DB 74H,75H,76H,77H,30H
ATC2 DB 78H,79H,7AH,7BH,30H
ATC3 DB 7CH,7DH,7EH,7FH,30H
TC0_0 DB 40H,41H,42H,43H,44H,45H,46H,47H ;'TS-码流发生器'
TC0_1 DB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FH ;'北京牡丹电子集团'
TC0_2 DB 21H,3CH,50H,51H,52H,53H ;'1、 编缉节目'
TC0_3 DB 22H,3CH,54H,55H,56H,57H ;'2、 播放节目'
TC0_4 DB 3BH ;'*'
TC0_5 DB 30H ;' '
TC0 DB 60H,30H,61H,30H,30H,62H,30H,63H ;'请 您 稍 候'
TC1 DB 64H,30H,65H,30H,30H,66H,30H,67H ;'正 在 播 放'
TC2_0 DB 20H,20H,3DH,20H,20H ;00:00
TC2_1 DB 20H,20H,3DH,20H,20H ;00:00
TC2_2 DB 20H,20H,3DH,20H,20H ;00:00
TC2_3 DB 20H,20H,3DH,20H,20H ;00:00
FILED DB 8 DUP(0)
FILE0 DB 'XDST0U.EXE',0
FILE1 DB 'XDST1U.EXE',0
ASC8F DB 'XX3.EXE',0 ;ASC8
DB 400H DUP(0)
DST0 DB 19619 DUP(0)
DB 400H DUP(0)
DST1 DB 2947 DUP(0)
DDST1 DB 10 DUP(0)
LDST0 EQU 212
LDST1 EQU 24
MDATA ENDS
STACK SEGMENT
STAPN DB 100 DUP(?)
TOP EQU LENGTH STAPN
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:MDATA,SS:STACK
START: MOV AX,MDATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
XOR SI,SI
XOR DI,DI
XOR BP,BP
CLD
CALL RS232I
MOV DX,OFFSET FILE0
MOV AX,3D00H
INT 21H
MOV BX,AX
MOV CX,19619
MOV DX,OFFSET DST0
SUB DX,200H
MOV AH,3FH
INT 21H
MOV AH,3EH
INT 21H
MOV DX,OFFSET FILE1
MOV AX,3D00H
INT 21H
MOV BX,AX
MOV CX,2947
MOV DX,OFFSET DST1
SUB DX,200H
MOV AH,3FH
INT 21H
MOV AH,3EH
INT 21H
CALL RS232C
MOV WORD PTR CS:RDSTT_0,12 ;X
MOV WORD PTR CS:RDSTT_1,1*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,8
MOV AX,OFFSET TC0_0
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_0
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV WORD PTR CS:RDSTT_0,12 ;X
MOV WORD PTR CS:RDSTT_1,3*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,8
MOV AX,OFFSET TC0_1
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_1
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV AH,07H
INT 21H
RESET: MOV BYTE PTR DST2_0,1
CALL RS232C
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,1*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0FFH
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_2
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_2
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,2*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_3
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
X00: MOV AH,07H
INT 21H
CMP AL,'3' ;up arrow key
JE X01
JMP X03
X01: CMP BYTE PTR DST2_0,1
JE X02
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,1*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0FFH
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_2
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_2
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,2*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_3
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV BYTE PTR DST2_0,1
X02: JMP X00
X03: CMP AL,'1' ;down arrow key
JZ X04
JMP X06
X04: CMP BYTE PTR DST2_0,2
JE X05
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,1*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_2
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_2
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV WORD PTR CS:RDSTT_0,2*12 ;X
MOV WORD PTR CS:RDSTT_1,2*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0FFH
MOV WORD PTR CS:RDSTT_4,6
MOV AX,OFFSET TC0_3
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG TC0_3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV BYTE PTR DST2_0,2
X05: JMP X00
X06: CMP AL,'0' ;acknowledge key
JZ X07
JMP X00
X07: CMP BYTE PTR DST2_0,1
JNZ X08
JMP Y00
X08: JMP X00
Y00: CALL RS232C
MOV WORD PTR CS:RDSTT_0,120 ;X
MOV WORD PTR CS:RDSTT_1,0 ;Y
MOV WORD PTR CS:RDSTT_2,31H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,1
XOR BX,BX
MOV BL,BYTE PTR DST3
MOV AX,OFFSET DST3F
ADD AX,BX
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV BYTE PTR DST2_0,1
MOV BYTE PTR DST2_1,1
MOV BYTE PTR DST2_2,2
MOV BYTE PTR DST2_3,3
MOV BYTE PTR DST2_4,4
Y01: MOV BX,1
Y02: MOV DL,BL
DEC DL
MOV AL,16
MUL DL
MOV WORD PTR CS:RDSTT_0,3*12 ;X
MOV WORD PTR CS:RDSTT_1,AX ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
CMP BL,BYTE PTR DST2_0
JNZ Y03
MOV WORD PTR CS:RDSTT_3,0FFH
Y03: MOV WORD PTR CS:RDSTT_4,5
MOV AL,LDST0
MOV DL,BYTE PTR DST2_0[BX]
DEC DL
MUL DL
ADD AX,OFFSET DST0
ADD AX,2
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST0
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
INC BX
CMP BX,5 ;4
JNZ Y02
Y04:
MOV AH,07H
INT 21H
CMP AL,'3' ;up arrow key
JNE Y09
CMP BYTE PTR DST3,0
JE Y06
CMP BYTE PTR DST2_1,11
JAE Y05
JMP Y04
Y05: SUB BYTE PTR DST2_1,10
SUB BYTE PTR DST2_2,10
SUB BYTE PTR DST2_3,10
SUB BYTE PTR DST2_4,10
JMP Y01
Y06: CMP BYTE PTR DST2_0,1
JE Y07
DEC BYTE PTR DST2_0
JMP Y01
Y07: CMP BYTE PTR DST2_1,1
JNE Y08
JMP Y04
Y08: DEC BYTE PTR DST2_1
DEC BYTE PTR DST2_2
DEC BYTE PTR DST2_3
DEC BYTE PTR DST2_4
JMP Y01
Y09:
CMP AL,'1' ;down arrow key
JNE Y0E
CMP BYTE PTR DST3,0
JE Y0B
MOV AL,BYTE PTR DST2_4 ;DST2_3
ADD AL,10
CMP AL,BYTE PTR DST0[0]
JBE Y0A
JMP Y04
Y0A: ADD BYTE PTR DST2_1,10
ADD BYTE PTR DST2_2,10
ADD BYTE PTR DST2_3,10
ADD BYTE PTR DST2_4,10
JMP Y01
Y0B: CMP BYTE PTR DST2_0,4 ;3
JE Y0C
INC BYTE PTR DST2_0
JMP Y01
Y0C: MOV AL,BYTE PTR DST0[0]
CMP BYTE PTR DST2_4,AL ;DST2_3,AL
JNE Y0D
JMP Y04
Y0D: INC BYTE PTR DST2_1
INC BYTE PTR DST2_2
INC BYTE PTR DST2_3
INC BYTE PTR DST2_4
JMP Y01
Y0E:
CMP AL,'2' ;back light key
JNE Y0F
; XOR BYTE PTR DST4,01H
; MOV DX,300H ;*****
; MOV AL,BYTE PTR DST4
; OUT DX,AL
JMP Y04
Y0F:
CMP AL,'4' ;MUX key
JNZ Y10
XOR BYTE PTR DST3,01H
MOV WORD PTR CS:RDSTT_0,120 ;X
MOV WORD PTR CS:RDSTT_1,0 ;Y
MOV WORD PTR CS:RDSTT_2,31H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,1
XOR BX,BX
MOV BL,BYTE PTR DST3
MOV AX,OFFSET DST3F
ADD AX,BX
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
JMP Y04
Y10:
CMP AL,'0' ;acknowledge key
JNZ Y11
JMP Y13
Y11:
CMP AL,' ' ;reset key
JNE Y12
MOV DX,OFFSET FILE0
MOV CX,0
MOV AH,3CH
INT 21H
MOV BX,AX
MOV CX,19619
MOV DX,OFFSET DST0
SUB DX,200H
MOV AH,40H
INT 21H
MOV AH,3EH
INT 21H
JMP RESET
Y12: JMP Y04
Y13: MOV BL,BYTE PTR DST2_0
XOR BH,BH
MOV AL,BYTE PTR DST2_0[BX]
DEC AL
MOV DL,LDST0
MUL DL
ADD AX,2
MOV WORD PTR DST7_3,AX
CALL RS232C
MOV WORD PTR CS:RDSTT_0,120 ;X
MOV WORD PTR CS:RDSTT_1,0 ;Y
MOV WORD PTR CS:RDSTT_2,31H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,1
XOR BX,BX
MOV BL,BYTE PTR DST3
MOV AX,OFFSET DST3F
ADD AX,BX
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV BYTE PTR DST2_0,1
MOV BYTE PTR DST2_1,1
MOV BYTE PTR DST2_2,2
MOV BYTE PTR DST2_3,3
MOV BYTE PTR DST2_4,4
Y14: MOV BX,1
Y15: MOV DL,BL
DEC DL
MOV AL,16
MUL DL
MOV WORD PTR CS:RDSTT_0,3*12 ;X
MOV WORD PTR CS:RDSTT_1,AX ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
CMP BL,BYTE PTR DST2_0
JNZ Y16
MOV WORD PTR CS:RDSTT_3,0FFH
Y16: MOV WORD PTR CS:RDSTT_4,5
MOV AL,LDST1
MOV DL,BYTE PTR DST2_0[BX]
DEC DL
MUL DL
ADD AX,2
ADD AX,16
MOV SI,AX
MOV AL,BYTE PTR DST1[SI+0]
MOV BYTE PTR DDST1[1],AL
MOV AL,BYTE PTR DST1[SI+1]
MOV BYTE PTR DDST1[2],AL
MOV AL,BYTE PTR DST1[SI+2]
MOV BYTE PTR DDST1[3],AL
MOV AL,BYTE PTR DST1[SI+3]
MOV BYTE PTR DDST1[4],AL
MOV AL,2
MOV DL,BYTE PTR DST2_0[BX]
DEC DL
MUL DL
ADD AX,WORD PTR DST7_3
MOV SI,AX
MOV AL,BYTE PTR TC0_4
CMP BYTE PTR DST0[SI+13],0
JNZ Y17
MOV AL,BYTE PTR TC0_5
Y17: MOV BYTE PTR DDST1[0],AL
MOV AX,OFFSET DDST1
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DDST1
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
INC BX
CMP BX,5 ;4
JZ Y18
JMP Y15
Y18:
MOV AH,07H
INT 21H
CMP AL,'3' ;up arrow key
JNE Y1D
CMP BYTE PTR DST3,0
JE Y1A
CMP BYTE PTR DST2_1,11
JAE Y19
JMP Y18
Y19: SUB BYTE PTR DST2_1,10
SUB BYTE PTR DST2_2,10
SUB BYTE PTR DST2_3,10
SUB BYTE PTR DST2_4,10
JMP Y14
Y1A: CMP BYTE PTR DST2_0,1
JE Y1B
DEC BYTE PTR DST2_0
JMP Y14
Y1B: CMP BYTE PTR DST2_1,1
JNE Y1C
JMP Y18
Y1C: DEC BYTE PTR DST2_1
DEC BYTE PTR DST2_2
DEC BYTE PTR DST2_3
DEC BYTE PTR DST2_4
JMP Y14
Y1D:
CMP AL,'1' ;down arrow key
JNE Y22
CMP BYTE PTR DST3,0
JE Y1F
MOV AL,BYTE PTR DST2_4 ;DST2_3
ADD AL,10
CMP AL,BYTE PTR DST1[0]
JBE Y1E
JMP Y18
Y1E: ADD BYTE PTR DST2_1,10
ADD BYTE PTR DST2_2,10
ADD BYTE PTR DST2_3,10
ADD BYTE PTR DST2_4,10
JMP Y14
Y1F: CMP BYTE PTR DST2_0,4 ;3
JE Y20
INC BYTE PTR DST2_0
JMP Y14
Y20: MOV AL,BYTE PTR DST1[0]
CMP BYTE PTR DST2_4,AL ;DST2_3,AL
JNE Y21
JMP Y18
Y21: INC BYTE PTR DST2_1
INC BYTE PTR DST2_2
INC BYTE PTR DST2_3
INC BYTE PTR DST2_4
JMP Y14
Y22:
CMP AL,'2' ;back light key
JNE Y23
; XOR BYTE PTR DST4,01H
; MOV DX,300H ;*****
; MOV AL,BYTE PTR DST4
; OUT DX,AL
JMP Y18
Y23:
CMP AL,'4' ;MUX key
JNZ Y24
XOR BYTE PTR DST3,01H
MOV WORD PTR CS:RDSTT_0,120 ;X
MOV WORD PTR CS:RDSTT_1,0 ;Y
MOV WORD PTR CS:RDSTT_2,31H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,1
XOR BX,BX
MOV BL,BYTE PTR DST3
MOV AX,OFFSET DST3F
ADD AX,BX
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
JMP Y18
Y24:
CMP AL,'0' ;acknowledge key
JNZ Y27
MOV BL,BYTE PTR DST2_0
XOR BH,BH
MOV AL,BYTE PTR DST2_0[BX]
DEC AL
MOV DL,2
MUL DL
ADD AX,WORD PTR DST7_3
MOV SI,AX
CMP BYTE PTR DST0[SI+13],0
JNZ Y25
MOV BYTE PTR DST0[SI+13],1
MOV SI,WORD PTR DST7_3
INC BYTE PTR DST0[SI+10]
JMP Y26
Y25: MOV BYTE PTR DST0[SI+13],0
MOV SI,WORD PTR DST7_3
DEC BYTE PTR DST0[SI+10]
Y26: JMP Y14
Y27:
CMP AL,' ' ;reset key
JNE Y28
JMP Y00
Y28:
CMP AL,'m' ;time range set
JZ Y29
JMP Y2A
Y29: PUSH WORD PTR DST2_0
PUSH WORD PTR DST2_2
MOV BL,BYTE PTR DST2_0
XOR BH,BH
MOV AL,BYTE PTR DST2_0[BX]
DEC AL
MOV DL,LDST1
MUL DL
ADD AX,2
MOV SI,AX
MOV WORD PTR DST7_4,SI ;the OFFSET in DST1
MOV AX,WORD PTR DST1[SI+00] ;all length
MOV WORD PTR DST6_0,AX
MOV AX,WORD PTR DST1[SI+02] ;now start time
MOV WORD PTR DST6_1,AX
MOV AX,WORD PTR DST1[SI+04] ;now length
MOV WORD PTR DST6_2,AX
CALL TRS
POP WORD PTR DST2_2
POP WORD PTR DST2_0
CALL RS232C
MOV WORD PTR CS:RDSTT_0,120 ;X
MOV WORD PTR CS:RDSTT_1,0 ;Y
MOV WORD PTR CS:RDSTT_2,31H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,1
XOR BX,BX
MOV BL,BYTE PTR DST3
MOV AX,OFFSET DST3F
ADD AX,BX
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG DST3
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
JMP Y14
Y2A: JMP Y18
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TRS PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
MOV AX,WORD PTR DST6_0
MOV WORD PTR DST5_0,AX ;all length
MOV AX,WORD PTR DST6_2 ;now length
MOV WORD PTR DST5_1,AX
MOV AX,WORD PTR DST6_1
MOV WORD PTR DST5_2,AX ;now start time
ADD AX,WORD PTR DST6_2
MOV WORD PTR DST5_3,AX ;now end time
CALL RS232C
MOV WORD PTR CS:RDSTT_0,0*12 ;X
MOV WORD PTR CS:RDSTT_1,0*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
MOV WORD PTR CS:RDSTT_4,5
MOV AX,OFFSET ATC0
MOV WORD PTR CS:RDSTT_5,AX
MOV AX,SEG ATC0
MOV WORD PTR CS:RDSTT_6,AX
CALL RS232T
MOV WORD PTR CS:RDSTT_0,0*12 ;X
MOV WORD PTR CS:RDSTT_1,1*16 ;Y
MOV WORD PTR CS:RDSTT_2,34H
MOV WORD PTR CS:RDSTT_3,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -