- •Структура мп ix86 фирмы Intel
- •Регистры общего назначения (регистры данных)
- •Регистры-указатели
- •Регистры сегментов (сегментные регистры)
- •Указатель команд и регистр флагов
- •Сегментация памяти
- •Структура команд мп
- •Формат «Регистр-регистр» (Рг-Рг) – 2 байта
- •Формат «Регистр-память» (Рг-яп) – 2÷4 байта
- •Формат «Регистр-непосредственный операнд» (Рг-но) – 3÷4 байта
- •Формат «Память-непосредственный операнд» (яп-но) – 3÷6 байтов
- •Представление данных в пэвм
- •Целые числа
- •Двоично-десятичные числа (bcd)
- •Символьные данные
- •Вещественные данные
- •Система команд мп семейства iх86 фирмы Intel
- •Команды сложения и вычитания
- •Дополнительные команды
- •Команды умножения и деления
- •Команды преобразования длины
- •Стековые команды
- •Доступ к элементам стека с помощью регистра вр
- •Команды передачи управления
- •Близкие и далекие переходы.
- •Адресация в переходах.
- •Конструкции языка Ассемблера Литература
Двоично-десятичные числа (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 |
В памяти числа хранятся в польской инверсной записи.
Символьные данные
Символьные данные хранятся в памяти ПЭВМ в двоично-кодированном виде, причем каждый символ кодируется одним байтом, что позволяет закодировать 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’) |
код(‘в’) |
код(‘_’) |
код(‘с’) |
|