АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ASSUME DS:Data,CS:Code,SS:Stack1,ES:Data. ;Сортировка первого столбца

Читайте также:
  1. ASSUME DS:Data,CS:Code,SS:Stack1,ES:Data

Start: mov AX,Data

mov DS,AX

;Сортировка первого столбца

mov CX,5;счетчик внешнего цикла

lea BX,array;настройка регистра BX на смещение к массиву

mov DI,BX;сохранение адреса элемента массива,

;с которого начинается данный шаг сортировки

;открытие внешнего цикла, организующего обработку всех

;элементов столбца

L1: mov AL,[BX];запись на AL значения первого элемента

;обрабатываемой части массива

mov SI,BX;запись на SI смещения к элементу массива

push CX;сохранение счетчика внешнего цикла в стеке

mov CX,count;запись на CX значения счетчика

;внутреннего цикла;

;внутренний цикл, выполняющий поиск большего элемента

;во фрагменте массива

L2: add BX,5;формирование на BX смещения к следующему

;элементу обрабатываемого столбца (5 - длина строки)

cmp AL,[BX];сравнение значения элемента записанного

;на AL с текущим элементом массива

jns M1;переход на метку М1, если

;сравниваемый элемент меньше элемента на AL

jz M1;переход на метку М1, если

;сравниваемый элемент равен элементу на AL

mov AL,[BX];если предыдущие условия не выполняются,

;то делаем обмен значений

;(первого во фрагменте массива элемента с

;найденным большим элементом)

mov SI,BX

M1: loop L2;возвращение к первой команде внутреннего

; цикла

;обмен значений между найденным большим элементом

;и первым в обрабатываемом фрагменте массива элементом

mov DL,[DI];

mov [DI],AL

mov [SI],DL

;подготовка адресов для продолжения обработки

add DI,5;на DI формируем смещение к след. элементу

;столбца (DI + длина строки)

mov BX,DI;запись смещения к след. элементу столбца

;на BX

dec count;уменьшение на 1 значения счетчика

;внутреннего цикла

pop CX;восстановление из стека значения

;счетчика внешнего цикла

loop L1;переход к первой команде внешнего цикла

;Поиск минимального элемента главной диагонали массива

lea BX,array;настройка BX на смещение к началу

;массива

mov AL,[BX];запись на AL значения элемента массива

mov CX,4;на СX - счетчик цикла

L3: add BX,6;на BX - смещение к след. элементу главной диагонали

cmp AL,[BX];сравнение текущего элемента массива с сохраненным на AL

js M2;если текущий элемент больше элемента на AL

;переход к метке М2

jz M2;если текущий элемент равен элементу на AL

;переход к метке М2

mov AL,[BX];иначе, запись на AL значения текущего

;элемента

M2: loop L3;переход к первой команде цикла

mov min,AL;сохранение найденного минимального;значения в памяти

;Вычисление суммы элементов 3-ей строки массива

xor AL,AL;обнуление AL

mov CX,5;запись на CX счетчика цикла

lea BX,array+10;запись на BX смещения к началу массива

mov SI,0;на SI смещение к первому элементу строки L4: add AL,[BX][SI];суммирование элементов строки

inc SI;увеличение индекса элемента строки

loop L4;переход к первой команде цикла

mov sum,AL;сохранение значения суммы в памяти

mov ah,4ch

int 21h


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)