Формирование массива из 10 двухбайтовых чисел, переписать во второй массив в порядке убывания

Страницы работы

4 страницы (Word-файл)

Содержание работы

Федеральное агенство по науке и образованию

Красноярский Государственный Технический Университет

Лабораторная работа по ЦУиМП №1

ИЗУЧЕНИЕ ЯЗЫКА АССЕМБЛЕРА ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ

Вариант 6

Выполнил: студент гр.Р52-4

Дианов А.В.

Проверил:

Сушкин И.Н.

Красноярск 2005

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

Задание: сформировать массив из 10 двухбайтовых чисел. Переписать во второй массив в порядке убывания.

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

2.  Алгоритм работы программы.

На начальном этапе работы происходит инициализация сегментных регистров и создание копии (mas2) исходного массива (mas1). Далее массив mas2 упорядочивается по убыванию следующим образом. Обнуляется флаг перестановки. Берется элемент массива с адресом si и последующий за ним, и сравниваются между собой. Если последующий элемент больше предыдущего, происходит их перестановка, а также установка флага перестановки в 1. Далее происходит переход к следующему элементу массива путем увеличения значения si на 2 (на размер элемента в байтах). Для него выполняются те же действия, и так – до конца массива. Если при проходе массива флаг перестановки установился в 1 – значит массив еще не упорядочен и требуется еще один проход всего массива. Циклические проверки и перестановки продолжаются до тех пор, пока флаг перестановки к концу очередного прохода массива не будет нулевым. Это будет означать, что массив упорядочен по убыванию.

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

_text segment para public 'code'

assume cs:_text,ds:_data

.386

.387

start:

     mov ax,_data

     mov ds,ax

     mov si,offset mas1

     mov bx,offset mas2

     mov cx,10

a:

     mov ax,ds:[si]

     mov ds:[bx],ax

     add si,2

     add bx,2

     loop a

b: 

     mov flg,0

     mov si,offset mas2

     mov cx,9

c:

     mov ax,ds:[si]

     mov dx,ds:[si+2]

     cmp ax,dx

     jg d

     mov ds:[si],dx

     mov ds:[si+2],ax

     mov flg,1

d:

     add si,2

     loop c

     cmp flg,1

     je b

     mov ax,4c00h

     int 21h

_text ends

_data segment use16 para public 'data'

mas1 dw 7,4,2,-8,6,3,-5,9,10,1

mas2 dw 10 dup (0)

flg db 0

_data ends

end start

4.  Отладка.

Для компиляции программы использовались программы TASM.EXE и TLINK.EXE. Отладка осуществлялась программой TURBO DEBUGER.

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

Похожие материалы

Информация о работе