Лабораторная работа №8 / LR8
.docЗадание:
Изготовление программы на языке Ассемблер, которая позволяет проанализировать и вывести на экран информацию о наличии, количестве и типе в составе используемой конфигурации компьютера таких ресурсов, как: математический сопроцессор, накопители на магнитных дисках (жестких или гибких), емкость памяти на системной плате, тип дисплея.
Вариант: AC (A - есть ли математический сопроцессор, C - число накопителей на дискетах и их тип)
Постановка задания:
Задача состоит в определении и выводе информации о наличии математического сопроцессора и наличия накопителей на магнитных дисках, если они присутствуют то и их количество.
Текст программы:
EOFLine EQU '$'
AStack SEGMENT STACK
DW 1200 DUP(?)
AStack ENDS
DATA SEGMENT
HELLO DB '‡¤а ўбвўг©вҐ!', 0AH, 0DH,EOFLine
GREETING DB '‚ б ЇаЁўҐвбвўгҐв бв.Ја.2342 -Khomyakov M.U.', 0AH, 0DH, EOFLine
enab db 'enable',0AH, 0DH,EOFLine
disab db 'disable',0AH, 0DH,EOFLine
soproc db 'Mathematical coprocessor ',EOFLine
ngmd db 'Nakopitelei na GMD: ',EOFLine
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:AStack
WriteMsg PROC NEAR
mov AH,9
int 21h
ret
WriteMsg ENDP
Main PROC FAR
push DS
sub AX,AX
push AX
mov AX,DATA
mov DS,AX
mov DX, OFFSET HELLO
call WriteMsg
mov DX, OFFSET GREETING
call WriteMsg
mov DX, OFFSET soproc
call WriteMsg
MOV AL, 14H
OUT 70H, AL
IN AL, 71H
TEST AL, 10B
JZ NO_COPROC
mov DX, OFFSET enab
call WriteMsg
jmp next
no_coproc:mov DX, OFFSET disab
call WriteMsg
next: mov DX, OFFSET ngmd
call WriteMsg
MOV AL, 14H
OUT 70H, AL
IN AL, 71H
TEST AL, 1B
JZ NO_NGMD
mov DX, OFFSET enab
call WriteMsg
MOV AL, 14H
OUT 70H, AL
IN AL, 71H
TEST AL, 100000B
JZ odin
mov ah,06h
mov dl,5Fh
int 21h
mov ah,06h
mov dl,32h
int 21h
jmp next1
odin: mov ah,06h
mov dl,5Fh
int 21h
mov ah,06h
mov dl,31h
int 21h
jmp next1
no_ngmd: mov DX, OFFSET disab
call WriteMsg
next1:
ret
Main ENDP
CODE ENDS
END Main
Листинг программы:
Microsoft (R) Macro Assembler Version 5.10 5/14/4
Page 1-1
1 = 0024 EOFLine EQU '$'
2
3 0000 AStack SEGMENT STACK
4 0000 04B0[ DW 1200 DUP(?)
5 ????
6 ]
7
8 0960 AStack ENDS
9
10 0000 DATA SEGMENT
11
12 0000 87 A4 E0 A0 A2 E1 HELLO DB '‡¤а ўбвўг©вҐ!', 0AH, 0DH,
EOFLine
13 E2 A2 E3 A9 E2 A5
14 21 0A 0D 24
15 0010 82 A0 E1 20 AF E0 GREETING DB '‚ б ЇаЁўҐвбвўгҐв бв.Ја.23
42 -Khomyakov M.U.', 0AH, 0DH, EOFLine
16 A8 A2 A5 E2 E1 E2
17 A2 E3 A5 E2 20 E1
18 E2 2E A3 E0 2E 32
19 33 34 32 20 2D 4B
20 68 6F 6D 79 61 6B
21 6F 76 20 4D 2E 55
22 2E 0A 0D 24
23 003E 65 6E 61 62 6C 65 enab db 'enable',0AH, 0DH,EOFLine
24 0A 0D 24
25 0047 64 69 73 61 62 6C disab db 'disable',0AH, 0DH,EOFLine
26 65 0A 0D 24
27 0051 4D 61 74 68 65 6D soproc db 'Mathematical coprocessor
',EOFLine
28 61 74 69 63 61 6C
29 20 63 6F 70 72 6F
30 63 65 73 73 6F 72
31 20 24
32 006B 4E 61 6B 6F 70 69 ngmd db 'Nakopitelei na GMD: ',EOF
Line
33 74 65 6C 65 69 20
34 6E 61 20 47 4D 44
35 3A 20 24
36
37 0080 DATA ENDS
38
39 0000 CODE SEGMENT
40 ASSUME CS:CODE, DS:DATA, SS:A
Stack
41
42 0000 WriteMsg PROC NEAR
43 0000 B4 09 mov AH,9
44 0002 CD 21 int 21h
45 0004 C3 ret
46 0005 WriteMsg ENDP
47
48 0005 Main PROC FAR
49 0005 1E push DS
Microsoft (R) Macro Assembler Version 5.10 5/14/4
Page 1-2
50 0006 2B C0 sub AX,AX
51 0008 50 push AX
52 0009 B8 ---- R mov AX,DATA
53 000C 8E D8 mov DS,AX
54 000E BA 0000 R mov DX, OFFSET HELLO
55 0011 E8 0000 R call WriteMsg
56 0014 BA 0010 R mov DX, OFFSET GREETING
57 0017 E8 0000 R call WriteMsg
58
59 001A BA 0051 R mov DX, OFFSET soproc
60 001D E8 0000 R call WriteMsg
61
62 0020 B0 14 MOV AL, 14H
63 0022 E6 70 OUT 70H, AL
64 0024 E4 71 IN AL, 71H
65 0026 A8 02 TEST AL, 10B
66 0028 74 09 JZ NO_COPROC
67 002A BA 003E R mov DX, OFFSET enab
68 002D E8 0000 R call WriteMsg
69 0030 EB 07 90 jmp next
70
71 0033 BA 0047 R no_coproc:mov DX, OFFSET disab
72 0036 E8 0000 R call WriteMsg
73
74 0039 BA 006B R next: mov DX, OFFSET ngmd
75 003C E8 0000 R call WriteMsg
76
77 003F B0 14 MOV AL, 14H
78 0041 E6 70 OUT 70H, AL
79 0043 E4 71 IN AL, 71H
80 0045 A8 01 TEST AL, 1B
81 0047 74 2E JZ NO_NGMD
82 0049 BA 003E R mov DX, OFFSET enab
83 004C E8 0000 R call WriteMsg
84
85 004F B0 14 MOV AL, 14H
86 0051 E6 70 OUT 70H, AL
87 0053 E4 71 IN AL, 71H
88 0055 A8 20 TEST AL, 100000B
89 0057 74 0F JZ odin
90
91 0059 B4 06 mov ah,06h
92 005B B2 5F mov dl,5Fh
93 005D CD 21 int 21h
94 005F B4 06 mov ah,06h
95 0061 B2 32 mov dl,32h
96 0063 CD 21 int 21h
97 0065 EB 16 90 jmp next1
98
99 0068 B4 06 odin: mov ah,06h
100 006A B2 5F mov dl,5Fh
101 006C CD 21 int 21h
102 006E B4 06 mov ah,06h
103 0070 B2 31 mov dl,31h
Microsoft (R) Macro Assembler Version 5.10 5/14/4
Page 1-3
104 0072 CD 21 int 21h
105 0074 EB 07 90 jmp next1
106
107 0077 BA 0047 R no_ngmd: mov DX, OFFSET disab
108 007A E8 0000 R call WriteMsg
109
110 007D next1:
111
112
113 007D CB ret
114
115 007E Main ENDP
116 007E CODE ENDS
117 END Main
Microsoft (R) Macro Assembler Version 5.10 5/14/4
Symbols-1
Segments and Groups:
N a m e Length Align Combine Class
ASTACK . . . . . . . . . . . . . 0960 PARA STACK
CODE . . . . . . . . . . . . . . 007E PARA NONE
DATA . . . . . . . . . . . . . . 0080 PARA NONE
Symbols:
N a m e Type Value Attr
DISAB . . . . . . . . . . . . . L BYTE 0047 DATA
ENAB . . . . . . . . . . . . . . L BYTE 003E DATA
EOFLINE . . . . . . . . . . . . NUMBER 0024
GREETING . . . . . . . . . . . . L BYTE 0010 DATA
HELLO . . . . . . . . . . . . . L BYTE 0000 DATA
MAIN . . . . . . . . . . . . . . F PROC 0005 CODE Length = 0079
NEXT . . . . . . . . . . . . . . L NEAR 0039 CODE
NEXT1 . . . . . . . . . . . . . L NEAR 007D CODE
NGMD . . . . . . . . . . . . . . L BYTE 006B DATA
NO_COPROC . . . . . . . . . . . L NEAR 0033 CODE
NO_NGMD . . . . . . . . . . . . L NEAR 0077 CODE
ODIN . . . . . . . . . . . . . . L NEAR 0068 CODE
SOPROC . . . . . . . . . . . . . L BYTE 0051 DATA
WRITEMSG . . . . . . . . . . . . N PROC 0000 CODE Length = 0005
@CPU . . . . . . . . . . . . . . TEXT 0101h
@FILENAME . . . . . . . . . . . TEXT lr8
@VERSION . . . . . . . . . . . . TEXT 510
96 Source Lines
96 Total Lines
22 Symbols
46472 + 382677 Bytes symbol space free
0 Warning Errors
0 Severe Errors
Результаты тестирования:
Как такового тестирования проведено быть не может из-за отсутствия доступа к разным компьютерам с разнообразной комплектацией.
Выводы:
Программа работает корректно и выполняет поставленную задачу.