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

Государственное образовательное учреждение высшего профессионального образования

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

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

Расчётно-графическая работа

по дисциплине

«ЭВМ и вычислительные системы»

Вариант 23-б

Выполнил:

студент группы РС-218

Шикунов В.В.

Проверил: к.т.н., доц. кафедры АПрИС

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

Уфа 2008

Цель работы:

Основной целью расчётно-графической работы является получение знаний и навыков, необходимых для формирования грамотного подхода к проектированию и тестированию разрабатываемых программ. Для достижения этой цели необходимо решить следующие задачи:

  1. Применить знания и умения, приобретённые в предыдущих дисциплинах для формализованного описания задачи обработки данных;

  2. Научиться разрабатывать внешние спецификации проектируемой программы в виде схемы программы;

  3. Научиться проектировать тесты, позволяющие установить соответствие разработанного программного обеспечения его внешним спецификациям.

Задание:

Найти сумму элементов строк двухмерного массива и определить строку (указать номер строки) с минимальной суммой элементов, причём, элементы массива – двухбайтовые.

Математическое описание задачи обработки:

Sum3 = Sum3+AL

Переход к следующему элементу массива

Значение в СХ

число элементов строки

Листинг программы:

STACK SEGMENT PARA STACK 'STACK'

DB 64 DUP ('STACK')

STACK ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

MAS dw 1,2,8,1,9,0,5

dw 1,8,9,6,5,7,2

dw 6,-7,15,0,8,-10,3

vsego_elementov=$-mas

dlina_stroki equ 7

Mess1 db 0ah,0dh,'min Summa elementov strok=$'

mess2 db 0ah,0dh,'Nomer stroki s MIN summoi=$'

SUM1 Dw 0

SUM2 Dw 0

SUM3 Dw 0

SUM Dw 0

min dw 0

nomer db 0

R DB ?

C DB 10

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME cs:CSEG, DS:DSEG, SS:STACK

START PROC FAR

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

lea bx, mas ; смещение

push cx

xor si,si

mov cx,dlina_stroki

m1: mov dx,[bx][si]

add sum1,dx

inc si

inc si

loop m1 ;цикл до тех пор пока сх не станет =0

push cx

mov cx,dlina_stroki

mov dx,0

lea bx, mas ; смещение

m2: mov dx,[bx][si]

add sum2,dx

;mov dl,sum2

inc si

inc si

loop m2

push cx

mov cx,dlina_stroki

m3: mov dx,[bx][si]

add sum3,dx

inc si

inc si

loop m3

mov bl,1

mov dx, sum1

cmp sum2,dx

jb m5

ja m7

m5: mov dx,sum2

mov bl,2

m7: cmp sum3,dx

jb m6 ; первая меньше второго

ja m8 ; первая больше второго

m6: mov dx,sum3

mov bl,3

m8: mov min,dx

mov nomer,bl

mov dx, 0

LEA DX,MESS1

MOV AH,09H

INT 21H

lea bx, min ; смещение

mov si, 0

MOV AL, [bx][si]

CBW

DIV BYTE PTR C

MOV R,AH

MOV DL,AL

ADD DL,30H

MOV AH,02H

INT 21H

MOV DL,R

ADD DL,30H

INT 21H

LEA DX,MESS2

MOV AH,09H

INT 21H

MOV AL, nomer

CBW

DIV BYTE PTR C

MOV R,AH

MOV DL,AL

ADD DL,30H

MOV AH,02H

INT 21H

MOV DL,R

ADD DL,30H

INT 21H

MOV AH,1H

INT 21H

EXIT: MOV AX,4C00H

INT 21H

CSEG ENDS

END START

Тестирование:

Тест программы № 1:

Исходные данные

Ожидаемый результат

Полученный результат

1,2,8,1,9,0,5

Суммы : 26, 38, 35.

Суммы : 26, 38, 35.

1,8,9,6,5,7,2

Минимальная сумма = 26

Минимальная сумма = 26

9,5,7,1,2,3,8

Номер строки = 1

Номер строки = 1

Тест программы № 2:

Исходные данные

Ожидаемый результат

Полученный результат

1,2,8,1,9,0,5

Суммы : 26, 21, 35.

Суммы : 26, 21, 35.

1,0,0,6,5,7,2

Минимальная сумма = 21

Минимальная сумма = 21

9,5,7,1,2,3,8

Номер строки = 2

Номер строки = 2

Тест программы № 3

Исходные данные

Ожидаемый результат

Полученный результат

1,2,8,1,9,0,5

Суммы : 24, 27, 15.

Суммы : 26, 21, 15.

1,0,0,6,5,7,2

Min sum3=15 .

Минимальная сумма = 15

6,-7,15,0,8,-10,3

Nomer stroki = 3.

Номер строки = 3

Вывод:

В результате выполнения данной расчётно-графической работы, были получены практические знания проектирования и тестирования программ. Разработана схема работы программы, проделаны тесты, подтвердившие правильность работы программы.

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

Список литературы:

  1. Юров В.И. Assembler: учебник.

  2. Мукасеева В.Н. Лекции по ЭВМ и ВС

  3. Мукасеева В.Н. Даринцев О.В. Ассемблер. Методические указания к лабораторным работам 1-2 и 3-5.

9