Государственное Образовательное Учреждение высшего профессионального образования Московский Авиационный Институт Государственный Технический Университет "маи" кафедра 304. конспект

Вид материалаКонспект

Содержание


Символьные данные
Вещественные данные
Вещественные числа
Работа со стеком
Подобный материал:
1   2   3   4   5   6   7   8   9   10   ...   15

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


Символьные данные хранятся в памяти ПЭВМ в двоично-кодированном виде, причем каждый символ кодируется одним байтом, что позволяет закодировать 256 различных символов.

Используется система кодирования ASCI I (American Standard Code for Information Interchange) – американский стандартный код для информационного обмена.

Основные особенности кодировки ASCI I:
  • код пробела меньше кода любого графически представляемого символа и не является нулевым байтом;
  • коды цифр упорядочены по возрастанию и идут без пропусков

код(i) = код(‘0’)+i,

где i - цифра от 1-9,

код(‘0’) <> нулю (т.е. не нулевой байт);
  • коды заглавных латинских букв упорядочены по алфавиту без пропусков;
  • то же верно для малых латинских букв;

Для кодирования кириллицы используются несколько альтернативных кодировок.

Например, в кодировке CP1251, широко используемой в системах Microsoft Windows коды букв кириллицы (заглавных и строчных) также упорядочены по алфавиту.

Строки символов, т.е. их последовательности размещаются в оперативной памяти в естественном порядке, начиная с определенного адреса.

Например: строка ‘Ав_с»’ будет представлена в памяти по адресу x последовательностью байтов

x

x+1

x+2

x+3




код(‘A’)

код(‘в’)

код(‘_’)

код(‘с’)



  1. Вещественные данные


Вещественные данные обрабатываются сопроцессором Intel 8087 (вспомогательным процессором). Современные МП типа Pentium имеют встроенный сопроцессор. Сопроцессор позволяет выполнить дополнительный набор арифметических команд над числами разных типов:
    • целые со знаком (2Б);
    • короткие целые со знаком (4Б);
    • длинные целые со знаком (8Б);
    • упакованные BCD-формата (10Б);
    • короткие вещественные (4Б);
    • длинные вещественные (8Б)
    • временные вещественные (10Б).

В упакованном BCD-формате число занимает 10 байтов, причем первый байт – знак числа, остальные 9Б могут хранить 18 цифр.

Например: числа в сопроцессоре представлены в виде

00 00 00 00 00 12 34 56 78 90 - положительное число,

80 99 99 99 99 87 65 43 21 00 - отрицательное число.

При вводе знак “+“ не требуется, достаточно записать все значащие цифры числа.

Вещественные числа представляются в экспоненциальной форме

А = М * 2Р ,

где М – мантисса числа,

р – двоичный порядок числа.

Порядок определяет положение дробной точки в числе. Для упрощения арифметики используется смещенный порядок (характеристика) числа р*. Нулевой порядок смещается на 127, тогда порядок числа вычисляется по формуле

p = р*-127

Мантисса представляется в нормализованном виде в двоичной системе счисления так, чтобы старшая цифра находилась в разряде целых единиц. Т.к. эта цифра присутствует всегда к=1, то ее наличие подразумевается, а в памяти ее не хранят.

Для вещественных чисел используют 3 формата:
  • короткое вещественное (4Б)

31

30 23

22 0




характеристика

мантисса

знак








  • длинное вещественное (8Б)

63

62 52

51 0




характеристика

мантисса

знак








  • временное вещественное

79

78 64

63 0




характеристика

мантисса

знак







В сопроцессоре есть восемь 10-байтовых регистров. Набор этих регистров чаще всего используется в режиме стека, но можно обращаться к конкретному регистру по имени от ST(0) до ST(7).


Работа со стеком


Стек – это область оперативной памяти, запись и чтение данных в которой основан на принципе LIFO (Last input first output, т.е. «последним пришел – первым ушел»).

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

Стек организуется программно в памяти, для стека можно отвести любую область памяти, удовлетворяющую двум требованиям:
  • максимальная емкость 64КБ (32К слов),
  • конечный адрес должен быть кратным 16 (параграф).

Стек занимает один сегмент памяти, называемый сегментом стека, с сегментным регистром SS, указывающим на начало, т.е. базу стека. Для работы со стеком обычно используют косвенную адресацию через регистр SP – указатель стека, указывающий на текущую ячейку стека, называемую вершиной стека.

В начале работы с SP указывают на последнюю ячейку сегмента стека. При загрузке числа автоматически производится декремент SP := SP–2.

Считывание числа из стека сопровождается автоматическим инкрементом: SP := SP+2, причем считается, что ячейка стека свободна и готова для последующего использования, но ее содержимое после считывания не изменяется.

Для дополнительного обращения к элементам стека (не через вершину) можно использовать регистр ВР, называемый дополнительным указателем стека. Доступ к элементам стека через BP осуществляется на основе определённого расстояния о нужного слова до вершины стека и базовой адресацией:

mov BP,SP ; настройка на вершину стека

mov AX,[BP+4] ; эквивалентно mov AX,SS:[BP+4]

BP по умолчанию относится к сегменту стека, а не к сегменту данных!!!Если в программе нет явного использования стека, то необходимо его зарезервировать в объеме 128Б для автоматического использования.