Государственное Образовательное Учреждение высшего профессионального образования Московский Авиационный Институт Государственный Технический Университет "маи" кафедра 304. конспект
Вид материала | Конспект |
СодержаниеСимвольные данные Вещественные данные Вещественные числа Работа со стеком |
- Инновационной образовательной программы, 1090.47kb.
- Самостоятельная работа 2 часа в неделю всего часов, 28.69kb.
- Самостоятельная работа 2 часа в неделю всего часов, 45.89kb.
- Самостоятельная работа 2 часа в неделю всего часов, 73.46kb.
- Самостоятельная работа 2 часа в неделю всего часов, 46.6kb.
- Самостоятельная работа 2 часа в неделю всего часов, 41.37kb.
- Самостоятельная работа 2 часа в неделю всего часов, 41.08kb.
- Самостоятельная работа 2 часа в неделю всего часов, 64.33kb.
- Самостоятельная работа 2 часа в неделю всего часов, 29.72kb.
- Самостоятельная работа 2 часа в неделю всего часов, 33.42kb.
Символьные данные
Символьные данные хранятся в памяти ПЭВМ в двоично-кодированном виде, причем каждый символ кодируется одним байтом, что позволяет закодировать 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’) | код(‘в’) | код(‘_’) | код(‘с’) | |
Вещественные данные
Вещественные данные обрабатываются сопроцессором 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Б для автоматического использования.