Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
01.05.2014
Размер:
49.66 Кб
Скачать

Задание:

Изготовление программы на языке Ассемблер, которая позволяет проанализировать и вывести на экран информацию о наличии, количестве и типе в составе используемой конфигурации компьютера таких ресурсов, как: математический сопроцессор, накопители на магнитных дисках (жестких или гибких), емкость памяти на системной плате, тип дисплея.

Вариант: 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

Результаты тестирования:

Как такового тестирования проведено быть не может из-за отсутствия доступа к разным компьютерам с разнообразной комплектацией.

Выводы:

Программа работает корректно и выполняет поставленную задачу.

8

Соседние файлы в папке Лабораторная работа №8
  • #
    01.05.20141.93 Кб6LR8.ASM
  • #
    01.05.201449.66 Кб10LR8.doc
  • #
    01.05.2014231 б6LR8.MAP
  • #
    01.05.2014454 б5LR8.OBJ