Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania.doc
Скачиваний:
14
Добавлен:
03.03.2016
Размер:
6.75 Mб
Скачать

Пример отчета по лабораторной работе №3к лаб. Раб.№3

Министерство образования и науки

Донецкий национальный технический университет

Кафедра компьютерной инженерии

Отчет

по лабораторной работе №3

на тему: Обработка одномерных массивов и организация вывода на экран

Выполнил:

Проверил:

Донецк 2013

1. Задание

В целочисленном массиве, содержащем четное количество элементов,в каждой паре соседних элементов расположить элементы по возрастанию. Определить пару с максимальной суммой элементов.

2. Блок-схема

Главная программа:

Процедура work:

Процедура printnumber. Входной параметр – Х: целое число

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

;Условие.

;В целочисленном массиве, содержащем четное количество элементов,

;в каждой паре соседних элементов расположить элементы по возрастанию.

;Определить пару с максимальной суммой элементов.

sseg segment stack 'stack'

db 64 dup (?)

sseg ends

;

data segment

x dw 32767, -5, -32768, 4, 1, 56

ndw6

sdb' ','$'

msg3 db 'Максимальная сумма у пары N','$'

msg5 db 'Исходный массив :',13,10,'$'

msg6 db 13,10,'$'

msg7 db 'Преобразованный массив',13,10,'$'

msg8 db ' ','$'

max dw ?

maxn dw ?

data ends

;

code segment

start proc far

assume ss:sseg,ds:data,cs:code

push ds

xor ax,ax

push ax

mov ax,data

mov ds,ax

leadx,msg6

lea dx,msg5 ;Исходный массив

call writestring

mov cx,n

mov si,0

vyvod: mov ax,x[si]

call printnumber ;Вывод элемента массива

inc si

inc si

lea dx,msg8 ;Вывод пробелов между

callwritestring;элементами

loopvyvod

; Обработка массива

call work

; Вывод обработаного массива

leadx,msg6

call writestring

lea dx,msg7

call writestring

mov cx,n

mov si,0

vyvod2: mov ax,x[si]

call printnumber

inc si

inc si

lea dx,msg8

callwritestring

loop vyvod2

; Вывод номера пары с максимальной суммой

lea dx,msg6

call writestring

lea dx,msg6

call writestring

lea dx,msg3

call writestring

mov ax,maxn

mov bl,4

div bl

mov ah,0

inc ax

call printnumber

lea dx,msg6

call writestring

ret

start endp

;

printnumber proc near

push ax

push bx

push cx

pushdx

push si

;Обнуление строки S для вывода числа

mov cx,7

mov si,0

met: mov s[si],' '

inc si

loop met

mov si,6 ;Смещение позиции 7-го символа

mov bx,10 ; Основание десятичной сист. счисл.

;Определяем знак числа

mov cl,' ';Используем пробел в качестве знака '+'

cmp ax,0

jge met1

mov cl,'-'

neg ax

met1: mov dx,0

div bx

add dl,30h ;К остатку в DL прибавим 30h и получим

;символ цифры

mov s[si],dl

dec si

cmp ax,0; В АХ частное. Когда АХ=0, то завершаем перевод

jne met1

mov s[si],cl ;Заносим знак в строку и

mov ah,09h ; выводим ее на экран.

lea dx,s

int 21h

pop si

pop dx

pop cx

pop bx

popax

ret

printnumber endp

;Процедура печати строки на экране.

;адрес строки передается в рег. DX

writestring proc near

push ax

mov ah,9h

int 21h

pop ax

ret

writestring endp

;основная процедура

work proc

mov si,0

mov cx,n ; сх:=n/2

shrcx,1 ;

m1: mov ax,x[si] ; В АХ первый элемент пары, а в

inc si ;

inc si ;

mov bx,x[si] ; ВХ второй элемент пары.

cmp ax,bx ;Если первый больше второго,

jle m2 ;обмениваем элементы пары.

mov x[si],ax ;

mov x[si-2],bx ;

m2: add ax,bx ; В АХ сумма элементов пары

cmp si,2 ; Если SI=2, то это первая

jg m33 ; пара элементов. ЕЕ сумму

mov max,ax ; принимаем за max и в maxn

mov maxn,si; заносим смещение элемента.

; Определение максимума

m33: cmp ax,max

jle m3

mov max,ax

mov maxn,si

m3: inc si

inc si

loop m1

ret

work endp

code ends

end start

3. Результаты работы программы

4. Выводы

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]