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

12

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

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

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

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

Программирование ветвлений и циклов

Выполнили:

студенты гр.

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

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

Уфа 2005

Лабораторная работа № 3 Программирование ветвлений и циклов

1. Цель работы

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

2. ХОД РАБОТЫ

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

2)Подсчитать количество положительных элементов в столбцах двумерного массива, созданного в прошлой задаче.

2.1 Задание 1

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

TITLE EX_PROG

PAGE ,132

STACKSEG SEGMENT PARA PUBLIC 'STACK'

DB 64 DUP(0)

STACKSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

matrix DB 1, 20H,30H, 40H, 0H

DB 12H, -3,0CH, -5, 13H

DB 1, 2H, 4H, 8H, 0FH

DB 11H, 41H, 0CDH, 11H, 3H

DB 0, 0AH, 0DDH, 12H, 0

ROWLEN DB 5

POSCNTONMAIN DB 0

POSCNTONSEC DB 0

MESSONM DB 'AMOUNT OF POSITIVE NUMBERS ON MAIN DIAGONAL:$'

MESSONS DB 0DH,0AH,'AMOUNT OF POSITIVE NUMBERS ON SECONDARY DIAGONAL:$'

DSEG ENDS

SUBTTL ОСНОВНАЯ ПРОГРАММА

PAGE

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

LEA BX,MATRIX

MOV CL,ROWLEN

MOV SI,0

MOV AX,0

CYCLEMD:

MOV AL, MATRIX[BX+SI]

CMP MATRIX[BX+SI],0

JLE NEGZ

INC POSCNTONMAIN

NEGZ:

ADD BL,ROWLEN

INC SI

LOOP CYCLEMD

MOV SI,0

MOV AX,0

MOV AL,ROWLEN

MOV SI,AX

DEC SI

MOV CL,ROWLEN

MOV AX,0

LEA BX,MATRIX

CYCLESD:

MOV AL,MATRIX[BX+SI]

CMP MATRIX[BX+SI],0

JLE NEGZS

INC POSCNTONSEC

NEGZS:

ADD BL,ROWLEN

DEC SI

LOOP CYCLESD

LEA DX,MESSONM

MOV AH,9H

INT 21H

MOV DL,POSCNTONMAIN

ADD DL,30H

MOV AH,2H

INT 21H

LEA DX,MESSONS

MOV AH,9H

INT 21H

MOV DL,POSCNTONSEC

ADD DL,30H

MOV AH,2H

INT 21H

RET

OUR_PROG ENDP

CSEG ENDS

END OUR_PROG

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

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

Turbo Assembler Version 4.1 02/12/05 15:04:34 Page 1

prog.asm

EX_PROG

1 0000 STACKSEG SEGMENT PARA PUBLIC 'STACK'

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

3 0040 STACKSEG ENDS

4

5

6

7 0000 DSEG SEGMENT PARA PUBLIC 'DATA'

8 0000 01 20 30 40 00 matrix DB 1, 20H,30H, 40H, 0H

9 0005 12 FD 0C FB 13 DB 12H, -3,0CH, -5, 13H

10 000A 01 02 04 08 0F DB 1, 2H, 4H, 8H, 0FH

11 000F 11 41 CD 11 03 DB 11H, 41H, 0CDH, 11H, 3H

12 0014 00 0A DD 12 00 DB 0, 0AH, 0DDH, 12H, 0

13 0019 05 ROWLEN DB 5

14 001A 00 POSCNTONMAIN DB 0

15 001B 00 POSCNTONSEC DB 0

16 001C 41 4D 4F 55 4E 54 20+ MESSONM DB 'AMOUNT OF POSITIVE NUMBERS ON MAIN DIAGONAL:$'

17 4F 46 20 50 4F 53 49+

18 54 49 56 45 20 4E 55+

19 4D 42 45 52 53 20 4F+

20 4E 20 4D 41 49 4E 20+

21 44 49 41 47 4F 4E 41+

22 4C 3A 24

23 0049 0D 0A 41 4D 4F 55 4E+ MESSONS DB 0DH,0AH,'AMOUNT OF POSITIVE NUMBERS ON SECONDARY DIAGONAL:$'

24 54 20 4F 46 20 50 4F+

25 53 49 54 49 56 45 20+

26 4E 55 4D 42 45 52 53+

27 20 4F 4E 20 53 45 43+

28 4F 4E 44 41 52 59 20+

29 44 49 41 47 4F 4E 41+

30 4C 3A 24

31 007D DSEG ENDS

32

33

34Turbo Assembler Version 4.1 02/12/05 15:04:34 Page 2

prog.asm

EX_PROG

ОСНОВНАЯ ПРОГРАММА

35 0000 CSEG SEGMENT PARA PUBLIC 'CODE'

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

37 0000 OUR_PROG PROC FAR

38

39 0000 1E PUSH DS

40 0001 2B C0 SUB AX,AX

41 0003 50 PUSH AX

42 0004 B8 0000s MOV AX,DSEG

43 0007 8E D8 MOV DS,AX

44

45

46 0009 BE 0000 MOV SI,0

47 000C BB 0000r LEA BX,MATRIX

48 000F 8A 0E 0019r MOV CL,ROWLEN

49 0013 BE 0000 MOV SI,0

50 0016 B8 0000 MOV AX,0

51 0019 CYCLEMD:

52 0019 8A 80 0000r MOV AL, MATRIX[BX+SI]

53 001D 80 B8 0000r 00 CMP MATRIX[BX+SI],0

54

55 0022 7E 04 JLE NEGZ

56 0024 FE 06 001Ar INC POSCNTONMAIN

57 0028 NEGZ:

58 0028 02 1E 0019r ADD BL,ROWLEN

59 002C 46 INC SI

60 002D E2 EA LOOP CYCLEMD

61 002F BE 0000 MOV SI,0

62 0032 B8 0000 MOV AX,0

63 0035 A0 0019r MOV AL,ROWLEN

64 0038 8B F0 MOV SI,AX

65 003A 4E DEC SI

66 003B 8A 0E 0019r MOV CL,ROWLEN

67 003F B8 0000 MOV AX,0

68 0042 BB 0000r LEA BX,MATRIX

69 0045 CYCLESD:

70 0045 8A 80 0000r MOV AL,MATRIX[BX+SI]

71 0049 80 B8 0000r 00 CMP MATRIX[BX+SI],0

72 004E 7E 04 JLE NEGZS

73 0050 FE 06 001Br INC POSCNTONSEC

74 0054 NEGZS:

75 0054 02 1E 0019r ADD BL,ROWLEN

76 0058 4E DEC SI

77 0059 E2 EA LOOP CYCLESD

78 005B BA 001Cr LEA DX,MESSONM

79 005E B4 09 MOV AH,9H

80 0060 CD 21 INT 21H

81 0062 8A 16 001Ar MOV DL,POSCNTONMAIN

82 0066 80 C2 30 ADD DL,30H

83 0069 B4 02 MOV AH,2H

84 006B CD 21 INT 21H

85

86 006D BA 0049r LEA DX,MESSONS

87 0070 B4 09 MOV AH,9H

88 0072 CD 21 INT 21H

89 0074 8A 16 001Br MOV DL,POSCNTONSEC

90 0078 80 C2 30 ADD DL,30H

91 007B B4 02 MOV AH,2H

Turbo Assembler Version 4.1 02/12/05 15:04:34 Page 3

prog.asm

EX_PROG

ОСНОВНАЯ ПРОГРАММА

92 007D CD 21 INT 21H

93

94 007F CB RET

95 0080 OUR_PROG ENDP

96 0080 CSEG ENDS

97 END OUR_PROG

Turbo Assembler Version 4.1 02/12/05 15:04:34 Page 4

Symbol Table

EX_PROG

Symbol Name Type Value

??DATE Text "02/12/05"

??FILENAME Text "prog "

??TIME Text "15:04:34"

??VERSION Number 040A

@CPU Text 0101H

@CURSEG Text CSEG

@FILENAME Text PROG

@WORDSIZE Text 2

CYCLEMD Near CSEG:0019

CYCLESD Near CSEG:0045

MATRIX Byte DSEG:0000

MESSONM Byte DSEG:001C

MESSONS Byte DSEG:0049

NEGZ Near CSEG:0028

NEGZS Near CSEG:0054

OUR_PROG Far CSEG:0000

POSCNTONMAIN Byte DSEG:001A

POSCNTONSEC Byte DSEG:001B

ROWLEN Byte DSEG:0019

Groups & Segments Bit Size Align Combine Class

CSEG 16 0080 Para Public CODE

DSEG 16 007D Para Public DATA

STACKSEG 16 0040 Para Public STACK

Соседние файлы в папке Lab 3
  • #
    02.05.20141.33 Кб15EXERCISE2.ASM
  • #
    02.05.20141.51 Кб15PRIMENUMBERS.asm
  • #
    02.05.2014131.07 Кб16Scheme1.vsd
  • #
    02.05.201486.02 Кб15Scheme1_2.vsd
  • #
    02.05.2014119.81 Кб16Scheme2.vsd
  • #
    02.05.2014229.38 Кб20лаба№ 3.doc