- команды прохода цикла выполняются хотя бы один раз;
- LOOP осуществляет переход типа SHORT, поэтому проход цикла не должен занимать ³128Б (»30-40 команд); если нужен более длинный проход цикла, то используется сочетание условных и безусловных переходов;
- CX может использоваться как операнд в цикле, но не должен изменяться другими командами.
Есть и другие команды управления циклом. Например, команды перехода по циклу с дополнительным условием, а именно с учетом флага ZF. Можно использовать 2 эквивалентные записи:
LOOPE op
LOOPZ op
Здесь цикл повторяется CX раз, пока сохраняется ZF=1, что соответствует сложному условию передачи управления CX<>0 AND ZF=1. Эти команды управления циклом обычно используются для решения задач поиска в последовательностях, их основной недостаток состоит в том, что неочевидна причина выхода их цикла, и требуется дополнительный анализ по окончании цикла.
Представление данных в ПЭВМ
1. Целые числа
ЭВМ поддерживает работу с числами, длиной в :
- байт (1Б);
- слово (2Б);
- двойное слово (4Б);
Выделяются 2 типа целых чисел:
- беззнаковые (неотрицательные);
- числа со знаком.
Это позволяет использовать 2 диапазона чисел. Например, для 1 байта
- беззнаковое целое от 0 до 255 (28 – 1),
- целое со знаком по модулю от 0 до 127 (27 – 1).
а) Беззнаковые числа представляются в двоичной системе, занимая все разряды ЯП.
Например, для десятичного числа 98 = 62h = 01100010B требуется 1Б, можно использовать слово 0062h (2Б). Слово в памяти располагается в польской инверсной записи, а в регистрах – в естественном порядке байтов.
Для чисел длиной в двойное слово – аналогично.
Например, число 12345678h в оперативной памяти по адресу w располагается следующим образом:
y | y+1 | y+2 | y+3 | ||
78 | 56 | 34 | 12 |
б) Целые числа со знаком представляются в дополнительном коде, т. е.
ì Х доп.= í î | Х, Х>0 |
2к-|X|, X<0 , |
где k – разрядность ЯП.
Например, для числа -98 = 9Eh (1 Б)= FF9Eh (слово 2Б).
Для облегчения перевода в дополнительный код используется алгоритм:
- все цифры, кроме младшей заменяются инверсией, т. е. для 16-ричной системы счисления (15 – {цифра});
- последняя (младшая) цифра заменяется дополнением, т. е. (16 – {цифра});
- правые нулевые разряды не изменяются, и младшим разрядом считается самый правый ненулевой разряд.
Обратный перевод в прямой код из дополнительного выполняется по тому же алгоритму.
В памяти числа длиной в слово или двойное слово хранятся в польской инверсной записи, причем знаковый разряд попадает в последний байт.
2. Двоично-десятичные числа (BCD)
Существуют классы задач, для которых характерен ввод и выводом больших массивов числовых данных с последующим применением небольшого числа арифметических операций. Для этого случая используется двоично-десятичное представление чисел (BCD – Binary Coded Decimal), которое образуется следующим образом:
- каждая десятичная цифра представляется двоичной тетрадой, т. е. используются цифры от 0 до 9, а цифры от A до F - не используются.
Имеется 2 разновидности BCD-формата:
а) неупакованный формат – в каждом байте в младшей тетраде размещается код десятичной цифры, а значение старшей тетрады байта игнорируется. Этот формат используется при вводе и выводе чисел, и содержимое старшей тетрады определяется в соответствии с ASCI I.
Например, для положительного числа получим код
9806 Þ хххх1001хххх1000хххх0000хххх0110 (4 Б);
б) упакованный формат – в каждом байте хранятся две цифры.
Например, для того же числа получим код
9806 Þ 1001100000000110 (2 Б).
Отрицательные числа в BCD представляются в дополнительном коде. Алгоритм формирования дополнительного кода описан выше, но для BCD формата имеет вид:
- все цифры, кроме младшей заменяются инверсией, т. е. (9 – {цифра});
- последняя (младшая) цифра заменяется дополнением, т. е. (10 – {цифра});
- правые нулевые разряды не изменяются, и младшим разрядом считается самый правый ненулевой разряд.
Знак хранится и обрабатывается в отдельном байте, который заполнен нулями, кроме старшего бита, который для отрицательного числа устанавливается в 1.
Например, для числа 561 в упакованном формате получим
561 Þ 00000101 01100001 (2 Б)
для отрицательного числа
[-567]доп = | 10000000 | 1001 0100 | 0011 1001 |
знак | 9 4 | 3 9 |
В памяти числа хранятся в польской инверсной записи(LEM)
3. Символьные данные
Символьные данные хранятся в памяти ПЭВМ в двоично-кодированном виде, причем каждый символ кодируется одним байтом, что позволяет закодировать 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’) | код(‘в’) | код(‘_’) | код(‘с’) |
4. Вещественные данные
Вещественные данные обрабатываются сопроцессором 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 (параграф).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


