|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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 Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |