192 lines
5.8 KiB
Plaintext
Executable File
192 lines
5.8 KiB
Plaintext
Executable File
Turbo Assembler Version 5.3 06-02-23 10:20:14 Page 1
|
||
code.asm
|
||
|
||
|
||
|
||
1 0000 DATA SEGMENT
|
||
2 0000 0000 INT_OFF1 DW 0
|
||
3 0002 0000 INT_SEG1 DW 0
|
||
4 0004 0000 INT_OFF2 DW 0
|
||
5 0006 0000 INT_SEG2 DW 0
|
||
6 0008 0001 LED_STATE DW 00000001B
|
||
7 000A DATA ENDS
|
||
8
|
||
9 0000 STACK SEGMENT
|
||
*Warning* code.asm(9) Reserved word used as symbol: STACK
|
||
10 0000 64*(0000) DW 100 DUP (0)
|
||
11 00C8 STACK ENDS
|
||
12
|
||
13 0000 CODE SEGMENT
|
||
14 ASSUME CS:CODE, DS:DATA, SS:STACK
|
||
15 0000 START:
|
||
16 0000 B8 0000s MOV AX, DATA
|
||
17 0003 8E D8 MOV DS, AX
|
||
18 0005 8E C0 MOV ES, AX
|
||
19 0007 B8 0000s MOV AX, STACK
|
||
20 000A 8E D0 MOV SS, AX
|
||
21
|
||
22 ; save main chip's original interruption vector
|
||
23 000C B8 350B MOV AX, 350BH
|
||
24 000F CD 21 INT 21H
|
||
25 0011 89 1E 0000r MOV INT_OFF1, BX
|
||
26 0015 8C C3 MOV BX, ES
|
||
27 0017 89 1E 0002r MOV INT_SEG1, BX
|
||
28
|
||
29 ; load main chip's new interruption vector
|
||
30 001B FA CLI
|
||
31 001C BA 0000s MOV DX, SEG SW_INT
|
||
32 001F 8E DA MOV DS, DX
|
||
33 0021 BA 00ADr MOV DX, OFFSET SW_INT
|
||
34 0024 B8 250B MOV AX, 250BH
|
||
35 0027 CD 21 INT 21H
|
||
36 0029 B8 0000s MOV AX, DATA
|
||
37 002C 8E D8 MOV DS, AX
|
||
38
|
||
39 ; save slave chip's original interruption vector
|
||
40 002E B8 3572 MOV AX, 3572H
|
||
41 0031 CD 21 INT 21H
|
||
42 0033 89 1E 0004r MOV INT_OFF2, BX
|
||
43 0037 8C C3 MOV BX, ES
|
||
44 0039 89 1E 0006r MOV INT_SEG2, BX
|
||
45
|
||
46 ; load slave chip's new interruption vector
|
||
47 003D FA CLI
|
||
48 003E BA 0000s MOV DX, SEG SW_INT
|
||
49 0041 8E DA MOV DS, DX
|
||
50 0043 BA 00ADr MOV DX, OFFSET SW_INT
|
||
51 0046 B8 2572 MOV AX, 2572H
|
||
52 0049 CD 21 INT 21H
|
||
53 004B B8 0000s MOV AX, DATA
|
||
54 004E 8E D8 MOV DS, AX
|
||
55
|
||
56 ; open main chip's interruption mask
|
||
Turbo Assembler Version 5.3 06-02-23 10:20:14 Page 2
|
||
code.asm
|
||
|
||
|
||
|
||
57 0050 E4 21 IN AL, 21H
|
||
58 0052 24 F7 AND AL, 11110111B
|
||
59 0054 E6 21 OUT 21H, AL
|
||
60
|
||
61 ; open slave chip's interruption mask
|
||
62 0056 E4 A1 IN AL, 0A1H
|
||
63 0058 24 FB AND AL, 11111011B
|
||
64 005A E6 A1 OUT 0A1H, AL
|
||
65
|
||
66 ; main code
|
||
67 005C BA 0283 MOV DX, 283H
|
||
68 005F B0 80 MOV AL, 10000000B
|
||
69 0061 EE OUT DX, AL
|
||
70 0062 BA 0283 MOV DX, 283H
|
||
71 0065 A1 0008r MOV AX, LED_STATE
|
||
72 0068 EE OUT DX, AL
|
||
73
|
||
74 0069 33 D2 XOR DX,DX
|
||
75 006B FB L1: STI
|
||
76 006C 83 FA 0A CMP DX, 10
|
||
77 006F 75 FA JNZ L1
|
||
78
|
||
79 ; reload main chip's original interruption vector
|
||
80 0071 FA CLI
|
||
81 0072 8B 16 0002r MOV DX,INT_SEG1
|
||
82 0076 8E DA MOV DS,DX
|
||
83 0078 8B 16 0000r MOV DX,INT_OFF1
|
||
84 007C B8 2572 MOV AX,2572H
|
||
85 007F CD 21 INT 21H
|
||
86 0081 B8 0000s MOV AX,DATA
|
||
87 0084 8E D8 MOV DS,AX
|
||
88
|
||
89 ; reload slave chip's original interruption vector
|
||
90 0086 FA CLI
|
||
91 0087 8B 16 0006r MOV DX,INT_SEG2
|
||
92 008B 8E DA MOV DS,DX
|
||
93 008D 8B 16 0004r MOV DX,INT_OFF2
|
||
94 0091 B8 2572 MOV AX,2572H
|
||
95 0094 CD 21 INT 21H
|
||
96 0096 B8 0000s MOV AX,DATA
|
||
97 0099 8E D8 MOV DS,AX
|
||
98
|
||
99 ; close main chip's interruption mask
|
||
100 009B E4 21 IN AL, 21H
|
||
101 009D 0C 08 OR AL, 00001000B
|
||
102 009F E6 21 OUT 21H, AL
|
||
103
|
||
104 ; close slave chip's interruption mask
|
||
105 00A1 E4 A1 IN AL, 0A1H
|
||
106 00A3 0C 04 OR AL, 00000100B
|
||
107 00A5 E6 A1 OUT 0A1H, AL
|
||
108 00A7 FB STI
|
||
109
|
||
110 ; return to DOS
|
||
111 00A8 B8 4C00 MOV AX,4C00H
|
||
112 00AB CD 21 INT 21H
|
||
113
|
||
Turbo Assembler Version 5.3 06-02-23 10:20:14 Page 3
|
||
code.asm
|
||
|
||
|
||
|
||
114 ; interruption service proccess
|
||
115 00AD SW_INT PROC NEAR
|
||
116 00AD 50 PUSH AX
|
||
117 00AE FA CLI
|
||
118 00AF 42 INC DX
|
||
119
|
||
120 00B0 52 PUSH DX
|
||
121 00B1 A1 0008r MOV AX, LED_STATE
|
||
122 00B4 03 C2 ADD AX, DX
|
||
123 00B6 25 0001 AND AX, 00000001B
|
||
124 00B9 BA 0283 MOV DX, 283H
|
||
125 00BC EE OUT DX, AL
|
||
126 00BD 5A POP DX
|
||
127
|
||
128 00BE B0 20 MOV AL, 20H
|
||
129 00C0 E6 20 OUT 20H, AL
|
||
130 00C2 B0 62 MOV AL, 62H
|
||
131 00C4 E6 A0 OUT 0A0H, AL
|
||
132 00C6 FB STI
|
||
133 00C7 58 POP AX
|
||
134 00C8 CF IRET
|
||
135 00C9 SW_INT ENDP
|
||
136
|
||
137
|
||
138 00C9 CODE ENDS
|
||
139 END START
|
||
Turbo Assembler Version 5.3 06-02-23 10:20:14 Page 4
|
||
Symbol Table
|
||
|
||
|
||
|
||
|
||
Symbol Name Type Value
|
||
|
||
??DATE Text "06-02-23"
|
||
??FILENAME Text "code "
|
||
??TIME Text "10:20:14"
|
||
??VERSION Number 0503
|
||
@CPU Text 0101H
|
||
@CURSEG Text CODE
|
||
@FILENAME Text CODE
|
||
@WORDSIZE Text 2
|
||
INT_OFF1 Word DATA:0000
|
||
INT_OFF2 Word DATA:0004
|
||
INT_SEG1 Word DATA:0002
|
||
INT_SEG2 Word DATA:0006
|
||
L1 Near16 CODE:006B
|
||
LED_STATE Word DATA:0008
|
||
START Near16 CODE:0000
|
||
SW_INT Near16 CODE:00AD
|
||
|
||
Groups & Segments Bit Size Align Combine Class
|
||
|
||
CODE 16 00C9 Para none
|
||
DATA 16 000A Para none
|
||
STACK 16 00C8 Para none
|
||
Turbo Assembler Version 5.3 06-02-23 10:20:14 Page 5
|
||
Error Summary
|
||
|
||
|
||
|
||
*Warning* code.asm(9) Reserved word used as symbol: STACK
|
||
|