Главная » Просмотр файлов » В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования

В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования (975817), страница 7

Файл №975817 В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования.doc) 7 страницаВ.Г. Баула - Введение в архитектуру ЭВМ и системы программирования (975817) страница 72019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Как видим, в этой архитектуре есть многообразие форматов целых чисел, что позволяет писать более компактные программы. Для других архитектур это может оказаться несущественно, например, в некоторых современных супер-ЭВМ идёт работа с малым количеством целых чисел, поэтому вводится только один формат – сверхдлинное целое.

  • Символьные данные.

В качестве символов используются короткие целые числа, которые трактуются как неотрицательные (беззнаковые) числа, задающие номер символа в некотором алфавите.5 Заметим, что как таковой символьный тип данных (в смысле языка Паскаль) в Ассемблере отсутствует, а запись 'A' обозначает не символьный тип данных, а эквивалентна выражению языка Паскаль Ord('A').

  • Массивы (строки).

Массивы могут состоять из коротких или длинных целых чисел. Массив коротких целых чисел может рассматриваться как символьная строка. В машинном языке присутствуют команды для обработки элементов таких массивов, если такую команду поставить в цикл, то образуются удобное средство для работы с массивами.

  • Вещественные числа.

Чаще всего используются три формата вещественных чисел: короткие, длинные и сверхдлинные вещественные числа. Стоит отметить следующий важный факт. Если целые числа в различных ЭВМ по чисто историческим причинам иногда имеют разное внутреннее представление, то на момент массового выпуска ЭВМ с командами для работы с вещественными числами уже существовал определённый стандарт на внутреннее представление этих чисел – IEEE (Institute of Electrical and Electronics Engineers), и почти все современные машины этого стандарта придерживаются.

6.3. Вещественные числа

Рассмотрим представление короткого вещественного числа. Такое число имеет длину 32 бита и содержит три поля:

E

M

1 бит

8 бит

23 бита

Первое поле из одного бита определяет знак числа (знак "плюс" кодируется нулём, "минус" – единицей). Остальная биты, отведённые под хранение вещественного числа, разбивается на два поля: машинный порядок E и мантиссу M, которая по модулю меньше единицы. Каждое представимое вещественное число A (кроме числа 0.0) может быть записано в виде: A=1.M*2E–127. Такие вещественные числа называются нормализованными: первый сомножитель удовлетворяет неравенству 1.0  1.M < 2.0. Нормализация необходимо для однозначного представления вещественного числа в виде двух сомножителей. Нулевое число представляется нулями во всех позициях, за исключением, быть может, первой позиции знака числа.

В качестве примера переведём десятичное число –13.25 во внутреннее машинное представление. Сначала переведём его в двоичную систему счисления:

–13.2510 = -1101.012

Затем нормализуем это число:

-1101.012 = -1.101012*23

Следовательно, мантисса будет иметь вид 101010000000000000000002 , осталось вычислить машинный порядок: 3 = E-127; E = 130 = 128 + 2 = 1000000102 . Теперь, учитывая знак, получаем вид внутреннего машинного представления числа –13.2510:

1100 0001 0101 0100 0000 0000 0000 00002 = C150000016

Шестнадцатеричные числа в языке Ассемблера принято записывать с буквой h на конце:

C150000016 = C1500000h

Таков формат короткого вещественного числа. Согласно его виду, E изменяется от 0 до 255, следовательно, диапазон порядков коротких вещественных чисел равен 2–127..2128  10–38..1038. Как и для целых чисел, машинное представление которых мы рассмотрим чуть позже, число представимых вещественных чисел конечно. Заметим также, что, в отличие от целых чисел, в представлении вещественных чисел используется симметричная числовая ось, то есть для любого положительного числа найдётся соответствующее ему отрицательное (и наоборот).

Некоторые комбинации нулей и единиц в памяти, отведённой под вещественное число, собственно числа не задают, а используются для служебных целей. В частности, E=255 обозначает специальное значение "не число" (NAN – not a number). При попытке производить арифметические операции над такими "числами" возникает аварийная ситуация. Например, значение "не число" может быть присвоено вещественной переменной при её порождении, если эта переменная не имеет начального значения (как говорят, не инициализирована). Такой приём позволяет избежать тяжёлых семантических ошибок, которые могут возникать при работе с неинициализированными переменными, которые при порождении, как правило, имеют случайные значения.

Отметим ещё две специальные комбинации нулей и единиц, которые будем обозначать . Эти значения присваиваются результату операции с вещественными числами, если этот результат, хотя и не равен нулю, но не представим в виде вещественного числа, то есть  меньше самого маленького представимого положительного вещественного числа и больше самого большого отрицательного.

Аналогично существуют комбинации битов, задающие специальные значения . Эти значения выдаются в качестве результата, если этот результат такой большой по абсолютной величине, что не представим среди множества машинных вещественных чисел.

Центральный процессор "разумно" (по крайней мере с точки зрения математика) производит арифметические операции над такими "числами". Например, пусть A любое представимое вещественное число, тогда

A   = A;  * A = ; A *  = ; и т.д. 6

Для любознательных студентов заметим, что существует нетрадиционное построение математического анализа, в котором, как и в нашей ЭВМ, бесконечно малые величины  определяются не в виде пределов, как в обычном анализе, а существуют в виде "настоящих" вещественных чисел. Изложение нетрадиционного анализа можно посмотреть в книгах [13,14].

При изучении архитектуры ЭВМ вещественные числа не будут представлять для нас большого интереса и поэтому (а также из-за недостатка времени) операции над вещественными числами мы изучать не будем.

6.4. Целые числа

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

Беззнаковые (неотрицательные) числа представляются в уже известной Вам двоичной системе счисления, такое представление называется прямым кодом неотрицательного числа. Например, десятичное число 13, хранимое в одном байте, будет записано как прямой код 00001101.

Если инвертировать прямой код (т.е. заменить все "1" на "0", а все "0" на "1"), то получим так называемый обратный код числа. Например, обратный код числа 13 равен 11110010.

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

Прямой код = 00001101

Обратный код = 11110010

+ 1

Дополнительный код = 11110011

Существует и другой алгоритм преобразования отрицательного числа X в дополнительный код. Для этого необходимо записать в прямом коде значение 2N -|X|, где значение N равно максимальному числу бит в представлении числа (в нашем примере N=8).

Итак, в знаковой системе счисления отрицательные числа представляются в дополнительном коде, а неотрицательные – в прямом коде. Заметим, что при знаковой трактовке целых чисел крайний правый бит определяет знак числа ("1" для отрицательных чисел). Этот бит называется знаковым битом целого числа. Для знаковых чисел числовая ось несимметрична: количество отрицательных чисел на единицу больше, чем количество положительных чисел (докажите это !).

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

Очень важно понять, что все арифметические операции над знаковыми и беззнаковыми целыми числами производятся абсолютно по одинаковым алгоритмам, что естественно, потому что центральный процессор "не знает", какие это числа "на самом деле". В то же время, с точки зрения программиста, результаты таких операций могут быть разными для знаковых и беззнаковых чисел. Рассмотрим примеры сложения двух чисел длиной в байт. В первом столбике записано внутреннее двоичное представление чисел, а во втором и третьем – беззнаковое и знаковое десятичное представления этих же чисел.

  • Пример 1.

Б/з.

Знак.

11111100

252

–4

00000101

5

5

100000001

1

1

Из этого примера видно, что для знаковой трактовки чисел операция сложения выполнена правильно, а при рассмотрении чисел как беззнаковые результат будет неправильным, так как мы получим девятизначное двоичное число, не "умещающееся" в один байт. Так как центральный процессор "не знает", как программист будет трактовать складываемые числа, то он "на всякий случай" сигнализирует о том, что при сложении беззнаковых чисел произошла ошибка.

Для обозначения таких (и некоторых других) ситуаций в архитектуре компьютера введено понятие флагов. Каждый флаг занимает один бит в специальном регистре флагов (FLAGS). В данном случае флаг CF (carry flag) примет значение, равное единице (иногда говорят – флаг поднят). Рассматривая результат в знаковых числах, мы получили правильный ответ, поэтому соответствующий флаг OF (overflow flag) будет положен равным нулю (опущен).

  • Пример 2.

Б/з.

Знак.

01111001

121

121

00001011

11

11

10000100

132

-124

В данном примере ошибка будет, наоборот, в случае со знаковой трактовкой складываемых чисел, поэтому флаги CF и OF принимают соответственно значения 0 и 1.

  • Пример 3.

Б/з.

Знак.

11110110

246

–10

10001001

137

–119

101111111

383

+127

В данном случае результат будет ошибочен как при беззнаковой, так и при знаковой трактовке складываемых чисел. Содержимое флагов: CF = OF = 1. Легко придумать пример, когда результат сложения правильный как для знаковых, так и для беззнаковых чисел (сделайте это самостоятельно!).

Кроме формирования флагов CF и OF команда сложения целых чисел меняет и значения неко­торых других флагов в регистре флагов FLAGS. Для нас будет важен флаг SF, в который заносится знаковый (крайний правый) бит результата, и флаг ZF, который устанавливается в 1, если результат равен нулю, в противном случае этот флаг устанавливается в 0.

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

Тип файла
Документ
Размер
1,7 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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