3Listing (КП - индикатор регистров, 1 вариант)
Описание файла
Файл "3Listing" внутри архива находится в следующих папках: КП - индикатор регистров, 1 вариант, Оперативный индикатор регистров микропроцессора. Документ из архива "КП - индикатор регистров, 1 вариант", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "3Listing"
Текст из документа "3Listing"
15
Московский государственный технический университет им. Н.Э.Баумана
Утверждаю: | |
Большаков С.А. | "__"_____________2004 г. |
Курсовая работа по системному программированию “Оперативный индикатор регистров микропроцессора”
Исходные текcты программы
(вид документа)
бумага А4
(вид носителя)
14
(количество листов)
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-54 | _____________________ |
Новиков И.А. | "__"_____________2004 г. |
Москва 2004
________________________________________________________________
Содержание
1. Листинг программы 3-
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 1
kurs.asm
1 0000 cseg segment 'code'
2 assume cs:cseg
3 org 100h
4 0100 mainproc:
5 0100 E9 033A jmp init
6 ;резидентная часть программы
7 ;наш обработчик прерывания 09h
8 0103 new_09h proc
9 0103 2E: 8C 1E 0403r mov cs:my_ds,ds
10 0108 2E: 89 26 03FFr mov cs:my_sp,sp
11 010D 2E: A3 03F3r mov cs:my_ax,ax
12 0111 2E: 89 1E 03F5r mov cs:my_bx,bx
13 0116 2E: 89 0E 03F7r mov cs:my_cx,cx
14 011B 2E: 89 16 03F9r mov cs:my_dx,dx
15 0120 2E: 89 2E 0401r mov cs:my_bp,bp
16 0125 2E: 8C 06 0407r mov cs:my_es,es
17 012A 2E: 89 3E 03FDr mov cs:my_di,di
18 012F 2E: 89 36 03FBr mov cs:my_si,si
19 0134 2E: 8C 16 0409r mov cs:my_ss,ss
20 0139 2E: 8C 0E 0405r mov cs:my_cs,cs
21 013E 9C pushf
22 ;вызов системного обработчика прерывания от клавиатуры
23 013F 2E: FF 1E 040Br call cs:old_09h
24 ;сохраняем регистры
25 0144 50 push ax
26 0145 53 push bx
27 0146 51 push cx
28 0147 52 push dx
29 0148 55 push bp
30 0149 1E push ds
31 014A 06 push es
32 014B 57 push di
33 014C 56 push si
34 ;ds=cs
35 014D 0E push cs
36 014E 1F pop ds
37 ;получаем первый необработанный скан-код клавиатуры
38 014F B8 0040 mov ax,40h
39 0152 8E C0 mov es,ax
40 0154 26: 8B 1E 001A mov bx,es:1ah
41 0159 26: 8B 07 mov ax,es:bx
42 ;пpовеpка на клавишу F7
43 015C 3D 4100 cmp ax,4100h
44 015F 75 11 jne home
45 ;вывод значений pегистpов
46 0161 print_regs:
47 0161 0E push cs
48 0162 1F pop ds
49 0163 B4 03 mov ah,3
50 0165 32 FF xor bh,bh
51 0167 CD 10 int 10h
52 0169 52 push dx
53 016A E8 00A3 call dump
54 016D 5A pop dx
55 016E B4 02 mov ah,2
56 0170 CD 10 int 10h
57 ;выход из обработчика прерываний и восстановление используемых регистров
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 2
kurs.asm
58 0172 home:
59 0172 5E pop si
60 0173 5F pop di
61 0174 07 pop es
62 0175 1F pop ds
63 0176 5D pop bp
64 0177 5A pop dx
65 0178 59 pop cx
66 0179 5B pop bx
67 017A 58 pop ax
68 017B endi:
69 017B CF iret
70 017C new_09h endp
71 ;наш обработчик прерывания 2fh
72 017C new_2fh proc
73 ;AX=C001H - сигнал выгрузки
74 017C 3D C001 cmp ax,0c001h
75 017F 75 02 jne ch_c000
76 0181 EB 0D jmp quit1
77 ;AX=C000H - проверка на загрузку резидента. Помещает в AL значение 255 (FFh)
78 0183 ch_c000:
79 0183 3D C000 cmp AX,0c000h
80 0186 75 03 jne not_my
81 0188 B0 FF mov AL,0ffh
82 018A CF iret
83 018B not_my:
84 018B 2E: FF 2E 040Fr jmp cs:old_2fh
85 ;выгрузка резидента
86 0190 quit1:
87 0190 1E push ds
88 0191 06 push es
89 0192 33 C0 xor ax,ax
90 0194 8E C0 mov es,ax
91 0196 8C C8 mov ax,cs
92 0198 26: 3B 06 0026 cmp ax,word ptr es:26h
93 019D 75 53 jne home1
94 ;восстановим старые вектора прерываний
95 019F 1E push ds
96 01A0 B8 2509 mov ax,2509h
97 01A3 2E: C5 16 040Br lds dx,cs:old_09h
98 01A8 CD 21 int 21h
99 01AA B8 252F mov ax,252fh
100 01AD 2E: C5 16 040Fr lds dx,cs:old_2fh
101 01B2 CD 21 int 21h
102 01B4 1F pop ds
103 ;выведем сообщение о выгрузке программы на экран
104 01B5 33 D2 xor dx,dx
105 01B7 33 DB xor bx,bx
106 01B9 B8 0002 mov ax,2
107 01BC CD 10 int 10h
108 01BE E8 0227 call crlf
109 01C1 l1:
110 01C1 53 push bx
111 01C2 2E: 8A 87 0423r mov al,mesr[bx]
112 01C7 E8 0200 call putch
113 01CA 5B pop bx
114 01CB 43 inc bx
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 3
kurs.asm
115 01CC 83 FB 1A cmp bx,mesrlen
116 01CF 72 F0 jb l1
117 ;собственно выгрузка резидента из памяти
118 01D1 8C C8 mov ax,cs
119 01D3 48 dec ax
120 01D4 8E D8 mov ds,ax
121 01D6 BB 0001 mov bx,1
122 01D9 C7 07 0000 mov word ptr ds:bx,word ptr 0
123 01DD 8C C8 mov ax,cs
124 01DF 8E D8 mov ds,ax
125 01E1 BB 002C mov bx,002ch
126 01E4 8B 07 mov ax,word ptr ds:bx
127 01E6 48 dec ax
128 01E7 8E D8 mov ds,ax
129 01E9 BB 0001 mov bx,1
130 01EC C7 07 0000 mov word ptr ds:bx,word ptr 0
131 01F0 EB 00 jmp home1
132 01F2 home1:
133 ;выход из обработчика прерываний и восстановление используемых регистров
134 01F2 07 pop es
135 01F3 1F pop ds
136 01F4 CF iret
137 01F5 new_2fh endp
138 ;конец обработчика прерывания
139
140 ;перевод в 16-ричный вид
141 01F5 TRAN proc
142 01F5 50 push ax
143 01F6 D0 E8 D0 E8 D0 E8 D0+ shr al,4
144 E8
145 01FE BB 0413r lea bx,table1
146 0201 D7 xlatb
147 0202 E8 01C5 call putch
148 0205 58 pop ax
149 0206 24 0F and al,15
150 0208 BB 0413r lea bx,table1
151 020B D7 xlatb
152 020C E8 01BB call putch
153 020F C3 ret
154 0210 TRAN endp
155 ;вывод регистров
156 0210 DUMP proc
157 0210 33 D2 xor dx,dx
158 0212 B4 02 mov ah,2
159 0214 CD 10 int 10h
160 0216 B0 41 mov al,'A'
161 0218 E8 01AF call putch
162 021B B0 58 mov al,'X'
163 021D E8 01AA call putch
164 0220 B0 3D mov al,'='
165 0222 E8 01A5 call putch
166 0225 2E: A1 03F3r mov ax,my_ax
167 0229 8A C4 mov al,ah
168 022B E8 FFC7 call tran
169 022E 2E: A1 03F3r mov ax,my_ax
170 0232 E8 FFC0 call tran
171 0235 B0 20 mov al,20h
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 4
kurs.asm
172 0237 E8 0190 call putch
173
174 023A B0 42 mov al,'B'
175 023C E8 018B call putch
176 023F B0 58 mov al,'X'
177 0241 E8 0186 call putch
178 0244 B0 3D mov al,'='
179 0246 E8 0181 call putch
180 0249 2E: A1 03F5r mov ax,my_bx
181 024D 8A C4 mov al,ah
182 024F E8 FFA3 call tran
183 0252 2E: A1 03F5r mov ax,my_bx
184 0256 E8 FF9C call tran
185 0259 B0 20 mov al,20h
186 025B E8 016C call putch
187
188 025E B0 43 mov al,'C'
189 0260 E8 0167 call putch
190 0263 B0 58 mov al,'X'
191 0265 E8 0162 call putch
192 0268 B0 3D mov al,'='
193 026A E8 015D call putch
194 026D 2E: A1 03F7r mov ax,my_cx
195 0271 8A C4 mov al,ah
196 0273 E8 FF7F call tran
197 0276 2E: A1 03F7r mov ax,my_cx
198 027A E8 FF78 call tran
199 027D B0 20 mov al,20h
200 027F E8 0148 call putch
201
202 0282 B0 44 mov al,'D'
203 0284 E8 0143 call putch
204 0287 B0 58 mov al,'X'
205 0289 E8 013E call putch
206 028C B0 3D mov al,'='
207 028E E8 0139 call putch
208 0291 2E: A1 03F9r mov ax,my_dx
209 0295 8A C4 mov al,ah
210 0297 E8 FF5B call tran
211 029A 2E: A1 03F9r mov ax,my_dx
212 029E E8 FF54 call tran
213 02A1 B0 20 mov al,20h
214 02A3 E8 0124 call putch
215
216 02A6 B0 42 mov al,'B'
217 02A8 E8 011F call putch
218 02AB B0 50 mov al,'P'
219 02AD E8 011A call putch
220 02B0 B0 3D mov al,'='
221 02B2 E8 0115 call putch
222 02B5 2E: A1 0401r mov ax,my_bp
223 02B9 8A C4 mov al,ah
224 02BB E8 FF37 call tran
225 02BE 2E: A1 0401r mov ax,my_bp
226 02C2 E8 FF30 call tran
227 02C5 B0 20 mov al,20h
228 02C7 E8 0100 call putch
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 5
kurs.asm
229
230 02CA B0 53 mov al,'S'
231 02CC E8 00FB call putch
232 02CF B0 50 mov al,'P'
233 02D1 E8 00F6 call putch
234 02D4 B0 3D mov al,'='
235 02D6 E8 00F1 call putch
236 02D9 2E: A1 03FFr mov ax,my_sp
237 02DD 8A C4 mov al,ah
238 02DF E8 FF13 call tran
239 02E2 2E: A1 03FFr mov ax,my_sp
240 02E6 E8 FF0C call tran
241 02E9 B0 20 mov al,20h
242 02EB E8 00DC call putch
243
244 02EE B0 53 mov al,'S'
245 02F0 E8 00D7 call putch
246 02F3 B0 49 mov al,'I'
247 02F5 E8 00D2 call putch
248 02F8 B0 3D mov al,'='
249 02FA E8 00CD call putch
250 02FD 2E: A1 03FBr mov ax,my_si
251 0301 8A C4 mov al,ah
252 0303 E8 FEEF call tran
253 0306 2E: A1 03FBr mov ax,my_si
254 030A E8 FEE8 call tran
255 030D B0 20 mov al,20h
256 030F E8 00B8 call putch
257
258 0312 B0 44 mov al,'D'
259 0314 E8 00B3 call putch
260 0317 B0 49 mov al,'I'
261 0319 E8 00AE call putch
262 031C B0 3D mov al,'='
263 031E E8 00A9 call putch
264 0321 2E: A1 03FDr mov ax,my_di
265 0325 8A C4 mov al,ah
266 0327 E8 FECB call tran
267 032A 2E: A1 03FDr mov ax,my_di
268 032E E8 FEC4 call tran
269 0331 B0 20 mov al,20h
270 0333 E8 0094 call putch
271 0336 E8 00AF call crlf
272
273 0339 B0 43 mov al,'C'
274 033B E8 008C call putch
275 033E B0 53 mov al,'S'
276 0340 E8 0087 call putch
277 0343 B0 3D mov al,'='
278 0345 E8 0082 call putch
279 0348 2E: A1 0405r mov ax,my_cs
280 034C 8A C4 mov al,ah
281 034E E8 FEA4 call tran
282 0351 2E: A1 0405r mov ax,my_cs
283 0355 E8 FE9D call tran
284 0358 B0 20 mov al,20h
285 035A E8 006D call putch
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 6
kurs.asm
286
287 035D B0 44 mov al,'D'
288 035F E8 0068 call putch
289 0362 B0 53 mov al,'S'
290 0364 E8 0063 call putch
291 0367 B0 3D mov al,'='
292 0369 E8 005E call putch
293 036C 2E: A1 0403r mov ax,my_ds
294 0370 8A C4 mov al,ah
295 0372 E8 FE80 call tran
296 0375 2E: A1 0403r mov ax,my_ds
297 0379 E8 FE79 call tran
298 037C B0 20 mov al,20h
299 037E E8 0049 call putch
300
301 0381 B0 45 mov al,'E'
302 0383 E8 0044 call putch
303 0386 B0 53 mov al,'S'
304 0388 E8 003F call putch
305 038B B0 3D mov al,'='
306 038D E8 003A call putch
307 0390 2E: A1 0407r mov ax,my_es
308 0394 8A C4 mov al,ah
309 0396 E8 FE5C call tran
310 0399 2E: A1 0407r mov ax,my_es
311 039D E8 FE55 call tran
312 03A0 B0 20 mov al,20h
313 03A2 E8 0025 call putch
314
315 03A5 B0 53 mov al,'S'
316 03A7 E8 0020 call putch
317 03AA B0 53 mov al,'S'
318 03AC E8 001B call putch
319 03AF B0 3D mov al,'='
320 03B1 E8 0016 call putch
321 03B4 2E: A1 0409r mov ax,my_ss
322 03B8 8A C4 mov al,ah
323 03BA E8 FE38 call tran
324 03BD 2E: A1 0409r mov ax,my_ss
325 03C1 E8 FE31 call tran
326 03C4 B0 20 mov al,20h
327 03C6 E8 0001 call putch
328 03C9 C3 ret
329 03CA DUMP endp
330 ;вывод одного символа
331 03CA PUTCH proc
332 03CA B4 09 mov AH,9
333 03CC BB 000E mov bx,14
334 03CF B9 0001 mov cx,1
335 03D2 CD 10 Int 10h
336 03D4 B4 02 mov ah,2
337 03D6 32 FF xor bh,bh
338 03D8 80 FA 50 cmp dl,80
339 03DB 73 04 jae nl
340 03DD FE C2 inc dl
341 03DF EB 04 jmp m001
342 03E1 nl:
Turbo Assembler Version 3.1 26/11/04 10:49:21 Page 7
kurs.asm
343 03E1 FE C6 inc dh
344 03E3 32 D2 xor dl,dl
345 03E5 m001: