Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab_13 (1)

.doc
Скачиваний:
21
Добавлен:
09.06.2015
Размер:
46.59 Кб
Скачать

Лаб. №3.2 Выполнили: Мосин Н.Г.

Родионов Д.В.

Федеральное агентство железнодорожного транспорта

_____________________

Московский государственный университет путей сообщения

(МИИТ)

____________________

Институт управления и информационных технологий

___________________

Кафедра "Вычислительные системы и сети"

Отчет по лабораторной работе №5

«Программирование вычислительных алгоритмов»

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

Организация ЭВМ и систем

Выполнили: Мосин Н.Г.

Родионов Д.В.

Группа: УВМ-411

Принял: Шамров М.И.

Москва - 2011 г.

Цель работы:

Изучение программирования в машинных кодах для микропроцессора К1810ВМ86.

Изучение сегментной организации памяти в микропроцессоре К1810ВМ86.

Освоение способов отладки программ на УМПК-86.

Задание:

Дан массив однобайтных положительных чисел (без знака). Упорядочить массив в порядке убывания.

Начальный адрес массива 00500H, количество байт в массиве указано по адресу 00600H,

упорядоченный массив записать по адресу 00700H.

Код программы:

0000 Data segment at 0000h use16

org 500h

0500 01 06 09 01 0A mass db 1,6,9,1,10

org 600h

0600 05 count db 5

0601 00 flag db 0

0602 Data ends

0000 Extra segment at 0000h use16

org 700h

0700 05*(00) resmass db 5 dup(0)

0705 Extra ends

0000 Cseg segment at 0FE00h use16

assume cs:cseg, ds:data, es:extra

0000 f1:

org 2400h

;========== Сортировка методом пузырька =============

;загрузка сегментных регистров

2400 BA 00 00 mov dx,data

2403 8E DA mov ds,dx

2405 BA 00 00 mov dx,extra

2408 8E C2 mov es,dx

240A 33 F6 xor si,si ;обнуление индексных регистров

240C 8A 0E 00 06 mov cl,ds:count ;занесем в регистр cl число элементов массива (n)

2410 8A D9 mov bl,cl ;занесём в регистр bl число перестановок (n-1)

2412 FE CB dec bl

2414 33 FF cikl1: xor di,di

2416 C6 06 01 06 00 mov ds:flag,0 ;обнулим флаг, признак перестановки элементов

241B 8A 85 00 05 c2: mov al,ds:mass[di] ;занесём в регистр al элемент массива

241F 3A 85 01 05 cmp al,ds:mass[di+1] ;сравним его с соседним

2423 7D 0C jge short c3

2425 86 85 01 05 xchg al,ds:mass[di+1] ;если текущий элемент больше соседнего то меняем их местами

2429 88 85 00 05 mov ds:mass[di],al

242D FE 06 01 06 inc ds:flag ;флаг перестановки = 1

2431 47 c3: inc di ;переходим к следующему элементу

2432 3B FB cmp di,bx ;проверка на границу массива

2434 75 E5 jnz short c2 ;если дошли до последнего элемента, то переходим к следующему элементу

2436 80 3E 01 06 00 cmp ds:flag,0 ;если перестановок не было то переходим к следующему элементу

243B 74 02 jz short c4

243D E2 D5 loop cikl1

243F BE 00 05 c4: lea si,ds:mass ;перенос массива из области памяти mass в resmass

2442 BF 00 07 lea di,es:resmass

2445 8A 0E 00 06 mov cl,ds:count

2449 F3 A4 rep movsb

244B B4 4C mov ah,4ch

244D CD 21 int 21h

244F Cseg ends

2

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