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

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

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

Кафедра ПО ВТ

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

ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ

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

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

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

Курск 2007

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

Освоение базово-индексной и базово-индексной со смещением адресаций при работе с 2-мерными массивами, а также форм записи базово-индексной адресаций; изучение способов организации циклов.

Задание

Написать программу, которая находит максимальный элемент в каждой строке и в каждом столбце массива.

LST файл

Turbo Assembler Version 3.1 25/03/07 12:39:08 Page 1

4.asm

1 0000 .model small

2

3 0000 .data

4 =0004 m = 4

5 =0004 n = 4

6 =0008 subVar = 8

7

8 0000 0001 0002 0003 0004 mas dw 1, 2, 3, 4

9 0008 0005 0006 0007 0008 dw 5, 6, 7, 8

10 0010 0009 000A 000B 000C dw 9, 10,11,12

11 0018 000D 000E 000F 0010 dw 13,14,15,16

12

13 0020 ???? max dw ?

14 0022 04*(????) maxRow dw 4 dup(?)

15 002A 04*(????) maxCount dw 4 dup(?)

16

17 0000 .stack 128

18

19 0032 .code

20 0000 B8 0000s mov AX,@data

21 0003 8E D8 mov DS,AX

22

23 ;максимумы в строках

24 0005 BB 0000 mov BX,0

25 0008 BF 0000 mov DI,0

26 000B B9 0000 mov CX,0

27 000E met1:

28 000E 83 F9 04 cmp CX,m

29 0011 74 39 je break1

30 0013 51 push CX

31 0014 BE 0000 mov SI,0

32 0017 8B 80 0000r mov AX,mas[BX][SI]

33 001B A3 0020r mov max,AX

34 001E B9 0004 mov CX,n

35 0021 met2:

36 0021 51 push CX

37 0022 8B 80 0000r mov AX,mas[BX][SI]

38 0026 3B 06 0020r cmp AX,max

39 002A 73 02 jae newRowMax

40 002C 72 07 jb next1

41 002E newRowMax:

42 002E 8B 80 0000r mov AX,mas[BX][SI]

43 0032 A3 0020r mov max,AX

44 0035 next1:

45 0035 83 C6 02 add SI,2

46 0038 59 pop CX

47 0039 E2 E6 loop met2

48 003B A1 0020r mov AX,max

49 003E 89 85 0022r mov maxRow[DI],AX

50 0042 83 C7 02 add DI,2

51 0045 83 C3 08 add BX,subVar

52 0048 59 pop CX

53 0049 41 inc CX

54 004A EB C2 jmp met1

55

56 004C break1:

57 ;максимумы в столбцах

58 004C BB 0000 mov BX,0

59 004F BF 0000 mov DI,0

60 0052 B9 0000 mov CX,0

61 0055 met3:

62 0055 83 F9 04 cmp CX,n

63 0058 74 39 je break2

64 005A 51 push CX

65 005B BE 0000 mov SI,0

66 005E 8B 80 0000r mov AX,mas[BX][SI]

67 0062 A3 0020r mov max,AX

68 0065 B9 0004 mov CX,m

69 0068 met4:

70 0068 51 push CX

71 0069 8B 80 0000r mov AX,mas[BX][SI]

72 006D 3B 06 0020r cmp AX,max

73 0071 73 02 jae newCountMax

74 0073 72 07 jb next2

75 0075 newCountMax:

76 0075 8B 80 0000r mov AX,mas[BX][SI]

77 0079 A3 0020r mov max,AX

78 007C next2:

79 007C 83 C6 08 add SI,subVar

80 007F 59 pop CX

81 0080 E2 E6 loop met4

82 0082 A1 0020r mov AX,max

83 0085 89 85 002Ar mov maxCount[DI],AX

84 0089 83 C7 02 add DI,2

85 008C 83 C3 02 add BX,2

86 008F 59 pop CX

87 0090 41 inc CX

88 0091 EB C2 jmp met3

89

90 0093 break2:

91 0093 B8 4C00 mov AX,4c00h

92 0096 CD 21 int 21h

93 end

Turbo Assembler Version 3.1 25/03/07 12:39:08 Page 3

Symbol Table

Symbol Name Type Value

??DATE Text "25/03/07"

??FILENAME Text "4 "

??TIME Text "12:39:08"

??VERSION Number 030A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text 4

@INTERFACE Text 00H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

BREAK1 Near _TEXT:004C

BREAK2 Near _TEXT:0093

M Number 0004

MAS Word DGROUP:0000

MAX Word DGROUP:0020

MAXCOUNT Word DGROUP:002A

MAXROW Word DGROUP:0022

MET1 Near _TEXT:000E

MET2 Near _TEXT:0021

MET3 Near _TEXT:0055

MET4 Near _TEXT:0068

N Number 0004

NEWCOUNTMAX Near _TEXT:0075

NEWROWMAX Near _TEXT:002E

NEXT1 Near _TEXT:0035

NEXT2 Near _TEXT:007C

SUBVAR Number 0008

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0080 Para Stack STACK

_DATA 16 0032 Word Public DATA

_TEXT 16 0098 Word Public CODE

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