Скачиваний:
67
Добавлен:
11.02.2014
Размер:
45.57 Кб
Скачать

Министерство образования и науки Российской Федерации

Курский Государственный Технический Университет

Кафедра ПО ВТ

ЛАБОРАТОРНАЯ РАБОТА №6

НАПИСАНИЕ СОБСТВЕННОГО ПРЕРЫВАНИЯ

выполнил: студент гр. ПО-42

Эсауленко Д.В.

проверил: Родионов Д. И.

Курск 2007

Цель лабораторной работы

Познакомиться с понятиями «Прерывание DOS, прерывание BIOS». Научиться работать с таблицей векторов прерываний. Научиться писать собственные и редактировать существующие (стандартные ) прерывания.

Задание

На вектор 66h «повесить» собственное прерывание такое, чтобы функция с номером 0 этого прерывания осущесвляла ввод для лабораторной работы №5, а функция с номером 1 – вывод.

Листинг программы

Turbo Assembler Version 3.1 04/05/07 22:00:07 Page 1

6.asm

1 .286

2

3 0000 .model small

4

5 0000 .stack 512

6

7 0000 .data

8

9 0000 64*(??) s1 db 100 dup(?)

10 0064 08*(??) s db 8 dup (?)

11 006C 0000 lenS dw 0

12 006E 0000 posS dw 0

13 0070 0000 curPos dw 0

14 0072 0000 count dw 0

15 0074 ???? mn dw ?

16 0076 ???? del dw ?

17 0078 ???? num dw ?

18

19 007A 04*(????) mas dw 4 dup(?)

20 0082 04*(????) dw 4 dup(?) ; вводимый массив

21 008A 04*(????) dw 4 dup(?)

22 0092 04*(????) dw 4 dup(?)

23

24 009A 0004 rowCount dw 4

25 009C 0004 colCount dw 4

26 009E ???? max dw ?

27 00A0 04*(????) maxRow dw 4 dup(?)

28 00A8 04*(????) maxCol dw 4 dup(?)

29 00B0 56 76 65 64 69 74 65+ vvod_mas db 'Vvedite massiv : $'

30 20 6D 61 73 73 69 76+

31 20 3A 20 24

32 00C2 6D 61 78 20 65 6C 65+ vivod_mas1 db 'max elements in rows : $'

33 6D 65 6E 74 73 20 69+

34 6E 20 72 6F 77 73 20+

35 3A 20 24

36 00DA 6D 61 78 20 65 6C 65+ vivod_mas2 db 'max elements in columns : $'

37 6D 65 6E 74 73 20 69+

38 6E 20 63 6F 6C 75 6D+

39 6E 73 20 3A 20 24

40

41 00F5 .code

42 0000 B8 0000s mov AX,@data

43 0003 8E D8 mov DS,AX

44

45 0005 E8 02CE call InPr

46

47 0008 B4 00 mov AH,0

48 000A CD 66 int 66h

49

50 000C E8 0126 call RowMax

51

52 000F B4 09 mov AH,9

53 0011 BA 00C2r lea DX,vivod_mas1

54 0014 CD 21 int 21h

55

56 0016 BB 00A0r mov BX,offset maxRow

57

58 0019 B4 01 mov AH,1

59 001B CD 66 int 66h

60

61 001D E8 0166 call ColMax

62

63 0020 B4 09 mov AH,9

64 0022 BA 00DAr lea DX,vivod_mas2

65 0025 CD 21 int 21h

66

67 0027 BB 00A8r mov BX,offset maxCol

68

69 002A B4 01 mov AH,1

70 002C CD 66 int 66h

71

72 002E B4 01 mov AH,1

73 0030 CD 21 int 21h

74

75 0032 B8 4C00 mov AX,4c00h

76 0035 CD 21 int 21h

77

78 ;***********************************************************************************

79

80 0037 Vvod proc near

81 0037 B4 09 mov AH,9  

82 0039 BA 00B0r lea DX,vvod_mas

83 003C CD 21 int 21h

84

85 003E B9 0064 mov CX,100

86 0041 BA 0000r lea DX,s1

87 0044 B4 3F mov AH,3Fh

88 0046 B3 00 mov BL,0

89 0048 CD 21 int 21h

90

91 004A E8 0092 call SetMas

92 004D C3 ret

93 004E Vvod endp

94

95

;***********************************************************************************

392

393 0270 Vivod proc near

394 0270 C6 06 0000r 0D mov s1[0],0Dh

395 0275 8B 0E 009Cr mov CX,colCount

396 0279 BF 0000 mov DI,0

397 027C MasV:

398 027C 51 push CX

399 027D 8B 01 mov AX,[BX][DI]

400 027F A3 0078r mov num,AX

401 0282 57 push DI

402 0283 53 push BX

403 0284 E8 FF50 call IntToStr

404 0287 E8 FFA6 call InsertSubStr

405 028A BB 0000r mov BX,offset s1

406 028D E8 FDBE call LengthStr

407 0290 8B 36 006Cr mov SI,lenS

408 0294 C6 84 FFFFr 20 mov s1[SI-1],' '

409 0299 5B pop BX

410 029A 5F pop DI

411 029B 83 C7 02 add DI,2

412 029E 59 pop CX

413 029F E2 DB loop MasV

414

415 02A1 BB 0000r mov BX,offset s1

416 02A4 E8 FDA7 call LengthStr

417 02A7 8B 36 006Cr mov SI,lenS

418 02AB C6 84 FFFFr 0D mov s1[SI-1],0Dh

419 02B0 C6 84 0000r 0A mov s1[SI],0Ah

420 02B5 C6 84 0001r 24 mov s1[SI+1],'$'

421

422 02BA B4 09 mov AH,9

423 02BC BA 0000r lea DX,s1

424 02BF CD 21 int 21h

425 02C1 C3 ret

426 02C2 Vivod endp

427 ;***********************************************************************************

428

429 02C2 Pr proc near

430 02C2 80 FC 00 cmp AH,0

431 02C5 74 05 je f0

432 02C7 80 FC 01 cmp AH,1

433 02CA 74 06 je f1

434 02CC f0:

435 02CC E8 FD68 call Vvod

436 02CF EB 04 90 jmp exit

437 02D2 f1:

438 02D2 E8 FF9B call Vivod

439 02D5 exit:

440 02D5 CF iret

441 02D6 Pr endp

442

443 ;***********************************************************************************

444

445 02D6 InPr proc near

446 02D6 1E push DS

447 02D7 0E push CS

448 02D8 1F pop DS

449 02D9 BA 02C2r mov DX,offset Pr

450 02DC B4 25 mov AH,25h

451 02DE B0 66 mov AL,66h

452 02E0 CD 21 int 21h

453 02E2 1F pop DS

454 02E3 C3 ret

455 02E4 InPr endp

456

457 ;***********************************************************************************

458

459 end

Turbo Assembler Version 3.1 04/05/07 22:00:07 Page 10

Symbol Table

Symbol Name Type Value

??DATE Text "04/05/07"

??FILENAME Text "6 "

??TIME Text "22:00:07"

??VERSION Number 030A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0707H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text 6

@INTERFACE Text 00H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

BREAK1 Near _TEXT:0185

BREAK2 Near _TEXT:01D6

C1 Near _TEXT:0057

C2 Near _TEXT:007D

C3 Near _TEXT:00A3

COL Near _TEXT:00EE

COLCOUNT Word DGROUP:009C

COLMAX Near _TEXT:0186

COPY Near _TEXT:00C8

COPYSTR Near _TEXT:00BD

COUNT Word DGROUP:0072

CURPOS Word DGROUP:0070

DEL Word DGROUP:0076

ENDC1 Near _TEXT:0067

ENDC3 Near _TEXT:00B8

ENDM2 Near _TEXT:022B

EXIT Near _TEXT:02D5

F0 Near _TEXT:02CC

F1 Near _TEXT:02D2

INPR Near _TEXT:02D6

INSERT Near _TEXT:0258

INSERTSUBSTR Near _TEXT:0230

INTTOSTR Near _TEXT:01D7

LENGTHSTR Near _TEXT:004E

LENS Word DGROUP:006C

M1 Near _TEXT:01E3

M2 Near _TEXT:021F

MAS Word DGROUP:007A

MASV Near _TEXT:027C

MAX Word DGROUP:009E

MAXCOL Word DGROUP:00A8

MAXROW Word DGROUP:00A0

MET1 Near _TEXT:013E

MET2 Near _TEXT:0153

MET3 Near _TEXT:018F

MET4 Near _TEXT:01A4

MN Word DGROUP:0074

NEWCOUNTMAX Near _TEXT:01B1

NEWROWMAX Near _TEXT:0160

NEXT1 Near _TEXT:0167

NEXT2 Near _TEXT:01B8

NOTZERO Near _TEXT:021C

NUM Word DGROUP:0078

POSS Word DGROUP:006E

POSSPACE Near _TEXT:009F

PR Near _TEXT:02C2

ROW Near _TEXT:00F5

ROWCOUNT Word DGROUP:009A

ROWMAX Near _TEXT:0135

S Byte DGROUP:0064

S1 Byte DGROUP:0000

SETMAS Near _TEXT:00DF

STRTOINT Near _TEXT:0068

VIVOD Near _TEXT:0270

VIVOD_MAS1 Byte DGROUP:00C2

VIVOD_MAS2 Byte DGROUP:00DA

VVOD Near _TEXT:0037

VVOD_MAS Byte DGROUP:00B0

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0200 Para Stack STACK

_DATA 16 00F5 Word Public DATA

_TEXT 16 02E4 Word Public CODE

Соседние файлы в папке лабораторные работы по ASSAMBLER