48552 (588566), страница 6

Файл №588566 48552 (Разработка виртуальных лабораторных работ средствами эмулятора Emu8086) 6 страница48552 (588566) страница 62016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

mov ax,25000 - --> загружаем в регистр AX число 25000

add ax,10000 - --> ax = 35000; ax - приемник, 10000 - источник

mov cx, 200 - --> загружаем в регистр CX число 200

mov bx,760 - --> а в регистр BX - 760

add cx,bx - --> cx = 960, bx = 760 (bx не меняется); cx - приемник, bx - источник

2.2 Вычитание.

Команда SUB (Subtraction - вычитание) вычитает второй операнд (источник) из первого (приемника) и помещает результат на место первого операнда. Исходное значение первого операнда (уменьшаемое) теряется. Таким образом, если команду вычитания записать в общем виде

SUB операнд1, операнд2

то ее действие можно условно изобразить следующим образом:

операнд1 - операнд2 - > операнд1

В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Команда

Назначение

Процессор

SUB приемник, источник

Вычитание

8086

Примеры:

mov al,10

sub al,7 - --> al = 3; al - приемник, 7 - источник

mov ax,25000

sub ax,10000 - --> ax = 15000; ax - приемник, 10000 - источник

mov cx,100

mov bx,15

sub cx,bx - --> cx = 85, bx = 15 (bx не меняется); cx - приемник, bx - источник

2.3 Инкремент (увеличение на 1).

Команда INC (Increment - инкремент) прибавляет 1 к операнду, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово.

Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF. Команда не воздействует на флаг CF; если требуется воздействие на этот флаг, необходимо использовать команду Add Op,l.

Команда INC (Increment - инкремент) увеличивает на единицу регистр или значение операнда в памяти.

Она эквивалентна команде ADD источник, 1 только выполняется гораздо быстрее.

Команда

Назначение

Процессор

INC приемник

Увеличение на единицу

8086

Примеры:

mov al,15

inc al - --> теперь AL = 16 (эквивалентна add al,1)

mov dh,39h

inc dh - --> DH = 3Ah (эквивалентна add dh,1)

mov cl,4Fh

inc cl - --> CL = 50h (эквивалентна add cl,1)

2.4 Декремент (уменьшение на 1).

Команда DEC (Decrement - декремент) вычитает 1 из операнда, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF.

Она эквивалентна команде SUB источник, 1 только выполняется гораздо быстрее.

Команда

Назначение

Процессор

INC приемник

Увеличение на единицу

8086

Примеры:

mov al,15

dec al - --> теперь AL = 14 (эквивалентна sub al,1)

mov dh,39h

dec dh - --> DH = 38h (эквивалентна sub dh,1)

mov cl,4Fh

dec cl - --> CL = 4Dh (эквивалентна sub cl,1)

3. Задание для выполнения.

3.1 Запустить эмулятор EMU8086.

3.2 Получите задание у преподавателя (один из пяти вариантов табл. №1) и, пользуясь правилами оформления ассемблерных программ, напишите программы расчета значения A (два-три варианта).

2.3 Программу ассемблируйте в файл типа *. exe;

3. Контрольные вопросы

3.1 Структура файлов типа *. exe?

3.2 Структурные отличия файлов *. exe от *.com в операционной среде DOS?

3.3 Команда add основное назначение?

3.4 Команда sub основное назначение?

3.5 Команда inc основное назначение?

3.6. Команда dec основное назначение?

Табл. №1

вар.

Расчетная формула

B

C

D

A=B+C-D

1

35

23

A=B+C+D

65

1

1

A=C-D+B

1

33

1

A=D+A-B

18

1

88

A= B-C+D

45

10

1

По согласованию с преподавателем можно изменить как расчетную формулу, так и значения коэффициентов (B, C, D).

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

СПОСОБЫ АДРЕСАЦИИ НА ЯЗЫКЕ АССЕМБЛЕРА

Цель работы: Изучить основные способы адресации.

Способы адресации.

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

В программах, написанных на языке ассемблера термин "операнд" применим к обозначению тех физических объектов, с которыми имеет дело процессор при выполнении машинной команды и, говоря об операндах команд языка, понимают в действительности операнды машинных команд. По отношению к командам ассемблера используется термин "параметры".

В архитектуре современных 32-разрядных процессоров Intel предусмотрены довольно изощренные способы адресации; в МП 86 способов адресации меньше. Мы в настоящей лабораторной работе ознакомимся с режимами адресации, используемые в МП 86.

Различают следующие режимы адресации:

регистровый;

непосредственный;

прямой;

регистровый косвенный (базовый или индексный);

регистровый косвенный со смещением (базовый или индексный);

базово-индексный;

базовый индексный со смещением.

1.1 Регистровый режим

Значение операнда-источника предварительно запоминается в одном из встроенных регистров микропроцессора.

Сам регистр становится эффективным адресом. Операнд (байт или слово) находится в регистре. Этот способ применим ко всем программно-адресуемым регистрам процессора:

inc CX

; Увеличение на 1 содержимого CX

push DS

; Сегментный адрес сохраняется в стеке

xchg BX,BP

; Регистры BX и BP обмениваются содержимым

mov ES,AX

; Содержимое AX пересылается в ES

1.2 Непосредственный режим

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

mov АН, 40h

; Число 40h загружается в АН

mov AL,'*'

; Код ASCII символа "*' загружается в AL

int 21h

; Команда прерывания с аргументом 21h

limit equ 528

; Число 528 получает обозначение limit

mov CX,limit

; Число, обозначенное limit, загружается в СХ

Команда mov, использованная в последнем предложении, имеет два операнда; первый операнд определяется с помощью регистровой адресации, второй - с помощью непосредственной.

Важным применением непосредственной адресации является пересылка относительных адресов (смещений), для этого используется описатель offset (смещение):

; Сегмент данных

string db “Privet"; Строка символов

; Сегмент команд

mov DX,offset string; Адрес строки засылается в DX

1.3 Прямой режим.

Адресуется память; адрес ячейки памяти (слова или байта) указывается в команде (обычно в символической форме) и поступает в код команды:

; Сегмент данных

meml dw 0; Слово памяти содержит 0

mem2 db 230; Байт памяти содержит 230

; Сегмент команд

inc meml; Содержимое слова meml увеличивается на 1

mov DX, meml; Содержимое слова с именем menu загружается в DX

mov AL,mem2; Содержимое байта с именем mem2 загружается в АL

Сравнивая этот пример с предыдущим, мы видим, что указание в команде имени ячейки памяти обозначает, что операндом является содержимое этой ячейки; указание имени ячейки с описателем offset - что операндом является адрес ячейки.

Прямая адресация памяти на первой взгляд, кажется, простой и наглядной. Если мы хотим обратиться, например, к ячейке meml, мы просто указываем ее имя в программе. В действительности, однако, дело обстоит сложнее. Адрес любой ячейки состоит из двух компонентов: сегментного адреса и смещения. Обозначения meml и mem2 в предыдущем примере, являются смещениями. Сегментные же адреса хранятся в сегментных регистрах. Однако сегментных регистров четыре: DS, ES, CS и SS. Каким образом процессор узнает, из какого регистра взять сегментный адрес, и как сообщить ему об этом в программе?

Процессор различает группу кодов, носящих название префиксов. Имеется несколько групп префиксов: повторения, размера адреса, размера операнда, замены сегмента. Здесь нас будут интересовать префиксы замены сегмента.

Команды процессора, обращающиеся к памяти, могут в качестве первого байта своего кода содержать префикс замены сегмента, с помощью которого процессор определяет, из какого сегментного регистра взять сегментный адрес. Для сегментного регистра ES код префикса составляет 26h, для SS - 361i, для CS - 2Eh. Если префикс отсутствует, сегментный адрес берется из регистра DS (хотя для него тоже предусмотрен свой префикс).

В приведенном примере, по умолчанию, все данные адресуются через сегментный регистр DS, так что вместо inc meml можно было написать inc DS: mem. В случае замены сегментного регистра его обязательно нужно указывать явно:

inc ES: mem1

inc CS: mem2

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

mov AL,DS: [17h]

Загрузка в AL содержимого ячейки со смещением 17h в сегменте, определяемом содержимым DS

1.4 Регистровый косвенный (базовый и индексный).

Адресуется память (байт или слово). Относительный адрес ячейки памяти находится в регистре, обозначение которого заключается в прямые скобки. В МП 86 косвенная адресация допустима только через регистры ВХ, ВР, SI и DI. При использовании регистров ВХ или ВР адресацию называют базовой, при использовании регистров SI или DI - индексной.

Если косвенная адресация осуществляется через один из регистров ВХ, SI или DI, то подразумевается сегмент, адресуемый через DS, поэтому при адресации через этот регистр обозначение DS: можно опустить:

mov es: [bx],'1' ――――→ mov [bx],'1'

Кстати, этот фрагмент немного эффективнее предыдущего в смысле расходования памяти. Из-за отсутствия в коде последней команды префикса замены сегмента он занимает на 1 байт меньше места.

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

Тип файла
Документ
Размер
5,95 Mb
Учебное заведение
Неизвестно

Список файлов ВКР

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