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

2.2 Задание 2

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

STACKSEG SEGMENT PARA PUBLIC 'STACK'

DB 64 DUP(0) ; Область стека

STACKSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

MATRIX DB 0, 20, 0, -30, 0

DB 40, -50, 60, 10, 0

DB -1, 20, 0, 5, 45

DB 41, 0, -4, 11, 11

DB -4, 0, -5, 10, -121

POSCNT DB 0

ROWLEN DW 5

MESSPOSONCOL DB 'AMOUNT OF POSITIVE NUMBERS IN $'

MESSCOL DB ' COL IS :$'

CARRLBK DB 0DH,0AH,'$'

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,ROWLEN

OUTERLOOP:

PUSH CX

LEA BX,MATRIX

MOV CX,ROWLEN

INSIDELOOP:

CMP MATRIX[BX+SI],0

JLE NEGZ

INC POSCNT

NEGZ:

ADD BX,ROWLEN

LOOP INSIDELOOP

LEA DX,MESSPOSONCOL

MOV AH,9H

INT 21H

POP CX

INC SI

MOV DX,SI

ADD DL,30H

MOV AH,2H

INT 21H

LEA DX,MESSCOL

MOV AH,9H

INT 21H

MOV DL,POSCNT

ADD DL,30H

MOV AH,2H

INT 21H

LEA DX,CARRLBK

MOV AH,9H

INT 21H

MOV AH,0

MOV POSCNT,AH

LOOP OUTERLOOP

RET

OUR_PROG ENDP

CSEG ENDS

END OUR_PROG

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

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

Turbo Assembler Version 4.1 02/12/05 22:22:34 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

6

7 0000 DSEG SEGMENT PARA PUBLIC 'DATA'

8 0000 00 14 00 E2 00 MATRIX DB 0, 20, 0, -30, 0

9 0005 28 CE 3C 0A 00 DB 40, -50, 60, 10, 0

10 000A FF 14 00 05 2D DB -1, 20, 0, 5, 45

11 000F 29 00 FC 0B 0B DB 41, 0, -4, 11, 11

12 0014 FC 00 FB 0A 87 DB -4, 0, -5, 10, -121

13 0019 00 POSCNT DB 0

14 001A 0005 ROWLEN DW 5

15 001C 41 4D 4F 55 4E 54 20+ MESSPOSONCOL DB 'AMOUNT OF POSITIVE NUMBERS IN $'

16 4F 46 20 50 4F 53 49+

17 54 49 56 45 20 4E 55+

18 4D 42 45 52 53 20 49+

19 4E 20 24

20 003B 20 43 4F 4C 20 49 53+ MESSCOL DB ' COL IS :$'

21 20 3A 24

22 0045 0D 0A 24 CARRLBK DB 0DH,0AH,'$'

23 0048 DSEG ENDS

24 0000 CSEG SEGMENT PARA PUBLIC 'CODE'

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

26 0000 OUR_PROG PROC FAR

27

28 0000 1E PUSH DS

29 0001 2B C0 SUB AX,AX

30 0003 50 PUSH AX

31 0004 B8 0000s MOV AX,DSEG

32 0007 8E D8 MOV DS,AX

33 0009 BE 0000 MOV SI,0

34 000C 8B 0E 001Ar MOV CX,ROWLEN

35 0010 OUTERLOOP:

36 0010 51 PUSH CX

37 0011 BB 0000r LEA BX,MATRIX

38 0014 8B 0E 001Ar MOV CX,ROWLEN

39 0018 INSIDELOOP:

40 0018 80 B8 0000r 00 CMP MATRIX[BX+SI],0

41 001D 7E 04 JLE NEGZ

42 001F FE 06 0019r INC POSCNT

43 0023 NEGZ:

44 0023 03 1E 001Ar ADD BX,ROWLEN

45 0027 E2 EF LOOP INSIDELOOP

46 0029 BA 001Cr LEA DX,MESSPOSONCOL

47 002C B4 09 MOV AH,9H

48 002E CD 21 INT 21H

49 0030 59 POP CX

50 0031 46 INC SI

51 0032 8B D6 MOV DX,SI

52 0034 80 C2 30 ADD DL,30H

53 0037 B4 02 MOV AH,2H

54 0039 CD 21 INT 21H

55 003B BA 003Br LEA DX,MESSCOL

56 003E B4 09 MOV AH,9H

57 0040 CD 21 INT 21H

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

prog.asm

58 0042 8A 16 0019r MOV DL,POSCNT

59 0046 80 C2 30 ADD DL,30H

60 0049 B4 02 MOV AH,2H

61 004B CD 21 INT 21H

62 004D BA 0045r LEA DX,CARRLBK

63 0050 B4 09 MOV AH,9H

64 0052 CD 21 INT 21H

65 0054 B4 00 MOV AH,0

66 0056 88 26 0019r MOV POSCNT,AH

67 005A E2 B4 LOOP OUTERLOOP

68 005C CB RET

69 005D OUR_PROG ENDP

70 005D CSEG ENDS

71 END OUR_PROG

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

Symbol Table

Symbol Name Type Value

??DATE Text "02/12/05"

??FILENAME Text "prog "

??TIME Text "22:22:34"

??VERSION Number 040A

@CPU Text 0101H

@CURSEG Text CSEG

@FILENAME Text PROG

@WORDSIZE Text 2

CARRLBK Byte DSEG:0045

INSIDELOOP Near CSEG:0018

MATRIX Byte DSEG:0000

MESSCOL Byte DSEG:003B

MESSPOSONCOL Byte DSEG:001C

NEGZ Near CSEG:0023

OUR_PROG Far CSEG:0000

OUTERLOOP Near CSEG:0010

POSCNT Byte DSEG:0019

ROWLEN Word DSEG:001A

Groups & Segments Bit Size Align Combine Class

CSEG 16 005D Para Public CODE

DSEG 16 0048 Para Public DATA

STACKSEG 16 0040 Para Public STACK

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

Соседние файлы в папке Lab 3
  • #
    25.05.20141.33 Кб10EXERCISE2.ASM
  • #
    25.05.20141.51 Кб10PRIMENUMBERS.asm
  • #
    25.05.2014131.07 Кб11Scheme1.vsd
  • #
    25.05.201486.02 Кб10Scheme1_2.vsd
  • #
    25.05.2014119.81 Кб12Scheme2.vsd
  • #
    25.05.2014229.38 Кб12лаба№ 3.doc