Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Косвенный способ адресации




СЛК   S:= S + <<2>>

Здесь число на месте операнда задаёт адрес ячейки памяти, содержимое которой, в свою оче-редь, трактуется как целое число – адрес необходимого операнда в памяти ЭВМ. Таким образом, число 2 в нашем примере является косвенным адресом операнда. При таком способе адресации для доступа к операнду центральному процессору необходимо дважды обратиться к основной памяти.

13. Для операций с разными способами адресации и разными форматами данных необходимо вве-дение различных форматов команд, которые по-разному задают местонахождение и количество операндов, и, естественно, имеют разную длину. Для широко распространённых сейчас двухадрес-ных ЭВМ это такие форматы команд (в скобках указано их мнемоническое обозначение): • регистр – регистр (RR); • регистр – память, память – регистр (RX); • регистр – непосредственный операнд в команде (RI); • память – непосредственный операнд в команде (SI); • память – память, т.е. оба операнда в основной памяти (SS).2   Многообразие форматов команд и данных позволяет писать более компактные и эффективные программы на языке машины, однако, как уже упоминалось, сильно усложняет центральный процес-сор ЭВМ. Современные ЭВМ позволяют совершать операции над целыми и вещественными числами раз-ной длины. Это вызвано чисто практическими соображениями. Например, если нужное нам целое число помещается в один байт, то неэкономно использовать под его хранение два или большее число байтов памяти (экономия будет особенно заметной, если необходимо хранить большой массив таких чисел). Во избежание такого неоправданного расхода памяти введены соответствующие форматы данных, Приведённая ниже таблица иллюстрирует многообразие форматов данных, для представления целых чисел на широко распространённых персональных ЭВМ.  
Размер (байт) Название формата
  Короткое целое
  Длинное целое
  Сверхдлинное целое

 

14. Для дальнейшего уменьшения объёма программы современные ЭВМ могут использовать новый способ адресации, основанный на принципе базирования адресов. Изучение этого важного и ново-го для нас понятия проведём на следующем примере. Пусть в программе на одноадресной учебной машине УМ-1 необходимо реализовать арифметический оператор присваивания Z:=(X+Y)2. Ниже приведена эта часть программы с соответствующими комментариями (напомним, что S – это регистр сумматора одноадресной ЭВМ): ... СЧ X; S:=X СЛ Y; S:=X+Y ЗП R; R:=X+Y – запись в рабочую переменную УМ R; S:=(X+Y)2 ЗП Z; Z:=(X+Y)2 ... Так как в этой одноадресной учебной ЭВМ имеется 224 (примерно 16 миллионов) ячеек памяти, то будем, не теряя общности, считать, что наш фрагмент программы располагается где-то примерно в средине памяти Область, в которой находятся вычисляемые относительно базы ячейки основной памяти, обычно называется сегментом – это сплошной участок памяти, начало которого задаётся в некотором реги-стре, называемом базовым, или сегментным. Будем далее для определённости называть такие ре-гистры сегментными, а сам приём разбиения памяти на такие участки – сегментированием памяти.
15. Говорят, что компьютеры образуют семейство, если выполняются следующие требования. 1. Одновременно выпускаются и используются несколько моделей семейства с различными производительностью и ценой (моделями называются компьютеры-члены семейства). Таким образом, пользователь может выбирать между дешёвыми моделями с относительно небольшими аппаратными возможностями, и более дорогими моделями с бoльшей произво-дительностью. 2. Все модели семейства обладают программной совместимостью: 1) снизу-вверх – старшие модели поддерживают все команды младших (любая программа, написанная для младшей модели, безошибочно выполняется и на старшей модели). Это свойство называется ещё обратной совместимостью; 2) сверху-вниз – на младших моделях выполняются программы, написанные для старших, если выполнены следующие условия: – наличие у младшей модели достаточного количества ресурсов (например, памяти или особых устройств ввода/вывода); – программа состоит только из поддерживаемых младшей моделью команд. 3. Присутствует унификация устройств, то есть их аппаратная совместимость между моделями (например, печатающее устройство должно работать на всех выпускаемых в настоящее вре-мя моделях семейства). 4. Модели семейства организованы по принципу модульности, что позволяет в определённых пределах расширять возможности ЭВМ, увеличивая, например, объём памяти или повышая производительность путём замены центрального процессора более быстродействующим. 5. Стандартизировано системное программное обеспечение (например, знакомый многим программистам компилятор с языка Турбо-Паскаль может работать на всех моделях семейства). 17. 17. В качестве примера рассмотрим представление короткого вещественного числа для данного се-мейства ЭВМ. Такое число имеет длину 32 бита и содержит три поля:
± E M
1 бит 8 бит 23 бита
       

Первое поле из одного бита определяет знак числа, знак "плюс" кодируется нулём, "минус" – единицей. Остальные биты, отведённые под хранение вещественного числа, разбивается на два поля: машинный порядок E и мантиссу M. Мантисса задаёт двоичное число, значение которого по модулю считается меньше единицы, другими словами, это число можно записать как 0.M2. И вот теперь каждое представимое в этом формате вещественное число A (кроме вещественного нуля 0.0) может быть записано в виде произведения двух сомножителей: A=±1.M*2E–127. Такое представление вещественного числа называется нормализованным: его первый сомножитель удовлетворяет неравенству:

1.0 ≤ 1.M < 2.0 1

16. Рассматриваемый компьютер имеет архитектуру с адресуемыми регистрами, поэтому адресуемая память состоит из основной и регистровой памяти. В младшей модели семейства основная память имеет объём 220 ячеек по 8 бит каждая, при этом каждая команда или данные располагаются в одной или нескольких последовательных (с возрастающими адресами) ячейках этой памяти. Устройство регистровой памяти будет рассмотрена немного позже. Вещественные числа На современных ЭВМ чаще всего используются три формата вещественных чисел: короткие (длиной 4 байта), длинные (8 байт) и сверхдлинные (16 байт) вещественные числа. Стоит отметить следующий важный факт. • Целые числа Целые числа в младшей модели могут занимать в памяти 8 бит (короткое целое), 16 бит (длин-ное целое) и 32 бита (сверхдлинное целое). Длинное целое принято называть машинным словом (не путать с машинным словом в машине Фон Неймана, там это содержимое одной ячейки памяти!). • Символьные данные В качестве символов используются короткие целые числа, которые трактуются как неотрицательные (беззнаковые) числа, задающие номер символа в некотором алфавите. • Массивы (строки) Допускаются только одномерные массивы, которые могут состоять из коротких или длинных целых чисел. Массив коротких целых чисел может рассматриваться программистом как символьная строка, отсюда и второе название этой структуры данных • Логические (битовые) вектора. В языке машины представлены команды для обработки логических векторов длиной 8 или 16 бит. Элементы таких векторов трактуются как логические переменные. Эти команды будут изучать-ся в разделе 9.1. • Двоично-десятичные целые числа. Это целые числа в двоично-десятичной записи, имеющие размер до 16 байт. В настоящее время используются достаточно редко, в основном, когда надо обрабатывать большие целые числа (длиной до 31 десятичной цифры).   18. Как уже говорилось, хранимые в памяти машинные слова (наборы битов) могут трактоваться по-разному. При вызове в устройство управления этот набор битов трактуется как команда, а при вызо-ве в арифметико-логическое устройство – как число. В дополнении к этому в рассматриваемой нами архитектуре каждое хранимое целое число может трактоваться программистом как знаковое или беззнаковое (неотрицательное). По внешнему виду невозможно определить, какое целое число храниться в определённом месте памяти, только сам программист может знать, как он рассматривает это число (вспомним соответствующий принцип Фон Неймана). две различные машинные системы счисления для представления знаковых и беззнаковых целых чисел соответственно. Беззнаковые (неотрицательные) числа представляются в уже известной Вам двоичной системе счисления, такое представление называется прямым кодом неотрицательного числа. Например, де-сятичное число 13, хранимое в формате одного байта, будет записано как прямой код 00001101. Если инвертировать прямой код (т.е. заменить все "1" на "0", а все "0" на "1"), то получим так называемый обратный код числа. Например, обратный код числа 13 равен 11110010.
Для представления отрицательных знаковых чисел используется так называемый дополни-тельный (complementary) код, который можно получить из обратного кода прибавлением единицы. Например, получим дополнительный код числа –13: Прямой код  
Обратный код  
+  
Дополнительный код  
19. Память нашей ЭВМ имеет уже знакомую нам сегментную организацию. В любой момент време-ни для младшей модели определены четыре сегмента (хотя для старших моделей число сегментов больше). Это означает, что есть четыре сегментных регистра, которые указывают на определённые области памяти. Каждый сегментный регистр имеет длину 16 разрядов, а в то же время для адреса-ции любого места нашей памяти необходимо, как уже говорилось, 20 разрядов. Для того, чтобы сег-мент мог указывать на некоторое место оперативной памяти, адрес начала сегмента получается по-сле умножения значения сегментного регистра на число 16. Правда, как легко понять, при таком спо-собе задания начала сегмента, он может начинаться не с любого места оперативной памяти, а только с адресов, кратных 16 (в книгах по Ассемблеру такие участки памяти называются параграфами). Итак, производить обмен с памятью можно только относительно одного из них этих сегментных регистров. Таким образом, физический адрес числа или команды вычисляется центральным процессором по формуле Aфиз := (SEG*16 + A)mod 220, где SEG – значение сегментного регистра, а A –заданное в команде смещение. Физический адрес бе-рётся по модулю 220, чтобы он не вышел за максимальный адрес памяти. В качестве мнемонических обозначений сегментных регистров выбраны следующие двухбуквенные имена: кодовый сегментный регистр (CS), сегментный регистр данных (DS), сегментный ре-гистр стека (SS) и дополнительный сегментный регистр (ES). Эти имена (как и имена всех остальных регистров этой ЭВМ) являются служебные в языке Ассемблера. Напомним, что служебные имена нельзя использовать ни в каком другом смысле, кроме того, который определён в языке   20. В силу того, что в ЭВМ все регистры имеют безликие двоичные обозначения, программисты предпочитают использовать в программах на Ассемблере мнемонические названия регистров. Реги-стры общего назначения, каждый из которых может складывать, вычитать и просто хранить данные, а некоторые – ещё умножать и делить, обозначают следующими служебными именами: AX, BX, CX, DX. Для обеспечения возможности зранить как однобайтные, так и двухбайтные данные, каждый из них разбит на две части по 8 бит. Биты нумеруются немного непривычно справа налево, начиная с
нуля, такая нумерация естественна для записи чисел: последняя двоичная цифра в числе задаёт младший разряд этого числа (с показателем основания в нулевой степени): 15 8    
AX AH AL
BX BH BL
CX CH CL
DX DH DL
16 бит

Каждый из регистров AH, AL, BH, BL, CH, CL, DH и DL может быть использован в машинных ко-мандах как самостоятельный регистр, на них можно выполнять операции сложения и вычитания. В дальнейшем условное обозначение r8 мы будем использовать для обозначения любого короткого (8-разрядного) адресуемого регистра.

 
 
 
 
 
 

 

  21. Формат регистр-регистр.
6 бит 1 бит 1 бит 2 бита 3 бита 3 бита
КОП d w   r1 r2

Команды этого формата занимают в памяти 2 байта. Первое поле команды – код операции – за-нимает 6 первых бит, что позволяет задавать до 64 различных операций. Далее следуют однобитные поля с именами d и w, где d – так называемый бит направления, а w – бит размера аргумента, по-следующие два бита для этого формата всегда равны 11, а последние две части (по 3 бита каждая) задают номера регистров-операндов команды.

Стоит подробнее рассмотреть назначение битов d и w. Бит d задаёт направление выполнения команды, код операции которой обозначен как ⊗, а именно:

<r1>:= <r1> ⊗ <r2> при d = 0

<r2>:= <r2> ⊗ <r1> при d = 1.

 




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


Дата добавления: 2015-06-27; Просмотров: 658; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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