отчет asm 6 (Готовая лаба №6)
Описание файла
Файл "отчет asm 6" внутри архива находится в папке "Готовая лаба №6". Документ из архива "Готовая лаба №6", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "отчет asm 6"
Текст из документа "отчет asm 6"
Защищено: Гапанюк Ю. Е. "__"_____________2014 г. | Демонстрация: Гапанюк Ю. Е. "__"_____________2014 г. |
Отчет по лабораторной работе № 6 по курсу
Системное программирование
С доп Требованиями
Ввод и распечатка параметров к.с
4
(количество листов)
Вариант № 9
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-42 | _____________________ |
(подпись) | |
Зайков С.А. | "__"_____________2014 г. |
Москва, МГТУ - 2014
_____________________________________________________________________________________________
СОДЕРЖАНИЕ
1. Цель и задание работы 3
2. Блок-схема алгоритма программы 3
3. Листинг кода 4
4. Результаты работы программы 4
1 Цель и задание работы
Разработать и отладить программу на языке Ассемблер для ввода, анализа (расшифровки, фактически грамматического разбора) и распечатки параметров командной строки при запуске программы (параметры размещаются в области PSP со смещением 081h). Нужно также описать в БНФ синтаксис запуска вашей программы с параметрами в командной строке для разработанной программы. Для этого надо изучить раздел 4 методических указаний к ЛР. Программа должна быть скомпонована в виде *.ЕХЕ – исполнимого файла.
2 Блок-схема алгоритма программы
3. Листинг кода
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 1
lab6.ASM
1 0000 stseg segment stack 'STACK'
2 0000 0100*(0000) DW 256 dup(0)
3 0200 stseg ends
4 0000 data segment 'DATA'
5 0000 4E 6F 20 65 6E 74 65+ npar DB 'No entered params$'
6 72 65 64 20 70 61 72+
7 61 6D 73 24
8 0012 46 69 72 73 74 20 70+ par1_Y DB 'First parametre: /c = y$'
9 61 72 61 6D 65 74 72+
10 65 3A 20 2F 63 20 3D+
11 20 79 24
12 002A 46 69 72 73 74 20 70+ par1_N DB 'First parametre: /c = n$'
13 61 72 61 6D 65 74 72+
14 65 3A 20 2F 63 20 3D+
15 20 6E 24
16 0042 46 69 72 73 74 20 70+ npar1 DB 'First parametre: Error$'
17 61 72 61 6D 65 74 72+
18 65 3A 20 45 72 72 6F+
19 72 24
20 0059 53 65 63 6F 6E 64 20+ par2 DB 'Second parametre: Entered$'
21 70 61 72 61 6D 65 74+
22 72 65 3A 20 45 6E 74+
23 65 72 65 64 24
24 0073 53 65 63 6F 6E 64 20+ npar2 DB 'Second parametre: Error$'
25 70 61 72 61 6D 65 74+
26 72 65 3A 20 45 72 72+
27 6F 72 24
28 008B 54 68 69 72 64 20 70+ par3 DB 'Third parametre: k=<******> $'
29 61 72 61 6D 65 74 72+
30 65 3A 20 6B 3D 3C 2A+
31 2A 2A 2A 2A 2A 3E 20+
32 24
33 00A8 54 68 69 72 64 20 70+ npar3 DB 'Third parametre: Error'
34 61 72 61 6D 65 74 72+
35 65 3A 20 45 72 72 6F+
36 72
37 00BE 50 72 65 73 73 20 2A+ s_star DB 'Press *$'
38 24
39 00C6 50 72 65 73 73 20 45+ s_enter DB 'Press Enter$'
40 6E 74 65 72 24
41 00D2 5A 61 79 6B 6F 76 20+ fio DB 'Zaykov S.A, IU5-42, Var 9$'
42 53 2E 41 2C 20 49 55+
43 35 2D 34 32 2C 20 56+
44 61 72 20 39 24
45 00EC 5A 61 79 6B 6F 76 20+ key DB 'Zaykov $'
46 24
47 00F4 00 y DB 0
48 00F5 00 fl1 DB 0
49 00F6 00 fl2 DB 0
50 00F7 00 fl3 DB 0
51 00F8 00 i DB 0
52 00F9 data ends
53 0000 mycode segment 'code'
54 assume cs:mycode, ds:data, ss:stseg
55 0000 start:
56 0000 B8 0000s MOV AX,DATA
57 0003 8E D8 MOV DS,AX
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 2
lab6.ASM
58 0005 26: 8A 0E 0080 MOV CL,ES:[80h]
59 000A 80 F9 00 CMP CL,0
60 000D 77 09 JA par1
61 000F BA 0000r MOV DX, offset npar
62 0012 E8 0176 CALL PutCh
63 0015 E9 00AF JMP finish
64 0018 Par1:
65 0018 B5 00 MOV CH,0
66 001A BF 0081 MOV DI,81h
67 001D E8 00C3 CALL Check1
68 0020 80 3E 00F5r 01 CMP fl1,1
69 0025 75 56 JNE npar_1
70 0027 E8 0103 CALL Check2
71 002A E8 0127 CALL Check3
72 002D 80 3E 00F7r 01 CMP fl3,1
73 0032 75 55 JNE npar_3
74 0034 51 PUSH CX
75 0035 80 3E 00F4r 01 CMP y,1
76 003A 75 10 JNE nClrScr
77 003C E8 0163 CALL ClrScr
78 003F BA 0012r LEA DX,par1_Y
79 0042 E8 0146 call PUTCH
80 0045 E8 014D call Clrf
81 0048 59 POP CX
82 0049 EB 0A 90 JMP par_2
83 004C nClrScr:
84 004C BA 002Ar LEA DX,par1_N
85 004F E8 0139 CALL PutCh
86 0052 E8 0140 CALL Clrf
87 0055 par_2:
88 0055 80 3E 00F6r 01 CMP fl2,1
89 005A 75 0C JNE par2_0
90 005C BA 0059r LEA DX, par2
91 005F E8 0129 CALL PutCh
92 0062 E8 0130 CALL Clrf
93 0065 EB 0A 90 JMP par_3
94 0068 par2_0:
95 0068 BA 0073r LEA DX,npar2
96 006B E8 011D CALL PutCh
97 006E E8 0124 CALL Clrf
98 0071 par_3:
99 0071 BA 008Br LEA DX, par3
100 0074 E8 0114 CALL PutCh
101 0077 E8 011B CALL Clrf
102 007A EB 16 90 JMP exit
103 007D npar_1:
104 007D BA 0042r LEA DX,npar1
105 0080 E8 0108 CALL PutCh
106 0083 E8 010F CALL Clrf
107 0086 EB 3F 90 JMP finish
108 0089 npar_3:
109 0089 BA 008Br LEA DX,par3
110 008C E8 00FC CALL PutCh
111 008F EB 36 90 JMP finish
112 0092 exit:
113 0092 80 3E 00F6r 01 CMP fl2,1
114 0097 75 22 JNE ent
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 3
lab6.ASM
115 0099 BA 00D2r LEA DX, fio
116 009C E8 00EC CALL PutCh
117 009F E8 00F3 CALL Clrf
118 00A2 BA 00BEr LEA DX,s_star
119 00A5 E8 00E3 CALL PutCh
120 00A8 E8 00EA CALL Clrf
121 00AB E8 001E CALL g_star
122 00AE E8 00E4 CALL Clrf
123 00B1 80 3E 00F4r 01 CMP y,1
124 00B6 75 0F JNE finish
125 00B8 E8 00E7 CALL ClrScr
126 00BB ent:
127 00BB BA 00C6r LEA DX,s_enter
128 00BE E8 00CA CALL PutCh
129 00C1 E8 00D1 CALL Clrf
130 00C4 E8 0013 CALL g_enter
131 00C7 finish:
132 00C7 B8 4C00 MOV AX,4C00h
133 00CA CD 21 INT 21h
134 00CC g_star PROC
135 00CC start1:
136 00CC B4 08 MOV AH,08h
137 00CE CD 21 INT 21h
138 00D0 3C 2A CMP AL, '*'
139 00D2 75 F8 JNE start1
140 00D4 8A D0 MOV DL,AL
141 00D6 E8 00B2 CALL PutCh
142 00D9 C3 RET
143 00DA g_star ENDP
144 00DA g_enter PROC
145 00DA entr:
146 00DA B4 08 MOV AH,08h
147 00DC CD 21 INT 21h
148 00DE 3C 0D CMP AL, 0Dh
149 00E0 75 F8 JNE entr
150 00E2 C3 RET
151 00E3 g_enter ENDP
152
153 00E3 Check1 PROC
154 00E3 4F DEC DI
155 00E4 E8 009C CALL ProbClr
156 00E7 26: 80 3D 2F CMP BYTE PTR ES:[DI], '/'
157 00EB 75 3F JNE Check1_e
158 00ED 47 INC DI
159 00EE 26: 80 3D 63 CMP BYTE PTR ES:[DI], 'c'
160 00F2 75 06 JNE param_c
161 00F4 26: 80 3D 43 CMP BYTE PTR ES:[DI], 'C'
162 00F8 75 32 JNE Check1_e
163 00FA param_c:
164 00FA 47 INC DI
165 00FB 26: 80 3D 3D CMP BYTE PTR ES:[DI], '='
166 00FF 75 2B JNE Check1_E
167 0101 47 INC DI
168 0102 26: 80 3D 79 CMP BYTE PTR ES:[DI], 'y'
169 0106 74 06 JE param_y
170 0108 26: 80 3D 59 CMP BYTE PTR ES:[DI], 'Y'
171 010C 75 0D JNE param_n
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 4
lab6.ASM
172 010E param_y:
173 010E C6 06 00F5r 01 MOV fl1,1
174 0113 C6 06 00F4r 01 mov y,1
175 0118 EB 12 90 JMP Check1_e
176 011B param_n:
177 011B 26: 80 3D 6E CMP BYTE PTR ES:[DI],'n'
178 011F 74 06 JE param_nn
179 0121 26: 80 3D 4E CMP BYTE PTR ES:[DI],'N'
180 0125 75 05 JNE Check1_e
181 0127 param_nn:
182 0127 C6 06 00F5r 01 MOV fl1,1
183 012C Check1_e:
184 012C C3 RET
185 012D Check1 ENDP
186 012D Check2 PROC
187 012D E8 0053 CALL ProbClr
188 0130 26: 80 3D 2F CMP BYTE PTR ES:[DI],'/'
189 0134 75 1B JNE Check2_e
190 0136 47 INC DI
191 0137 26: 80 3D 68 CMP BYTE PTR ES:[DI], 'h'
192 013B 74 0C JE param_h
193 013D 26: 80 3D 48 CMP BYTE PTR ES:[DI], 'H'
194 0141 74 06 JE param_h
195 0143 26: 80 3D 3F CMP BYTE PTR ES:[DI], '?'
196 0147 75 08 JNE Check2_e
197 0149 param_h:
198 0149 C6 06 00F6r 01 MOV fl2,1
199 014E 47 INC DI
200 014F 47 INC DI
201 0150 47 INC DI
202 0151 Check2_e:
203 0151 4F DEC DI
204 0152 4F DEC DI
205 0153 C3 RET
206 0154 Check2 ENDP
207 0154 Check3 PROC
208 0154 E8 002C CALL ProbClr
209 0157 26: 80 3D 2F CMP BYTE PTR ES:[DI], '/'
210 015B 75 25 JNE Check3_e
211 015D 47 INC DI
212 015E 26: 80 3D 6B CMP BYTE PTR ES:[DI], 'k'
213 0162 74 07 JE param_k
214 0164 26: 80 3D 4B CMP BYTE PTR ES:[DI], 'K'
215 0168 75 18 JNE Check3_e
216 016A 47 INC DI
217 016B param_k:
218 016B 47 INC DI
219 016C 26: 80 3D 3D CMP BYTE PTR ES:[DI], '='
220 0170 75 10 JNE Check3_e
221 0172 47 INC DI
222 0173 B9 0006 MOV CX,6
223 0176 BE 00ECr MOV SI, offset key
224 0179 F3> A6 REP CMPSB
225 017B 75 05 JNE Check3_e
226 017D C6 06 00F7r 01 MOV fl3, 1
227 0182 Check3_e:
228 0182 C3 RET
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 5
lab6.ASM
229 0183 Check3 ENDP
230
231 0183 ProbClr PROC
232 0183 REPEAT:
233 0183 47 INC DI
234 0184 26: 80 3D 20 CMP BYTE PTR ES:[DI], ' '
235 0188 74 F9 JE REPEAT
236 018A C3 RET
237 018B ProbClr ENDP
238
239 018B PutCh PROC
240 018B B4 09 MOV AH,09h
241 018D CD 21 INT 21h
242 018F C3 RET
243 0190 PutCh ENDP
244 0190 GetCh PROC
245 0190 B4 01 MOV AH,01h
246 0192 CD 21 INT 21h
247 0194 C3 RET
248 0195 GetCh ENDP
249 0195 Clrf PROC
250 0195 B4 02 MOV AH,02h
251 0197 B2 0A MOV DL,10
252 0199 CD 21 INT 21h
253 019B B4 02 MOV AH,02h
254 019D B2 0D MOV DL,13
255 019F CD 21 INT 21h
256 01A1 C3 RET
257 01A2 Clrf ENDP
258 01A2 ClrScr PROC
259 01A2 B4 00 MOV AH,00
260 01A4 B0 03 MOV AL,03
261 01A6 CD 10 INT 10H
262 01A8 C3 RET
263 01A9 ClrScr ENDP
264 01A9 MYCODE ENDS
265 END START
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 6
Symbol Table
Symbol Name Type Value
??DATE Text "05/04/14"
??FILENAME Text "lab6 "
??TIME Text "10:43:31"
??VERSION Number 030A
@CPU Text 0101H
@CURSEG Text MYCODE
@FILENAME Text LAB6
@WORDSIZE Text 2
CHECK1 Near MYCODE:00E3
CHECK1_E Near MYCODE:012C
CHECK2 Near MYCODE:012D
CHECK2_E Near MYCODE:0151
CHECK3 Near MYCODE:0154
CHECK3_E Near MYCODE:0182
CLRF Near MYCODE:0195
CLRSCR Near MYCODE:01A2
ENT Near MYCODE:00BB
ENTR Near MYCODE:00DA
EXIT Near MYCODE:0092
FINISH Near MYCODE:00C7
FIO Byte DATA:00D2
FL1 Byte DATA:00F5
FL2 Byte DATA:00F6
FL3 Byte DATA:00F7
GETCH Near MYCODE:0190
G_ENTER Near MYCODE:00DA
G_STAR Near MYCODE:00CC
I Byte DATA:00F8
KEY Byte DATA:00EC
NCLRSCR Near MYCODE:004C
NPAR Byte DATA:0000
NPAR1 Byte DATA:0042
NPAR2 Byte DATA:0073
NPAR3 Byte DATA:00A8
NPAR_1 Near MYCODE:007D
NPAR_3 Near MYCODE:0089
PAR1 Near MYCODE:0018
PAR1_N Byte DATA:002A
PAR1_Y Byte DATA:0012
PAR2 Byte DATA:0059
PAR2_0 Near MYCODE:0068
PAR3 Byte DATA:008B
PARAM_C Near MYCODE:00FA
PARAM_H Near MYCODE:0149
PARAM_K Near MYCODE:016B
PARAM_N Near MYCODE:011B
PARAM_NN Near MYCODE:0127
PARAM_Y Near MYCODE:010E
PAR_2 Near MYCODE:0055
PAR_3 Near MYCODE:0071
PROBCLR Near MYCODE:0183
PUTCH Near MYCODE:018B
REPEAT Near MYCODE:0183
START Near MYCODE:0000
Turbo Assembler Version 3.1 05/04/14 10:43:31 Page 7
Symbol Table
START1 Near MYCODE:00CC
S_ENTER Byte DATA:00C6
S_STAR Byte DATA:00BE
Y Byte DATA:00F4
Groups & Segments Bit Size Align Combine Class
DATA 16 00F9 Para none DATA
MYCODE 16 01A9 Para none CODE
STSEG 16 0200 Para Stack STACK
4. Результаты работы программы