4Исходный текст (1071369)
Текст из файла
Московский государственный технический университет им. Н.Э.Баумана
_________________________________________________________________
Утверждаю: | |
Большаков С.А. | "__"_____________2006 г. |
Курсовая работа по курсу Системное программирование
«Будильник »
Текст программы
(вид документа)
писчая бумага
(вид носителя)
16
(количество листов)
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-53 | _____________________ |
Кулаков А. С. | "__"_____________2006 г. |
Москва - 2006
________________________________________________________________
Содержание:
1. Файл alrmclck.lst 3
2. Файл unldtsr.lst 15
1.Файл alrmclck.lst
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 1
alrmclck.ASM
1 0000 code segment 'code'
2 assume CS:code,DS:code,SS:code
3 .186
4 org 100h
5
6 0100 start:
7 0100 E9 0429 jmp init
8
9 ;*************************************************
10 ; РЕЗИДЕНТ
11 ;*************************************************
12
13 ;-----------------------данные--------------------
14 0103 20 30 30 3A 30 30 3A+ control_line db ' 00:00:00 '
15 30 30 20
16 010D 07 30 30 3A 30 30 3A+ alarm db 07h,'00:00:00 '
17 30 30 20
18 =000A alarm_1 equ $-alarm
19 0117 008A alarm_position dw 0138
20 0119 00000000 old_08 dd 0 ; Ячейка для хранения исходного вектора
21 011D 00000000 old_2F dd 0
22 0121 00000000 old_09 dd 0
23 0125 50 72 6F 67 72 61 6D+ mess_load db 'Program has already loaded !!!','$'
24 20 68 61 73 20 61 6C+
25 72 65 61 64 79 20 6C+
26 6F 61 64 65 64 20 21+
27 21 21 24
28 0144 50 72 6F 67 72 61 6D+ mess_loaded db 'Program was succesfully loaded !!!',+
29 20 77 61 73 20 73 75+ '$'
30 63 63 65 73 66 75 6C+
31 6C 79 20 6C 6F 61 64+
32 65 64 20 21 21 21 24
33 0167 0A 0D 54 68 69 73 20+ mess_help db 10,13,'This program is an alarm clock',+
34 70 72 6F 67 72 61 6D+ 10,13,'Enter time in format HH:MM:SS',10,13,'F1 - +
35 20 69 73 20 61 6E 20+ installation of an alarm clock'
36 61 6C 61 72 6D 20 63+
37 6C 6F 63 6B 0A 0D 45+
38 6E 74 65 72 20 74 69+
39 6D 65 20 69 6E 20 66+
40 6F 72 6D 61 74 20 48+
41 48 3A 4D 4D 3A 53 53+
42 0A 0D 46 31 20 2D 20+
43 69 6E 73 74 61 6C 6C+
44 61 74 69 6F 6E 20 6F+
45 66 20 61 6E 20 61 6C+
46 61 72 6D 20 63 6C 6F+
47 63 6B
48 01CB 0A 0D 54 68 65 20 69+ db 10,13,'The indicator of an alarm clock +
49 6E 64 69 63 61 74 6F+ of green color means, that it is installed correctly'
50 72 20 6F 66 20 61 6E+
51 20 61 6C 61 72 6D 20+
52 63 6C 6F 63 6B 20 6F+
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 2
alrmclck.ASM
53 66 20 67 72 65 65 6E+
54 20 63 6F 6C 6F 72 20+
55 6D 65 61 6E 73 2C 20+
56 74 68 61 74 20 69 74+
57 20 69 73 20 69 6E 73+
58 74 61 6C 6C 65 64 20+
59 63 6F 72 72 65 63 74+
60 6C 79
61 0221 0A 0D 54 68 65 20 69+ db 10,13,'The indicator of an alarm clock +
62 6E 64 69 63 61 74 6F+ of red color means a mistake in a format',10,13,'F2 +
63 72 20 6F 66 20 61 6E+ - the termination of a sound signal'
64 20 61 6C 61 72 6D 20+
65 63 6C 6F 63 6B 20 6F+
66 66 20 72 65 64 20 63+
67 6F 6C 6F 72 20 6D 65+
68 61 6E 73 20 61 20 6D+
69 69 73 74 61 6B 65 20+
70 69 6E 20 61 20 66 6F+
71 72 6D 61 74 0A 0D 46+
72 32 20 2D 20 74 68 65+
73 20 74 65 72 6D 69 6E+
74 61 74 69 6F 6E 20 6F+
75 66 20 61 20 73 6F 75+
76 6E 64 20 73 69 67 6E+
77 61 6C
78 0293 0A 0D 55 4E 4C 44 54+ db 10,13,'UNLDTSR.EXE - unload program +
79 53 52 2E 45 58 45 20+ from memory',10,13,10,13,'$'
80 2D 20 75 6E 6C 6F 61+
81 64 20 70 72 6F 67 72+
82 61 6D 20 66 72 6F 6D+
83 20 6D 65 6D 6F 72 79+
84 0A 0D 0A 0D 24
85 02C2 45 72 72 6F 72 20 70+ error_param db 'Error param !',10,13,'$'
86 61 72 61 6D 20 21 0A+
87 0D 24
88 02D2 20 30 30 3A 30 30 3A+ output_line db ' 00:00:00 '
89 30 30 20
90 =000A output_line_1 equ $-output_line
91 02DC 0074 start_position dw 0116
92 02DE 01 flag db 1
93 02DF 01 color db 1
94 02E0 01 sound db 1
95 02E1 0B*(20) clear_line db 11 dup (' ')
96
97 ;-------------------------------------------------
98 ;Процедура обработчика прерываний от клавиатуры
99 ;ВХОД: нет
100 ;ВЫХОД: нет
101 ;-------------------------------------------------
102 02EC new_09 proc
103 02EC 50 push AX
104 ;---------------Проверка нажатия клавиши F1-------
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 3
alrmclck.ASM
105 02ED E4 60 in AL,60h
106 02EF 3C 3B cmp AL,3Bh
107 02F1 74 0A je pressF1
108 ;---------------Проверка нажатия клавиши F2-------
109 02F3 3C 3C cmp AL,3Ch
110 02F5 74 7E je pressF2
111 02F7 58 pop AX
112 02F8 2E: FF 2E 0121r jmp CS:old_09
113 02FD pressF1:
114 02FD 0E push CS
115 02FE 1F pop DS
116 02FF C6 06 02DFr 01 mov color,1
117 0304 32 FF xor BH,BH
118 ;---------------Переход в начало введенной строки-
119 0306 B4 03 mov AH,03
120 0308 CD 10 int 10h
121 030A 80 EA 08 sub DL,8
122 030D B4 02 mov AH,02
123 030F CD 10 int 10h
124
125 0311 B9 0008 mov cx,8
126 0314 BE 0001 mov SI,1
127 ;---------------Считывание введенного времени-----
128 0317 m1:
129 0317 B4 08 mov AH,08
130 0319 CD 10 int 10h
131 031B 88 84 0103r mov control_line[SI],AL
132 031F 46 inc SI
133 0320 FE C2 inc DL
134 0322 B4 02 mov AH,02
135 0324 CD 10 int 10h
136 0326 E2 EF loop m1
137 ;---------------Проверка формата времени----------
138 0328 BF 0001 mov DI,1
139 032B E8 01E3 call ATOI
140 032E 80 FC 17 cmp AH,23
141 0331 77 3A ja err_time
142
143 0333 BF 0004 mov DI,4
144 0336 E8 01D8 call ATOI
145 0339 80 FC 3B cmp AH,59
146 033C 77 2F ja err_time
147
148 033E BF 0007 mov DI,7
149 0341 E8 01CD call ATOI
150 0344 80 FC 3B cmp AH,59
151 0347 77 24 ja err_time
152
153 0349 80 3E 0106r 3A cmp control_line[3],':'
154 034E 75 1D jne err_time
155
156 0350 80 3E 0109r 3A cmp control_line[6],':'
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 4
alrmclck.ASM
157 0355 75 16 jne err_time
158 ;---------------Запись в строку будильника--------
159 ;---------------введенного времени----------------
160 0357 B9 0008 mov CX,8
161 035A BE 0001 mov SI,1
162 035D m2:
163 035D 8A 84 0103r mov AL,control_line[SI]
164 0361 88 84 010Dr mov alarm[SI],AL
165 0365 46 inc SI
166 0366 FE C2 inc DL
167 0368 E2 F3 loop m2
168 036A EB 10 90 jmp ex_press
169 036D err_time:
170
171 036D C6 06 02DFr 00 mov color,0
172 0372 EB 08 90 jmp ex_press
173 0375 pressF2:
174 0375 0E push CS
175 0376 1F pop DS
176 0377 C6 06 02DEr 01 mov flag,1
177 037C ex_press:
178 ;---------------Установка бита 7 порта 61h и------
179 ;---------------возвращение в исходное состояние--
180 037C 33 C0 xor AX,AX
181 037E 8E D8 mov DS,AX
182 0380 A0 041A mov AL,DS:041Ah
183 0383 A2 041C mov DS:041Ch,AL
184
185 0386 E4 61 in AL,61h
186 0388 50 push AX
187 0389 0C 80 or AL,80h
188 038B E6 61 out 61h,AL
189 038D 58 pop AX
190 038E E6 61 out 61h,AL
191 ;---------------Сообщение контроллеру о звершении-
192 ;---------------обработки аппаратного прерывания--
193 0390 B0 20 mov AL,20h
194 0392 E6 20 out 20h,AL
195 0394 58 pop AX
196 0395 CF iret
197 0396 new_09 endp
198
199 ;-------------------------------------------------
200 ;Процедура обработчика прерываний от таймера
201 ;ВХОД: нет
202 ;ВЫХОД: нет
203 ;-------------------------------------------------
204 0396 new_08 proc
205 0396 60 pusha
206 0397 06 push ES
207 0398 1E push DS
208
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 5
alrmclck.ASM
209 0399 0E push CS
210 039A 1F pop DS
211 ;---------------Чтение времени из RTC-------------
212 ;---------------в строку времени------------------
213 039B B4 02 mov AH,02h
214 039D CD 1A int 1Ah
215 039F 72 7C jc ex
216
217 03A1 8A C5 mov AL,CH
218 03A3 E8 007F call bcd2asc
219 03A6 88 26 02D3r mov output_line[1],AH
220 03AA A2 02D4r mov output_line[2],AL
221
222 03AD 8A C1 mov AL,CL
223 03AF E8 0073 call bcd2asc
224 03B2 88 26 02D6r mov output_line[4],AH
225 03B6 A2 02D7r mov output_line[5],AL
226
227
228 03B9 8A C6 mov AL,DH
229 03BB E8 0067 call bcd2asc
230 03BE 88 26 02D9r mov output_line[7],AH
231 03C2 A2 02DAr mov output_line[8],AL
232 ;---------------Проверка совпадения времени------
233 ;---------------будильника и часов---------------
234 03C5 B9 0008 mov CX,8
235 03C8 BE 0001 mov SI,1
236 03CB comp:
237 03CB 8A 84 02D2r mov AL,output_line[SI]
238 03CF 8A A4 010Dr mov AH,alarm[SI]
239 03D3 3A E0 cmp AH,AL
240 03D5 75 08 jne go
241 03D7 46 inc SI
242 03D8 E2 F1 loop comp
243 03DA C6 06 02DEr 00 mov flag,0
244 03DF go:
245 ;---------------Вывод будильника и часов на-------
246 ;---------------экран с проверкой цвета будильника
247 03DF B9 000A mov CX,alarm_1
248 03E2 68 B800 push 0B800h
249 03E5 07 pop ES
250 03E6 8B 3E 0117r mov DI,word ptr alarm_position
251 03EA BE 010Dr mov SI,offset alarm
252
253 03ED 80 3E 02DFr 01 cmp color,1
254 03F2 74 05 je green
255 03F4 B4 4F mov AH,4fh
256 03F6 EB 03 90 jmp next1
257 03F9 green:
258 03F9 B4 2F mov AH,2fh
259 03FB next1:
260 03FB AC lodsb
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 6
alrmclck.ASM
261 03FC AB stosw
262 03FD E2 FC loop next1
263
264 03FF B9 000A mov CX,output_line_1
265 0402 68 B800 push 0B800h
266 0405 07 pop es
267 0406 8B 3E 02DCr mov DI,word ptr start_position
268 040A BE 02D2r mov SI,offset output_line
269 040D B4 2F mov ah,2fh
270 040F next2:
271 040F AC lodsb
272 0410 AB stosw
273 0411 E2 FC loop next2
274 ;---------------Выдача звукового сигнала----------
275 0413 80 3E 02DEr 00 cmp flag,0
276 0418 75 03 jne ex
277 041A E8 00C0 call BEEP
278 041D ex:
279 ;---------------Разблокировка прерываний----------
280 ;---------------в контроллере прерываний----------
281 041D B0 20 mov AL,20h
282 041F E6 20 out 20h,AL
283
284 0421 1F pop DS
285 0422 07 pop ES
286 0423 61 popa
287 0424 CF iret
288 0425 new_08 endp
289
290 ;-------------------------------------------------
291 ;Процедура преобразования BCD-числа в ASCII-символ
292 ;ВХОД: AL - упакованное BCD-число
293 ;ВЫХОД: AH - преобразованная ASCII старшая цифра +
294 BCD-числа
295 ; AL - преобразованная ASCII младшая цифра +
296 BCD-числа
297 ;-------------------------------------------------
298 0425 bcd2asc proc
299 0425 8A E0 mov AH,AL
300 0427 24 0F and AL,0Fh
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.