Расчетно-графическая работа / РГР
.docФедеральное агентство по образованию
Уфимский государственный авиационный технический университет
Кафедра технической кибернетики
Расчетно-графическая работа по
Ассемблеру
Выполнил: студент гр. РС-218
Иванов О.В.
Проверила: Мукасеева В.Н.
Уфа 2008
Задание: определить, находиться ли минимальный элемент двухмерного массива на главной диагонали или нет. Элементы массива однобайтовые.
Математическое описание задачи обработки: Дан двухмерный массив 5*5, состоящий из , ,, .Найти или такой, что или который будет находиться на главной диагонали или нет
Метод решения задачи: Метод частных целей
Алгоритм:
-
найти очередной элемент строки матрицы имеющий наименьшее значение ;
-
сравнить его с предыдущими строками;
-
определение нахождения этого элемента на главной диагонали.
Листинг программы:
IBM Macro Assembler/2 Version 1.00 1/8/8MIN_EL_B Page 1-1
TITLE MIN_EL_B
0000 STACK SEGMENT PARA STACK 'STACK'
0000 0040[ DB 64 DUP('STACK ')
53 54 41 43 4B
20
]
0180 STACK ENDS
0000 DSEG SEGMENT PARA PUBLIC 'DATA'
0000 01 03 04 02 06 Mas db 1,3,4,2,6
0005 01 01 09 08 06 db 1,1,9,8,6
000A 07 01 02 08 03 db 7,1,2,8,3
000F 01 02 09 08 01 db 1,2,9,8,1
0014 04 07 08 02 08 db 4,7,8,2,8
= 0005 Len_mas equ 5
0019 0A 0D 4D 69 6E 69 6D Mes1 db 0ah,0dh,'Minimalnyi element massiva = $
'
61 6C 6E 79 69 20 65
6C 65 6D 65 6E 74 20
6D 61 73 73 69 76 61
20 3D 20 24
0039 0A 0D 45 6C 65 6D 65 Mes2 db 0ah,0dh,'Element massiva nahoditsj na g
lav diag! $'
6E 74 20 6D 61 73 73
69 76 61 20 6E 61 68
6F 64 69 74 73 6A 20
6E 61 20 67 6C 61 76
20 64 69 61 67 21 20
24
0064 ?? Min db ?
0065 ???? I dw ?
0067 ???? J dw ?
0069 DSEG ENDS
0000 CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG, DS:DSEG, SS:STACK
0000 START PROC FAR
0000 1E PUSH DS
0001 2B C0 SUB AX,AX
0003 50 PUSH AX
0004 B8 ---- R MOV AX,DSEG
0007 8E D8 MOV DS,AX
0009 33 C0 XOR AX,AX
000B 33 FF XOR DI,DI
000D B9 0005 MOV CX,5
0010 8D 1E 0000 R LEA BX,Mas
0014 8A 17 MOV DL,byte ptr [BX];
0016 51 CYC1: PUSH CX
0017 33 F6 XOR SI,SI
0019 B9 0005 MOV CX,Len_mas
IBM Macro Assembler/2 Version 1.00 1/8/8MIN_EL_B Page 1-2
001C 47 INC DI;
001D 38 10 CYC2: CMP BYTE ptr [BX+SI],DL
001F 77 0E JA NOT_MIN
0021 8A 10 MOV DL,BYTE ptr [BX+SI]
0023 88 16 0064 R MOV Min,DL
0027 89 3E 0065 R MOV I,DI;
002B 89 36 0067 R MOV J,SI
002F NOT_MIN:
002F 46 INC SI
0030 E2 EB LOOP CYC2
0032 59 POP CX
0033 83 C3 05 ADD BX, Len_mas
0036 E2 DE LOOP CYC1
0038 33 D2 XOR DX,DX
003A 8B 16 0065 R MOV DX,I
003E 3B 16 0067 R CMP DX,J
0042 75 07 JNE K1
0044 B4 09 MOV AH,09H
0046 BA 0039 R MOV DX,OFFSET Mes2
0049 CD 21 INT 21h
004B K1:
004B B4 09 MOV AH,09H
004D BA 0019 R MOV DX,OFFSET Mes1
0050 CD 21 INT 21h
0052 B4 02 MOV AH,02H
0054 8A 16 0064 R MOV DL,Min
0058 80 C2 30 ADD DL,30h
005B CD 21 INT 21h
005D CB EXIT: RET
START ENDP
005E CSEG ENDS
END START
IBM Macro Assembler/2 Version 1.00 1/8/8MIN_EL_B Symbols-1
Segments and Groups:
N a m e Size Align Combine Class
CSEG . . . . . . . . . . . . . . 005E PARA PUBLIC 'CODE'
DSEG . . . . . . . . . . . . . . 0069 PARA PUBLIC 'DATA'
STACK . . . . . . . . . . . . . 0180 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr
CYC1 . . . . . . . . . . . . . . L NEAR 0016 CSEG
CYC2 . . . . . . . . . . . . . . L NEAR 001D CSEG
EXIT . . . . . . . . . . . . . . L NEAR 005D CSEG
I . . . . . . . . . . . . . . . L WORD 0065 DSEG
J . . . . . . . . . . . . . . . L WORD 0067 DSEG
K1 . . . . . . . . . . . . . . . L NEAR 004B CSEG
LEN_MAS . . . . . . . . . . . . Number 0005
MAS . . . . . . . . . . . . . . L BYTE 0000 DSEG
MES1 . . . . . . . . . . . . . . L BYTE 0019 DSEG
MES2 . . . . . . . . . . . . . . L BYTE 0039 DSEG
MIN . . . . . . . . . . . . . . L BYTE 0064 DSEG
NOT_MIN . . . . . . . . . . . . L NEAR 002F CSEG
START . . . . . . . . . . . . . F PROC 0000 CSEG Length = 005E
77 Source Lines
77 Total Lines
18 Symbols
46918 Bytes symbol space free
0 Warning Errors
0 Severe Errors
Тестирование программы:
Тест |
Ожидаемый результат |
Фактический результат |
Mas db 1,3,4,2,6 db 1,5,9,8,6 db 7,1,2,8,3 db 1,2,9,8,1 db 4,7,8,2,8
|
Element massiva nahoditsj na glav diag
Minimalnyi element massiva =1 |
Element massiva nahoditsj na glav diag
Minimalnyi element massiva =1 |
Тест №1:
Тест №2:
Тест |
Ожидаемый результат |
Фактический результат |
Mas db 3,3,4,2,6 db 1,2,9,8,6 db 7,1,2,0,3 db 0,2,9,8,1 db 4,7,0,2,8 |
Minimalnyi element massiva =0 |
Minimalnyi element massiva =0 |