Главная » Просмотр файлов » Лабораторные задания

Лабораторные задания (565165), страница 2

Файл №565165 Лабораторные задания (Лабораторные задания) 2 страницаЛабораторные задания (565165) страница 22016-04-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Например, безусловный переход:

JMP оp,

где ор – имя команды, которой передается управление (т.е. метка).

Адрес перехода ассоциируется с меткой команды. Метка – это имя команды, которое располагается до мнемоники команды и отделяется двоеточием. Любая программная метка (включая имя процедуры) имеет атрибут NEAR или FAR.

Например,

АМ1: ADD AX,4

………………….

JMP AM1

Команды перехода модифицируют указатель команд IP и, возможно, регистр сегмента команд CS и бывают двух типов:

  • если команда изменяет только IP , т.е. передача управления внутри сегмента, то переход называется ближний переход NEAR.

  • если изменяется пара регистров CS:IP, - это межсегментный переход или далекий переход FAR. Заметим, что переход из ассемблерного участка программы в Паскаль-программу также является далеким переходом.

а) команды, анализирующие результаты предыдущей команды (флаги) – условный переход в классическом понимании. Они имеют только 1-байтовое смещение.

Если условный переход требует удаления более чем на 128Б (30-40 команд), то используется комбинация условного и безусловного перехода.

Например:

Требуется NEAR переход на метку ZERO по флагу ZF=1, тогда

Получим фрагмент программы

………..

JNZ CONTINUE; if ZF<>1 then continue

JMP ZERO

CONTINUE

Т.е. используется условный переход по противоположному признаку, а по ZF=1 получим 2-хбайтовый переход.

Мнемоника условного перехода сложна, таких переходов более 20. Некоторые очевидны. Для образования мнемоники используют следующие сокращения:

E – equal (=)

N – not (не)

G – greater (больше для знаковых целых)

L – less (меньше для знаковых целых)

A – above (выше) беззнаковых

B –below (ниже) для беззнаковых

В условных переходах используется после J от одной до трех букв (из перечисленных выше).

Например, после сравнения чисел результат ор1<ор2, возможны 2 команды, эквивалентные между собой для одного и того же перехода:

  • для знаковых JL ADRES

JNGE ADRES

  • для беззнаковых JB ADRES

JNA ADRES



б) команды управления циклом

LOOP ор

- управление циклом по счетчику, где ор – метка первой команды цикла, цикл управляется счетчиком в СХ.

Команда LOOP уменьшает содержимое СХ (dec СХ) и передает управление в начало цикла, если содержимое СХ<>0, иначе управление передается команде следующей за LOOP.

Обычно цикл оформляется следующим образом.

mov CX,N ; СХ = {число проходов цикла}

L1: ……… начало цикла

……………….

LOOP L1;

Особенности команды LOOP:

  • счетчик цикла находится только в CX;

  • начальное значение загружается в CX>0 до входа в цикл;

  • команды прохода цикла выполняются хотя бы один раз;

  • LOOP осуществляет переход типа SHORT, поэтому проход цикла не должен занимать 128Б (30-40 команд); если нужен более длинный проход цикла, то используется сочетание условных и безусловных переходов;

  • CX может использоваться как операнд в цикле, но не должен изменяться другими командами.

Задание

1. Разработать программу реализации циклического процесса в соответствии с вариантом задания. Вычисляется выражение типа

 y1, x<0

Y =  y2 , x=0

  • y3 , x>0

при этом используется целочисленное деление, а параметром цикла является переменная x

Вариант

y1

y2

y3

a

b

c

d

x

1

(a2+x)

c

a+b

d

3ax

12

-3

4

3

[-3;4]

2

2ax+5

a-b

d

a2-x

c+d

-6

4

8

2

[-2;5]

3

x(c+7)

b-d

a

cx2

c+d

5

-6

2

1

[-4;5]

4

(d2+x)bc

c+b

d

x2

a+b

1

-3

12

4

[-3;4]

5

cx

a

-b2d

(b+c)x

2

-7

11

5

[-5;2]

6

b+cx

a

-(5+bc)

d2x

c+3

4

-3

6

10

[-4;4]

7

ab-c

x

d-ab

b2x

c+d

14

2

1

-6

[-6;2]

8

a2-x

c

bd-a2

(a2+x)b

5

-3

4

16

[-2;6]

9

c2 -x

a-c

a+b

d

4ax

12

-3

4

3

[-3;4]

10

2a+5x

a-b

d

a2+x

c-d

-6

4

8

2

[-3;3]

11

x(c+5)

2b-d

2a

x2

c+d

5

-6

2

1

[-4;5]

12

(d2+x)b

c+b

d

x2

a-b

1

-3

12

4

[-3;4]

13

c+x

a

-b2d

(b+c)-x

2

-7

11

5

[-5;2]

14

b+x

a

(5+bc)

d2x

c+3

4

-3

6

10

[-4;4]

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

Блочная структура ассемблер-программы

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

В данной лабораторной работе студенты должны ознакомиться с файлами программ, перечисленными ниже, и подготовить линейную программу, написанную в работе 1, к выполнению в виде ассемблер-программы с использованием программного пакета TASM.

Структура программы на языке Ассемблера

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

{мет. сегм.} SEGMENT ’code’

ASSUME CS:{ мет. сегм.}, DS:{ мет. сегм.}

{мет. начала} MOV AX, { мет. сегм.};

MOV DS,AX;

MOV AX,{код функции};

INT 21h

… DW …

… DB …

{ мет. сегм.} ENDS

END { мет. начала}



Рассмотрим директивы оформления программы:

1) директива SEGMENT для ассемблеров MASM и TASM имеет одинаковую структуру

{мет. сегм.} SEGMENT [{счетн.}] [{комб.}] [‘{класс}’]

где {мет. сегм.} - это имя сегмента, которое трактуется как метка, т.к. используется для передачи управления.

Атрибуты необязательны, но, если они есть, то очередность должна сохраняться.

2) директива ASSUME нужна для выполнения команд программы, которые неявно ссылаются на сегментные регистры МП (т.е. в примере – DS и CS). Она обеспечивает передачу адресов сегментов с соответствующими именами в сегментные регистры.

Общий вид

ASSUME CS:{ мет.}[, {сег. рег.}:{ мет.}]

В приведенном примере эта директива означает, что DS и CS указывают на один и тот же сегмент, причем в CS адрес начала сегмента загружается автоматически, а в DS для этого требуются обычно две команды в самом начале сегмента.

Заметим, что ASSUME может быть расположен до начала первого сегмента. В многосегментных программах ASSUME может описывать следующие сегменты



Сег.рег.

Сегмент

Загрузка адреса

CS

Рг сегмента команд

автоматическая

DS

Рг сегмента данных

в программе

ES

Рг доп. сегмента данных

в программе

SS

Рг сегмента стека

автоматическая



3) Директива ENDS указывает на конец текста сегмента. Общий вид

{ мет. сегм.} ENDS

4) Директива END указывает на конец текста исходного модуля (ИМ). Общий вид

END { мет. начала}

где { мет. начала} – пусковой адрес, т.е. метка первой выполняемой строки ИМ, которой передается управление после компоновки.

Обычно программы состоят из 3-х сегментов: команд, данных и стека. Допускается использовать дополнительный сегмент данных. Расположение сегментов в принципе свободное, но рекомендуется:

    1. сегмент данных,

    2. дополнительный сегмент данных,

    3. сегмент команд,

    4. сегмент стека, т.к. он может быть описан без расхода памяти.

Например,

Stack SEGMENT stack ,‘stack’

DW 128 dup(?)

Stack ENDS

Объем стека обычно указывается в словах и не должен превышать 64КБ.

Здесь имя сегмента совпадает с атрибутами, что не запрещено; далее stack – комбинаторный атрибут, который позволяет компоновщику объединить стековые сегменты из разный ИМ в один стековый сегмент. Кроме того, при загрузке программы выполняется автоматическая инициализация регистров SS и SP.

Характеристики

Тип файла
Документ
Размер
140,5 Kb
Тип материала
Предмет
Высшее учебное заведение

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее