Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
CONSTsection
kuz = 10; к-во узлов списка (kuz=1..127) maskG = 1; маски для анализа флагового регистра на «больше», maskL = 2; «меньше» и maskE = 4; «равно» nil = 0FFh; признак конца списка ;--------------------------------------------------------------- STACKsection 100; объявление стека ;---------------------------------------------------------------
DATAsection; раздел описания данных ГМ DW_ R0; R0-R3 -регистры общего назначения ГМ DW_ R1; DW_ R2; DW_ R3; DW_ Rtmp; рабочий регистр DW_ h; указатель головы списка DW_ t; указатель на текущий узел списка DW_ p; указатель на предыдущий узел DW_ s; указатель на новый узел DW_ ih; индекс для резервирования нового узла DW_ cNIL; переменная для хран-я знач-я NIL DW_ i; рабочий индекс DW_ Buf,kuz; буфер - источник информации для списка DW_ Spis,2*kuz; память под список DB_ eoLn,EndLine; признак конца строки для вывода DB_ OutPut,endSTR,2; буфер вывода DB_ num,'0123456789ABCDEF';табл. перевода в 16с/c DB_ zag,<' Отсортированный список',EndLine> DF_ Fl; флаговый регистр ГМ ENDdata; конец секции данных ГМ ;--------------------------------------------------------------- CODEsection; секция кода ГМ START; нач. инициализация программы ClrScr; очистка экрана Move Buf,Primer,kuz; загрузка буфера исх. инф-ей из сегмента кода ClReg R1; R1 сч. цикла:= 0 MovI R2,%kuz; к-во узлов -> R2 MovI h,%NIL; h:= NIL MovI Cnil,%NIL; Cnil:= NIL ClReg ih; нач. знач-е индекса равно 0 Repeat:; Цикл создания списка MovSR R0,Buf,R1; очередной inf взяли из Buf -> R0 NEW s; создали новый узел MovRS Spis,R0,s; s^.i:=R0; inf-> в новый узел Mov_ t,h; t:=h; MovI p,%NIL; p:=nil While1:; Цикл поиска и вставки узла в список CMP_ t,Cnil; While t<> NIL Do gmEQ EndWhile; MovSR R3,Spis,t; R3:= t^.i CMP_ R3,R0; if t^.i > R0 gmGT InsUz; Then InsUz NextUz:; Else NextUz продолжаем искать место вставки Mov_ p,t; p:=t INC_ t; t:=t+1 для получения доступа в поле link MovSR t,Spis,t; t:=t^.l переход к след. узлу JUMP While1; повторение цикла поиска InsUz:; Реализация различных вариантов вставки CMP_ p,Cnil; If p=Nil Then InsFirst вставка в начало gmEQ InsFirst; Else InsMed вставка в середину InsMed:; вставка в середину списка INC_ p; p:=p+1 для получения доступа в поле link MovSR R0,Spis,p; R0:= p^.l MovRS Spis,s,p; p^.l:= s INC_ s; s:=s+1 для получения доступа в поле link MovRS Spis,R0,s; s^.l:= R0 JUMP EndRepeat; завершение этого варианта вставки InsFirst:; вставка в начало списка Mov_ h,s; h:=s INC_ s; s:=s+1 для получения доступа в поле link MovRS Spis,t,s; s^.l:= t JUMP EndRepeat; завершение этого варианта вставки EndWhile:; реализация других вариантов CMP_ p,Cnil; If p=NIL Then Empty - в пустой список gmEQ Empty; Else InsEnd - в конец списка InsEnd:; вставка в конец списка INC_ p; p:=p+1 для получения доступа в поле link MovRS Spis,s,p; p^.l:= s INC_ s; s:=s+1 для получения доступа в поле link MovRS Spis,Cnil,s; s^.l:= NIL JUMP EndRepeat; завершение этого варианта вставки Empty:; вставка в пустой список Mov_ h,s; h:=s INC_ s; s:=s+1 для получения доступа в поле link MovRS Spis,Cnil,s; s^.l:=NIL EndRepeat: INC_ R1; увеличение счетчика цикла CMP_ R2,R1; сравнение с kuz gmGT Repeat; If счетчик < kuz Then Repeat на начало цикла Write zag; вывод заголовка списка Mov_ t,h; t:=h Wcycl:; Прохождение и печать списка CMP_ t,Cnil; While t <> NIL Do gmEQ endPRN WriteUz t; Печать узла INC_ t; t:=t+1 для получения доступа в поле link MovSR t,Spis,t; t:=t^.l JUMP Wcycl; Goto Wcycl endPRN: ReadKey; ждать нажатия клавиши FINISH; завершение программы ENDcode; конец секции кода ;---------------------------------------------------------------
Date: 2015-10-21; view: 301; Нарушение авторских прав |