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

7

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

УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра технической кибернетики

Лабораторная работа № 4

Арифметические операции целочисленной обработки информации

Выполнил:

студент гр.

Проверила преподаватель:

Мукасеева В. Н.

Уфа 2005

Лабораторная работа № 4

Арифметические операции целочисленной обработки информации

1. ЦЕЛЬ РАБОТЫ

Целью работы является закрепление лекционного материала по командам арифметических операций на языке ассемблера и приобретение практических навыков реализации вычислительных алгоритмов.

2. ХОД РАБОТЫ

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

2.1 Решение

2.1.1 Исходный код программы

STACKSEG SEGMENT PARA PUBLIC 'STACK'

DB 64 DUP(0)

STACKSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

MATRIX Dw 0, -2, 0, -3, -12

Dw -41, -555, -620, -177, 10

Dw 50, 2, 0, -5, -445

Dw -24, 0, -4, -1, 5

Dw -400, 1, -5, - 1, -11

ROWLEN DW 10

SHOWMAX DB 'Максимальная сумма элементов в столбце номер $'

SHOWIS DB ' и равна :$'

MAXSUM DW 0

MAXCOL DW 0

DELITEL DB 100

TEN DB 10

TWO DB 2

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG, DS:DSEG, SS:STACKSEG

OUR_PROG PROC FAR

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

MOV SI,0

MOV CX,5

OUTERLOOP:

PUSH CX

LEA BX,MATRIX

MOV CX,5

MOV AX,0

INSIDELOOP:

ADD AX,MATRIX[BX+SI]

ADD BX,ROWLEN

LOOP INSIDELOOP

POP CX

CMP CX,5

JNE NOTFIRSTITER

MOV MAXSUM,AX

MOV MAXCOL,SI

JMP LESS

NOTFIRSTITER:CMP AX,MAXSUM

JLE LESS

MOV MAXSUM,AX

MOV MAXCOL,SI

LESS:

ADD SI,2

LOOP OUTERLOOP

MOV AX,MAXCOL

DIV TWO

MOV BL,AL

LEA DX,SHOWMAX

MOV AH,9H

INT 21H

MOV DL,BL

ADD DL,31H

MOV AH,2H

INT 21H

LEA DX,SHOWIS

MOV AH,9H

INT 21H

CMP MAXSUM,0

JGE POSSUM

NEG MAXSUM

MOV DL,'-'

MOV AH,2H

INT 21H

POSSUM:MOV AX,MAXSUM

MOV CX,3

CYCLEOUT:

DIV DELITEL

MOV BL,AH

MOV DL,AL

ADD DL,30H

MOV AH,2H

INT 21H

MOV AX,0

MOV AL,DELITEL

DIV TEN

MOV DELITEL,AL

MOV AL,BL

LOOP CYCLEOUT

RET

OUR_PROG ENDP

CSEG ENDS

END OUR_PROG

2.1.2 Блок-схема программы

2.1.3 Листинг трансляции

Turbo Assembler Version 4.1 09/12/05 17:18:17 Page 1

prog.asm

1 0000 STACKSEG SEGMENT PARA PUBLIC 'STACK'

2 0000 40*(00) DB 64 DUP(0)

3 0040 STACKSEG ENDS

4

5 0000 DSEG SEGMENT PARA PUBLIC 'DATA'

6 0000 0000 FFFE 0000 FFFD + MATRIX Dw 0, -2, 0, -3, -12

7 FFF4

8 000A FFD7 FDD5 FD94 FF4F + Dw -41, -555, -620, -177, 10

9 000A

10 0014 0032 0002 0000 FFFB + Dw 50, 2, 0, -5, -445

11 FE43

12 001E FFE8 0000 FFFC FFFF + Dw -24, 0, -4, -1, 5

13 0005

14 0028 FE70 0001 FFFB FFFF + Dw -400, 1, -5, -1, -11

15 FFF5

16 0032 000A ROWLEN DW 10

17 0034 8C A0 AA E1 A8 AC A0+ SHOWMAX DB 'Њ ЄбЁ¬ «м­ п б㬬  н«Ґ¬Ґ­в®ў ў бв®«ЎжҐ ­®¬Ґа $'

18 AB EC AD A0 EF 20 E1+

19 E3 AC AC A0 20 20 ED+

20 AB A5 AC A5 AD E2 AE+

21 A2 20 A2 20 E1 E2 AE+

22 AB A1 E6 A5 20 20 AD+

23 AE AC A5 E0 20 24

24 0064 20 A8 20 E0 A0 A2 AD+ SHOWIS DB ' Ё а ў­  :$'

25 A0 20 3A 24

26 006F 0000 MAXSUM DW 0

27 0071 0000 MAXCOL DW 0

28 0073 64 DELITEL DB 100

29 0074 0A TEN DB 10

30 0075 02 TWO DB 2

31 0076 DSEG ENDS

32

33

34 0000 CSEG SEGMENT PARA PUBLIC 'CODE'

35 ASSUME CS:CSEG, DS:DSEG, SS:STACKSEG

36 0000 OUR_PROG PROC FAR

37

38 0000 1E PUSH DS

39 0001 2B C0 SUB AX,AX

40 0003 50 PUSH AX

41 0004 B8 0000s MOV AX,DSEG

42 0007 8E D8 MOV DS,AX

43 0009 BE 0000 MOV SI,0

44 000C B9 0005 MOV CX,5

45 000F OUTERLOOP:

46 000F 51 PUSH CX

47 0010 BB 0000r LEA BX,MATRIX

48 0013 B9 0005 MOV CX,5

49 0016 B8 0000 MOV AX,0

50 0019 INSIDELOOP:

51 0019 03 80 0000r ADD AX,MATRIX[BX+SI]

52 001D 03 1E 0032r ADD BX,ROWLEN

53 0021 E2 F6 LOOP INSIDELOOP

54 0023 59 POP CX

55 0024 83 F9 05 CMP CX,5

56 0027 75 0A JNE NOTFIRSTITER

57 0029 A3 006Fr MOV MAXSUM,AX

Turbo Assembler Version 4.1 09/12/05 17:18:17 Page 2

prog.asm

58 002C 89 36 0071r MOV MAXCOL,SI

59 0030 EB 0E 90 JMP LESS

60 0033 3B 06 006Fr NOTFIRSTITER:CMP AX,MAXSUM

61 0037 7E 07 JLE LESS

62 0039 A3 006Fr MOV MAXSUM,AX

63 003C 89 36 0071r MOV MAXCOL,SI

64 0040 LESS:

65 0040 83 C6 02 ADD SI,2

66 0043 E2 CA LOOP OUTERLOOP

67 0045 A1 0071r MOV AX,MAXCOL

68 0048 F6 36 0075r DIV TWO

69 004C 8A D8 MOV BL,AL

70 004E BA 0034r LEA DX,SHOWMAX

71 0051 B4 09 MOV AH,9H

72 0053 CD 21 INT 21H

73 0055 8A D3 MOV DL,BL

74 0057 80 C2 31 ADD DL,31H

75 005A B4 02 MOV AH,2H

76 005C CD 21 INT 21H

77 005E BA 0064r LEA DX,SHOWIS

78 0061 B4 09 MOV AH,9H

79 0063 CD 21 INT 21H

80 0065 83 3E 006Fr 00 CMP MAXSUM,0

81 006A 7D 0A JGE POSSUM

82 006C F7 1E 006Fr NEG MAXSUM

83 0070 B2 2D MOV DL,'-'

84 0072 B4 02 MOV AH,2H

85 0074 CD 21 INT 21H

86 0076 A1 006Fr POSSUM:MOV AX,MAXSUM

87 0079 B9 0003 MOV CX,3

88 007C CYCLEOUT:

89 007C F6 36 0073r DIV DELITEL

90 0080 8A DC MOV BL,AH

91 0082 8A D0 MOV DL,AL

92 0084 80 C2 30 ADD DL,30H

93 0087 B4 02 MOV AH,2H

94 0089 CD 21 INT 21H

95 008B B8 0000 MOV AX,0

96 008E A0 0073r MOV AL,DELITEL

97 0091 F6 36 0074r DIV TEN

98 0095 A2 0073r MOV DELITEL,AL

99 0098 8A C3 MOV AL,BL

100 009A E2 E0 LOOP CYCLEOUT

101 009C CB RET

102 009D OUR_PROG ENDP

103 009D CSEG ENDS

104 END OUR_PROG

Turbo Assembler Version 4.1 09/12/05 17:18:17 Page 3

Symbol Table

Symbol Name Type Value

??DATE Text "09/12/05"

??FILENAME Text "prog "

??TIME Text "17:18:17"

??VERSION Number 040A

@CPU Text 0101H

@CURSEG Text CSEG

@FILENAME Text PROG

@WORDSIZE Text 2

CYCLEOUT Near CSEG:007C

DELITEL Byte DSEG:0073

INSIDELOOP Near CSEG:0019

LESS Near CSEG:0040

MATRIX Word DSEG:0000

MAXCOL Word DSEG:0071

MAXSUM Word DSEG:006F

NOTFIRSTITER Near CSEG:0033

OUR_PROG Far CSEG:0000

OUTERLOOP Near CSEG:000F

POSSUM Near CSEG:0076

ROWLEN Word DSEG:0032

SHOWIS Byte DSEG:0064

SHOWMAX Byte DSEG:0034

TEN Byte DSEG:0074

TWO Byte DSEG:0075

Groups & Segments Bit Size Align Combine Class

CSEG 16 009D Para Public CODE

DSEG 16 0076 Para Public DATA

STACKSEG 16 0040 Para Public STACK

Вывод: В ходе лабораторной работы приобрели навыки написания программ с использованием вычислительных алгоритмов.

Соседние файлы в папке LAB 4