Lab_13 (1)
.docЛаб. №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