Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия касовий апарат.doc
Скачиваний:
2
Добавлен:
18.08.2019
Размер:
80.9 Кб
Скачать

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