Лабораторная работа 5.
Прерывания ДОС и БИОС. Функции ДОС и БИОС
Задание:
Составить программу, вызывающую один или несколько обработчиков
прерываний ДОС или БИОС. Программа должна содержать средства,
подтверждающие исполнение прерывания, например, с использованием
других обработчиков прерываний.
Обработчик прерывания назначается преподавателем индивидуально
каждому студенту в соответствии с таблицей 1. Принимаются и обсуждаются
предложения студента. Предпочтения отдаются вводу с клавиатуры и из
файла и выводу на терминал и в файл. Рекомендуются функции ДОС
обработчика прерывания 21Н и функции БИОС.
Отчет должен содержать:
- текст задания;
- постановку индивидуального задания в виде, сформулированном
самим студентом;
- текст программы и ее листинг;
- протокол пошаговой отладки;
- результат тестирования программы.
Таблица 1.
Вар. INT Код функции Функция
2 10H 06h,07h,0fh Прокрутка экрана
Постановка задания:
Требуется осуществить прокрутку экрана указанными функциями за счет прерывания 10h. Также требуется показать факт срабатывания прерывания, для чего перед прокруткой экрана на него выводятся строки какого-то текста.
Текст программы:
EOFLine EQU '$'
AStack SEGMENT STACK
DW 256 DUP(?)
AStack ENDS
DATA SEGMENT
HELLO DB '‡¤а ўбвўг©вҐ!', 0AH, 0DH,EOFLine
GREETING DB '‚ б ЇаЁўҐвбвўгҐв бв.Ја.2342 -Khomyakov M.U.', 0AH, 0DH, EOFLine
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:AStack
WriteMsg PROC NEAR
mov AH,9
int 21h
ret
WriteMsg ENDP
clr PROC NEAR
mov ah,6
mov al,0
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
ret
clr ENDP
kursor PROC NEAR
mov ah,2
mov dh,0
mov dl,0
mov bh,0
int 10h
ret
kursor ENDP
prokrutka PROC NEAR
mov ah,06
mov al,3
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
ret
prokrutka ENDP
Main PROC FAR
push DS
sub AX,AX
push AX
mov AX,DATA
mov DS,AX
;call clr
;call kursor
mov cx,10
mov bh,0
wrt: mov DX, OFFSET HELLO
call WriteMsg
mov DX, OFFSET GREETING
call WriteMsg
loop wrt
call prokrutka
ret
Main ENDP
CODE ENDS
END Main
Листинг файл программы:
Microsoft (R) Macro Assembler Version 5.10 4/11/4
Page 1-1
1 page 100,132
2 = 0024 EOFLine EQU '$'
3
4 0000 AStack SEGMENT STACK
5 0000 0100[ DW 256 DUP(?)
6 ????
7 ]
8
9 0200 AStack ENDS
10
11 0000 DATA SEGMENT
12
13 0000 87 A4 E0 A0 A2 E1 HELLO DB '‡¤а ўбвўг©вҐ!', 0AH, 0DH,EOFLine
14 E2 A2 E3 A9 E2 A5
15 21 0A 0D 24
16 0010 82 A0 E1 20 AF E0 GREETING DB '‚ б ЇаЁўҐвбвўгҐв бв.Ја.2342 -Khomyakov M.U.', 0AH, 0DH, EOFLine
17 A8 A2 A5 E2 E1 E2
18 A2 E3 A5 E2 20 E1
19 E2 2E A3 E0 2E 32
20 33 34 32 20 2D 4B
21 68 6F 6D 79 61 6B
22 6F 76 20 4D 2E 55
23 2E 0A 0D 24
24 003E DATA ENDS
25
26 0000 CODE SEGMENT
27 ASSUME CS:CODE, DS:DATA, SS:AStack
28
29 0000 WriteMsg PROC NEAR
30 0000 B4 09 mov AH,9
31 0002 CD 21 int 21h
32 0004 C3 ret
33 0005 WriteMsg ENDP
34
35 0005 clr PROC NEAR
36 0005 B4 06 mov ah,6
37 0007 B0 00 mov al,0
38 0009 B5 00 mov ch,0
39 000B B1 00 mov cl,0
40 000D B6 18 mov dh,24
41 000F B2 4F mov dl,79
42 0011 CD 10 int 10h
43 0013 C3 ret
44 0014 clr ENDP
45
46 0014 kursor PROC NEAR
47 0014 B4 02 mov ah,2
48 0016 B6 00 mov dh,0
49 0018 B2 00 mov dl,0
50 001A B7 00 mov bh,0
51 001C CD 10 int 10h
52 001E C3 ret
53 001F kursor ENDP
54
55 001F prokrutka PROC NEAR
56 001F B4 06 mov ah,06
57 0021 B0 03 mov al,3
58 0023 B5 00 mov ch,0
59 0025 B1 00 mov cl,0
60 0027 B6 18 mov dh,24
61 0029 B2 4F mov dl,79
62 002B CD 10 int 10h
63 002D C3 ret
64 002E prokrutka ENDP
65
66 002E Main PROC FAR
67 002E 1E push DS
68 002F 2B C0 sub AX,AX
69 0031 50 push AX
70 0032 B8 ---- R mov AX,DATA
71 0035 8E D8 mov DS,AX
72 ;call clr
73 ;call kursor
74 0037 B9 000A mov cx,10
75 003A B7 00 mov bh,0
76 003C BA 0000 R wrt: mov DX, OFFSET HELLO
77 003F E8 0000 R call WriteMsg
78 0042 BA 0010 R mov DX, OFFSET GREETING
79 0045 E8 0000 R call WriteMsg
80 0048 E2 F2 loop wrt
81 004A E8 001F R call prokrutka
82 004D CB ret
83 004E Main ENDP
84 004E CODE ENDS
85 END Main
Microsoft (R) Macro Assembler Version 5.10 4/11/4
Symbols-1
Segments and Groups:
N a m e Length Align Combine Class
ASTACK . . . . . . . . . . . . . 0200 PARA STACK
CODE . . . . . . . . . . . . . . 004E PARA NONE
DATA . . . . . . . . . . . . . . 003E PARA NONE
Symbols:
N a m e Type Value Attr
CLR . . . . . . . . . . . . . . N PROC 0005 CODE Length = 000F
EOFLINE . . . . . . . . . . . . NUMBER 0024
GREETING . . . . . . . . . . . . L BYTE 0010 DATA
HELLO . . . . . . . . . . . . . L BYTE 0000 DATA
KURSOR . . . . . . . . . . . . . N PROC 0014 CODE Length = 000B
MAIN . . . . . . . . . . . . . . F PROC 002E CODE Length = 0020
PROKRUTKA . . . . . . . . . . . N PROC 001F CODE Length = 000F
WRITEMSG . . . . . . . . . . . . N PROC 0000 CODE Length = 0005
WRT . . . . . . . . . . . . . . L NEAR 003C CODE
@CPU . . . . . . . . . . . . . . TEXT 0101h
@FILENAME . . . . . . . . . . . TEXT lr5
@VERSION . . . . . . . . . . . . TEXT 510
73 Source Lines
73 Total Lines
17 Symbols
46472 + 384724 Bytes symbol space free
0 Warning Errors
0 Severe Errors