Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




СПЕЦИАЛЬНЫЕ

БЕЗЗНАКОВЫЕ

ЗНАКОВЫЕ

КОМАНДЫ УСЛОВНЫХ ПЕРЕХОДОВ

ВНУТРИСЕГМЕНТНЫЙ ПЕРЕХОД

 

Предположим, что адрес М2 равен 439Fh.

адрес М2 439Fh

адрес команды – 0325h

--------------------

disp = 407Ah >0 - переход вперед

| >127

┌───────┐ ┌───────┐

│ KOП │ │ 407A │

└───────┘ └───────┘

disp

При выполнении этой команды адрес перехода вычисляется аналогично.

Переходы вперед выделяются длинные (3 байта), но если переход короткий, то программист указывает:

JMP short M2

 

 

Используют только короткий переход (-128..127)

При выходе за диапазон выдается синтаксическая ошибка.

 

Аналог в Паскале:

if a=0 then goto met

 

1) CMP A,0; синтаксическая ошибка

JZ MET; если адресное расстояние >127

 

2) иначе

CMP A,0

JNZ M1

JMP MET

M1: продолжение программы.

 

Команды условных переходов делятся на:

- знаковые

- беззнаковые

- спец. назначения

 

 

┌─────────┬─────────────┬─────────────────────────────────────┐

│Переход │Флаги │ Примечания │

├─────────┼─────────────┼─────────────────────────────────────┤

│JE/JZ │ ZF │Если равно / Если ноль │

├─────────┼─────────────┼─────────────────────────────────────┤

│JNE/JNZ │ ┐ZF │Если не равно / Если не ноль │

├─────────┼─────────────┼─────────────────────────────────────┤

│JG/JNLE │┐ZF&(SF=OF) │Если > / Если не < и не равно │

├─────────┼─────────────┼─────────────────────────────────────┤

│JGE/JNL │ SF=OF │Если >= / Если не < │

├─────────┼─────────────┼─────────────────────────────────────┤

│JL/JNGE │ (SF<>OF) │Если < / Если не > и не равно │

├─────────┼─────────────┼─────────────────────────────────────┤

│JLE/JNG │ZF V (SF<>OF)│Если =< / Если не > │

└─────────┴─────────────┴─────────────────────────────────────┘

 

 

 

┌─────────┬────────────┬──────────────────────────────────────┐

│Переход │Флаги │ Примечания │

├─────────┼────────────┼──────────────────────────────────────┤

│JE/JZ │ ZF │Если равно / Если ноль │

├─────────┼────────────┼──────────────────────────────────────┤

│JNE/JNZ │ ┐ZF │Если не равно / Если не ноль │

├─────────┼────────────┼──────────────────────────────────────┤

│JA/JNBE │ ┐ZF & ┐CF │Если выше / Если не ниже и не равно │

├─────────┼────────────┼──────────────────────────────────────┤

│JAE/JNB │ ┐CF │Если выше или равно / Если не ниже │

├─────────┼────────────┼──────────────────────────────────────┤

│JB/JNAE │ CF │Если ниже / Если не выше и не равно │

├─────────┼────────────┼──────────────────────────────────────┤

│JBE/JNA │ CF V ZF │Если ниже или равно / Если не выше │

└─────────┴────────────┴──────────────────────────────────────┘

 

 

 

┌─────────┬────────────┬──────────────────────────────────────┐

│Переход │Флаги │ Примечания │

├─────────┼────────────┼──────────────────────────────────────┤

│ JS │ SF │переход по минусу │

├─────────┼────────────┼──────────────────────────────────────┤

│ JNS │ ┐SF │переход, если знак равен нулю │

├─────────┼────────────┼──────────────────────────────────────┤

│ JC │ CF │переход по переносу │

├─────────┼────────────┼──────────────────────────────────────┤

│ JNC │ ┐CF │переход по отсутствию переноса │

├─────────┼────────────┼──────────────────────────────────────┤

│ JO │ JF │переход по переполнению │

├─────────┼────────────┼──────────────────────────────────────┤

│ JNO │ ┐OF │переход по отсутствию переполнения │

├─────────┼────────────┼──────────────────────────────────────┤

│ JP │ PF │переход по паритету │

├─────────┼────────────┼──────────────────────────────────────┤

│ JNP │ ┐PF │переход по отсутствию паритета │

└─────────┴────────────┴──────────────────────────────────────┘

 

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

Пример лабораторной работы N2:

 

│(A^2)*B if A^2 - 5 > 0

y = { 100 if A^2 - 5 = 0

│(A^2)*(B^2) if A^2 - 5 < 0

 

A dw 7

B dw 8

y dw?

 

mov ax,A

imul ax

mov cx,ax;A^2

sub ax,5

jz m2

jl m3

mov ax,B;

imul cx; >0

jmp short kon;

;--------------------------

m2: mov ax,100;

jmp short kon; =0

;--------------------------

m3: mov ax,B;

imul ax;

neg ax; <0

add ax,cx;

;--------------------------

kon: mov y,ax

ret

 

 

Первые ЭВМ имели прямой способ адресации:

КОП ОР1 ОР2 При прямой адресации все ко-

┌───────┐ ┌───────┐ ┌───────┐ манды имели бы длину 6 байтов.

│ KOП │ │Адр.op1│ │Адр.ор2│ Однако в IBM PC команды имеют

└───────┘ └───────┘ └───────┘ длину от 1 до 6 байтов. В мень-

7 0 19 0 19 0 шей степени используются длин-

\-------------V--------------/ ные команды. В этом и проявля-

6 байт тся эффективность системы команде. Современные способы адресации имеют следующие цели: определить адреса в командах наименьшим числом бит, вычисление адреса команд, относительно базы а в командах перехода – относительно следующей команды, вычисление адреса операндов на основании выражений, элементы выражений в процессе вычислений изменяются, что позволяет эффективно обрабатывать структурированные типы данных. Большинство способов адресации реализуются с помощью постбайта.

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 283; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.14 сек.