Федеральное агенство по науке и образованию
Красноярский Государственный Технический Университет
Лабораторная работа по ЦУиМП №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.
Вывод: в результате выполнения лабораторной работы я ознакомился со структурой программы языка ассемблера, а также с процессом её компиляции и отладки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.