1204

Изучение особенностей машинного программирования циклических алгоритмов с заданным числом повторений

Лабораторная работа

Информатика, кибернетика и программирование

Освоение особенностей организации внутрисегментных и межсегментных переходов, правил работы с сегментными регистрами. Изучение особенностей машинного программирования циклических алгоритмов с заданным числом повторений циклов. Анализ форматов и схем выполнения машинных команд ближнего и дальнего переходов программы.

Русский

2013-01-06

36.5 KB

2 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Южно-Уральский государственный университет

 

Факультет прикладной математики и физики

Кафедра Прикладной математики

Отчет

По лабораторной работе № 2

Изучение особенностей машинного программирования циклических алгоритмов с заданным числом повторений (циклов)

Выполнили: студенты группы ПМФ-223

Скородумов С.

Панюкова Т.

Проверил: Никитин Г.А.

Оценка: ____________

Челябинск, 2000


1. Формулировка задачи

Изучение особенностей машинного программирования циклических алгоритмов с заданным числом повторений циклов.

Освоение особенностей организации внутрисегментных и межсегментных переходов, правил работы с сегментными регистрами.

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

Исходными данными являются многобайтные двоичные данные, получаемые путем кодирования фамилий членов бригады в коде ASCII. Данные хранятся с указателем длины или в виде строковых данных.

  1.  Исходные данные и их формат

Формат данных: в первый байт данного заносим его длину, а в последующих байтах идет непосредственно данное для обработки.

0A 61 76  6F  6B 75  6F  69   6E 61 50  avokuoinaP

0A 76  6F 6D 75  64  6F  72   6F 6B  53 vomudorokS

_______________________________

0A D7 E5 DC E0 D9 DE DB DD CC A3

  1.  Распределение памяти

Код программы и данные располагаются в разных сегментах памяти.

Сегмент CS: 100-26A: код программы

Сегмент DS: 200-20B: первое слагаемое

                     300-30В: второе слагаемое

                     400-40С: результат

 4FC-519: завершение программы

                      600: адрес перехода в соседний сегмент

                      602: адрес соседнего сегмента

                      604: адрес возврата из соседнего сегмента

                      606: адрес начального сегмента

Регистры: SI – в данный регистр помещаем сначала длину короткого слагаемого, а затем (в цикле распространения переноса) увеличиваем его значение на 1 при каждом последующем сложении с нулем.

                 DI – используется для хранения начального адреса длинного слагаемого.

                 DX – используется для хранения значений длины одного из слагаемых , при нахождении наименьшего значения этого параметра.

                 BX – используется при сложении данных и распространении переноса


Рассчитанные до выполнения программы контрольные значения и результат трассирования введенной в ЭВМ программы совпали. Ошибок обнаружено не было. Для наглядности приведем также примеры с данными, имеющими различную длину:

А. Первое слагаемое короче второго:

05 61 76  6F  6B 75                                 avoku

0A 76  6F 6D 75  64  6F  72   6F 6B  53 vomudorokS

_______________________________

0A D7 E5 DC E0 D9  6F  72   6F 6B  53

Б. Второе слагаемое короче первого:

0A 61 76  6F  6B 75  6F  69   6E 61 50  avokuoinaP

07 76  6F 6D 75  64  6F  72                   vomudor

_______________________________

0A D7 E5 DC E0 D9 DE DB  6E 61 50

3Анализ форматов и схем выполнения машинных команд ближнего и дальнего переходов программы.

Внутрисегментный переход:

014С E9ED00   JMP   023C

11101001    11101101 00000000

адр. ком.      disp L       disp H

Предпоследний бит первого байта команды указывает на то, что переход задан в виде абсолютного адреса в текущем сегменте (имеем переход типа near).

Схема выполнения данной команды: IP:=(IP)+dispHL – смещаемся по абсолютному адресу в текущем сегменте

После выполнения этой команды IP:=(смещение)+(длина команды)+dispHL, т.е.

IP:=014h+03h+00EDh=023Ch

Межсегментный переход:

0261 FF 2E 00 06     JMP   Far [600]

11111111    00101110    00000000    00000110

адр. Ком.    md      r/m     disp

где, адрес команды указывает на то, что модифицируется весь указатель адреса CS:IP, md и последние 3 бита (r/m) определяют тип адресации (в данном случае адресация прямая md=00, r/m=110), следовательно адрес перехода берется из послених двух байт команды: IP:=(0600h) CS:=(0602h)

Схема выполнения команды: CS:IP:=(r/m)

4Анализ форматов и схем выполнения машинных команд замыкания цикла внутрисегментным и межсегментным переходами

Так как команды условного перехода имеют короткий формат и обеспечивают только переходы типа short по относительному адресу, поэтому как и при внутрисегментном переходе, так и при межсегментном команда LOOP ссылается на команды JMP, которая и выполняет необходимый переход.

Команда LOOP имеет следующий формат:

0241  E2F6   LOOP   0239,

что в двоичной форме записывается следующим образом:

11100010   11110110

адр. Ком.     dispL

Смещение адреса перехода задается относительно адреса команды передачи управления, как и в любой другой команде передачи управления типа short в дополнительном коде. Т.е. смещение в данном случае будет равно: -08

Схема выполнения команды следующая:

CX:=CX-1, если CX=0 выходим из цикла, в противном случае IP:=(IP)+dispL – уменьшаем значение счетчика.

После выполнения команды получим: IP:=0241h-08h=0239h


 

А также другие работы, которые могут Вас заинтересовать

76821. Топография брюшины в среднем и нижнем этажах брюшной полости. Большой сальник. «Карманы» в стенках брюшной полости 185.59 KB
  Париетальная брюшина передней стенки живота образует между пупком и лобком складки и ямки. Ямки надпузырные правая и левая fosse suprvesicles dextr et sinistr между срединной и медиальными пупочными складками. Паховые ямки медиальные правая и левая fosse inguinlis dextr et sinistr между медиальными и латеральными пупочными складками латеральные паховые ямки: правая и левая кнаружи от латеральной складки они соответствуют внутреннему паховому кольцу. Через надпузырные ямки могут возникать скользящие грыжи когда стенкой...
76822. Нос и его полость 182.92 KB
  Корень носа отделяется от лба переносьем в виде пологой поперечной борозды. Различия носа определяются: формой спинки: выпуклая прямая вогнутая; длиной и положением корня носа: глубокое высокое среднее; направлением ноздрей: кверху книзу горизонтально; очертанием верхушки: тупая острая средняя. Скелет носа образован фиброзной тканью хрящами и костями. Фиброзная перепонка находится в передней части перегородки носа покрыта кожей.
76823. Гортань (ларингс) 183.27 KB
  Скелет гортани образуют хрящи и их соединения между собой. Связки и суставы гортани Орган связывает с подъязычной костью щитовидноподъязычная мембрана состоящая из непарной срединной связки и парных боковых правой и левой. В желудочковой части гортани находятся преддверные и голосовые связки. Эластический конус это фиброзноэластическая мембрана гортани расположенная непосредственно под слизистой оболочкой в нижней части органа т.
76824. Мышцы гортани 181.17 KB
  Гортань лежит на уровне от IV до VIVII шейных позвонков имея спереди и по бокам щитовидную железу поверхностную и трахеальную фасции подподъязычные мышцы; сзади глотку вверху подъязычную кость. Мышцы гортани подразделяются на три группы: расширители дилататоры голосовой щели суживатели констрикторы напряжители тензоры голосовых связок. Мышцырасширители дилататоры.
76825. Трахея и бронхи 184.75 KB
  Она начинается от гортани на уровне VI шейного позвонка заканчивается на уровне IV V грудных позвонков делением на два главных бронха. Приносящие лимфатические сосуды впадают в глубокие шейные лимфатические узлы внутренние яремные а также в трахебронхиальные пред и паратрахеальные узлы. На уровне IVV грудных позвонков трахея образует раздвоение бифуркацию и переходит в правый и левый главные бронхи или иначе обозначая в бронхи первого порядка.
76826. Легкие (пульмо, пневмон) 181.97 KB
  Закладки легких на 6й неделе достигают грудной полости где соматоплевра образует два плевральных мешка и покрывает легкие висцеральным листком. Ритмические сокращения зачатков легких начинаются на 13й неделе эмбрионального развития а с рождением они переходят в дыхательные движения. Сегмент участок доли имеет основание обращенное к поверхностям легких верхушку направленную к корню. Сегментарному строению легких соответствует ветвление бронхиального дерева и легочной артерии.
76827. Корни легких 180.58 KB
  Корень легкого состоит из главного бронха легочной артерии верхней и нижней легочных вен; лимфатических сосудов и узлов нервов переднего и заднего легочного сплетения. Корень располагается в воротах легкого. Они представляют собой овальное углубление на медиальной поверхности легкого которое делит ее на позвоночную и медиастинальную части. В топографии составляющих корня легкого имеется существенное различие.
76828. Плевра - серозная оболочка из соединительнотканной основы покрытой мезотелием 180.66 KB
  Отделы и полость плевры. Границы плевры. Над верхней грудной апертурой выступают правый и левый купола плевры фиксированные связками к первому ребру VII шейному позвонку и длинной мышце шеи. Купола плевры сзади достигают шейки первого ребра а спереди приподнимаются над ребром на 34 см; ключицей на 12 см.
76829. Средостение (медиастинум) 179.77 KB
  Верхнее и нижнее средостение разделены горизонтальной плоскостью проходящей через грудинный симфиз соединение рукоятки и тела и межпозвоночный диск между IV и V грудными позвонками. Нижнее средостение делится фронтальными плоскостями проведенными впереди и позади сердца на переднее среднее и заднее. По Базельской номенклатуре средостение подразделяется на переднее и заднее фронтальной плоскостью проходящей через корни легких и бифуркацию трахеи.