-  команды прохода цикла выполняются хотя бы один раз;

-  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