3. Алгоритм роботи кассового апарату
Номер клавіші п
I2=1
I = 0
+
-
+
-
1
0
I=I+1
-
-
+
KPFP = 0
F=1
FP=MON
I4=1
I4=0
KPFP=KPFP+1
F=0
0
1
-
+
4. Код програми
Turbo Assembler Version 3.2 15/06/11 10:57:30 Page 1
RddDd.asm
1 0000 .MODEL SMALL
2 0000 .DATA
3
4 =0000 MON EQU 0 ;OUTPORT
5 =0001 B01 EQU 1
6 =0002 FP EQU 2
7 =0003 KLAVA EQU 3 ;INPORT
8 0000 ?? COPY_mON DB ?
9 0001 ?? COPY_B01 DB ?
10 0002 ?? COPY_FP DB ?
11 0003 ???? I DW ?
12 0005 06*(??) M DB 6 DUP (?)
13
14
15 =0001 C0 EQU 0000000000000001b
16 =0002 C1 EQU 0000000000000010b
17 =0004 C3 EQU 0000000000000100b
18 =0008 C4 EQU 0000000000001000b
19 =0010 C5 EQU 0000000000010000b
20 =0020 C6 EQU 0000000000100000b
21 =0080 C7 EQU 0000000010000000b
22 =0100 C8 EQU 0000000100000000b
23 =0200 C9 EQU 0000001000000000b
24 =0400 C10 EQU 0000010000000000b
25 =0800 RS EQU 0000100000000000b
26 =1000 PR EQU 0001000000000000b
27 =2000 G EQU 0010000000000000b
28
29 =0001 K0 EQU 00000001b
30 =0002 K1 EQU 00000010b
31 =0004 K2 EQU 00000100b
32 =0008 K3 EQU 00001000b
33 =0010 K4 EQU 00010000b
34 =0020 K5 EQU 00100000b
35 =0040 K6 EQU 01000000b
36 =0080 K7 EQU 10000000b
37
38
39 =0001 Z equ 00000001b
40 =0002 I0 EQU 00000010b
41 =0004 I1 EQU 00000100b
42 =0008 I2 EQU 00001000b
43 =0010 I3 EQU 00010000b
44 =0020 I4 EQU 00100000b
45 =0040 KV EQU 01000000b
46 =0080 F EQU 10000000b
47
48 =0001 P0 EQU 00000001b
49 =0002 P1 EQU 00000010b
50 =0004 P2 EQU 00000100b
51 =0008 P3 EQU 00001000b
52 =0010 P4 EQU 00010000b
53 =0020 P5 EQU 00100000b
54 =0040 P6 EQU 01000000b
55 =0080 P7 EQU 10000000b
56
57 000B .CODE
Turbo Assembler Version 3.2 15/06/11 10:57:30 Page 2
RddDd.asm
58 0000 program:
59 0000 B8 0000s MOV AX,@DATA
60 0003 8E D8 MOV DS,AX
61
62 0005 START:
63 0005 B4 00 MOV AH , 0
64 0007 E6 00 OUT MON , AL
65 0009 88 26 0000r MOV COPY_MON , AH
66
67 000D B0 00 MOV AL , 0
68 000F E6 01 OUT B01 , AL
69 0011 88 26 0001r MOV COPY_B01 , AH
70 0015 B4 00 MOV AH , 0
71 0017 E6 02 OUT FP , AL
72 0019 88 26 0002r MOV COPY_FP , AH
73
74 001D E5 03 m1: IN AX , KLAVA
75 001F A9 8000 TEST AX , 8000H
76 0022 74 05 JZ m3
77
78 0024 E5 03 m2: IN AX , KLAVA
79 0026 25 03FF AND AX , 3FFH
80
81 0029 8A 26 0001r m3: MOV AH , COPY_B01
82 002D 80 CC 04 OR AH , 00000100b
83 0030 88 26 0001r MOV COPY_B01 , AH
84 0034 E6 01 OUT B01 , AL
85 0036 74 7F JZ m9
86
87 0038 B4 00 m4: MOV AH , MON
88 003A 8A 26 0001r MOV AH , COPY_B01
89 003E 80 CC 08 OR AH , 00001000b
90 0041 88 26 0001r MOV COPY_B01 , AH
91 0045 E6 01 OUT B01 , AL
92 0047 B4 80 MOV AH , F
93 0049 80 FC 00 CMP AH , 0
94 004C 75 44 JNZ m8
95
96 004E m5:
97 004E A0 0000r MOV AL , COPY_MON
98 0051 E6 00 OUT MON , AL
99 0053 8B 36 0003r MOV SI , I
100 0057 3A 84 0005r CMP AL , M[SI]
101 005B 75 22 JNZ m7
102
103 005D FF 06 0003r m6: INC I
104 0061 A1 0003r MOV AX , I
105 0064 3D 0006 CMP AX , 6
106 0067 75 F4 JNZ m6
107 0069 E6 02 OUT FP , AL
108 006B 88 26 0002r MOV COPY_FP , AH
109 006F B4 01 MOV AH , B01
110 0071 8A 26 0001r MOV AH , COPY_B01
111 0075 80 CC 80 OR AH , 10000000b
112 0078 88 26 0001r MOV COPY_B01 , AH
113 007C EB 14 90 JMP m8
114
Turbo Assembler Version 3.2 15/06/11 10:57:30 Page 3
RddDd.asm
115 007F m7:
116 007F C7 06 0003r 0000 MOV I , 0
117 0085 8A 26 0001r MOV AH , COPY_B01
118 0089 80 CC FD OR AH , 11111101b
119 008C 88 26 0001r MOV COPY_B01 , AH
120 0090 E6 01 OUT B01 , AL
121
122 0092 B4 02 m8: MOV AH , FP
123 0094 B4 00 MOV AH , MON
124 0096 8A 26 0001r MOV AH , COPY_B01
125 009A 80 CC 20 OR AH , 00100000b
126 009D 88 26 0001r MOV COPY_B01 , AH
127 00A1 E6 01 OUT B01 , AL
128 00A3 B4 40 MOV AH , KV
129 00A5 8A 26 0001r MOV AH , COPY_B01
130 00A9 80 E4 DF AND AH , 11011111b
131 00AC 88 26 0001r MOV COPY_B01 , AH
132 00B0 E6 01 OUT B01 , AL
133 00B2 C6 06 0002r 01 MOV COPY_FP , 1
134
135
136 00B7 8A 26 0001r m9: MOV AH , COPY_B01
137 00BB 80 E4 FE and AH , 11111110b
138 00BE 88 26 0001r MOV COPY_B01 , AH
139 00C2 E6 01 OUT B01 , AL
140 00C4 C6 06 0002r 10 MOV COPY_FP , 16
141
142 00C9 B8 4C00 MOV AX, 4C00H
143 00CC CD 21 INT 21H
144 END program
Turbo Assembler Version 3.2 15/06/11 10:57:30 Page 4
Symbol Table
Symbol Name Type Value
??DATE Text "15/06/11"
??FILENAME Text "RddDd "
??TIME Text "10:57:30"
??VERSION Number 0314
@32BIT Text 0
@CODE Text _TEXT
@CODESIZE Text 0
@CPU Text 0101H
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text RDDDD
@INTERFACE Text 00H
@MODEL Text 2
@STACK Text DGROUP
@WORDSIZE Text 2
B01 Number 0001
C0 Number 0001
C1 Number 0002
C10 Number 0400
C3 Number 0004
C4 Number 0008
C5 Number 0010
C6 Number 0020
C7 Number 0080
C8 Number 0100
C9 Number 0200
COPY_B01 Byte DGROUP:0001
COPY_FP Byte DGROUP:0002
COPY_MON Byte DGROUP:0000
F Number 0080
FP Number 0002
G Number 2000
I Word DGROUP:0003
I0 Number 0002
I1 Number 0004
I2 Number 0008
I3 Number 0010
I4 Number 0020
K0 Number 0001
K1 Number 0002
K2 Number 0004
K3 Number 0008
K4 Number 0010
K5 Number 0020
K6 Number 0040
K7 Number 0080
KLAVA Number 0003
KV Number 0040
M Byte DGROUP:0005
M1 Near _TEXT:001D
M2 Near _TEXT:0024
M3 Near _TEXT:0029
M4 Near _TEXT:0038
Turbo Assembler Version 3.2 15/06/11 10:57:30 Page 5
Symbol Table
M5 Near _TEXT:004E
M6 Near _TEXT:005D
M7 Near _TEXT:007F
M8 Near _TEXT:0092
M9 Near _TEXT:00B7
MON Number 0000
P0 Number 0001
P1 Number 0002
P2 Number 0004
P3 Number 0008
P4 Number 0010
P5 Number 0020
P6 Number 0040
P7 Number 0080
PR Number 1000
PROGRAM Near _TEXT:0000
RS Number 0800
START Near _TEXT:0005
Z Number 0001
Groups & Segments Bit Size Align Combine Class
DGROUP Group
_DATA 16 000B Word Public DATA
_TEXT 16 00CE Word Public CODE
