 
        
        - •4. Лекция. Представление чисел в компьютерах. Двоичная арифметика. Точность вычислений. Память компьютеров и адреса.
- •4.1. Числа, арифметические операции и символы
- •4.1.1. Представление целых чисел
- •4.1.2. Сложение положительных целых чисел
- •4.1.3. Сложение и вычитание целых чисел со знаком
- •4.1.4. Переполнение в целочисленной арифметике
- •4.2. Символы
- •4.3. Обработка чисел с плавающей запятой
- •4.3.1. Стандарт ieee для чисел с плавающей запятой
- •4.3.2. Арифметические операции над числами с плавающей запятой
- •4.3.3. Точность вычислений. Разряды защиты и усечение
- •4.4. Память и адреса
- •4.5. Операции доступа к памяти. Коды ascii символов.
4.5. Операции доступа к памяти. Коды ascii символов.
И команды программ, и данные, являющиеся операндами этих команд, хранятся в памяти. Для выполнения команды управляющие схемы процессора должны инициировать пересылку содержащего ее слова или слов из памяти в процессор.
Операнды и результаты также должны пересылаться между памятью и процессором. Таким образом, для выполнения команды программы необходимо произвести две операции с памятью: Load (или Read, или Fetch), то есть загрузка (или чтение, или выборка соответственно) и Store (или Write), то есть сохранение (или запись).
Операция загрузки пересылает в процессор копию содержимого памяти по заданному адресу. При этом содержимое памяти остается неизменным. Для того чтобы начать операцию загрузки, процессор отсылает в память адрес и запрашивает содержимое памяти по этому адресу. Память считывает соответствующие данные и пересылает их в процессор.
Операция сохранения пересылает элемент информации из процессора в память по заданному адресу, уничтожая предыдущие данные, хранившиеся по этому адресу. Для выполнения такой операции процессор отсылает в память данные и адрес, по которому они должны быть записаны.
Информацию из одного слова или одного байта можно переслать между процессором и памятью за одну операцию. Как рассказывалось в раньше, процессор содержит небольшое количество регистров, вмещающих по одному слову. Эти регистры служат либо источниками, либо приемниками данных, пересылаемых в память и из памяти. Пересылаемый байт обычно располагается в младшей (крайней справа) позиции в регистре.
- Пример доступа к памяти персонального компьютера. 
Механизм доступа к памяти персонального компьютера на базе процессора Intel рассмотрим на примере того же фрагмента программы, который приводился в предыдущей лекции.
mov bx,loca ;загрузка содержимого поля данных с именем loca в регистр
add ax,bx ;сложение содержимого двух регистров ax и bx,
 ;результат помещается в ax
Вся память компьютера делится на сегменты, и для размещения в памяти компьютера любой программы ей выделяется необходимое количество сегментов памяти. Адреса начала каждого сегмента (индекс в таблице дескрипторов) хранятся в специальных сегментных регистрах. Программа, фрагмент которой приведен выше, использует два сегмента памяти:
- сегмент кода, в котором расположены выполнимые команды программы; 
- сегмент данных, в котором расположены обрабатываемые данные программы. 
На рис.4.9. приведено расположение программы в памяти компьютера. Программа расположена в двух сегментах, сегменте кода и сегменте данных. Команды и данные располагаются в своих сегментах непрерывно, начиная с нулевого адреса (смещения).
| Сегмент кода | 
 | Сегмент данных | ||
| Адресация внутри сегмента (смещение относительно начала) | Содержимое памяти (коды команд) | 
 | Адресация внутри сегмента (смещение относительно начала) | Содержимое памяти (двоичные чисела) | 
| 0000 | 
 | 
 | 0000 | 
 | 
| 0004 | 
 | 
 | 0004 | 
 | 
|  | 
 | 
 | 0008 | 
 | 
| 
 | 
 | 
 |  | 
 | 
| 03D8 | 8B 1E 00 42 | 
 | 
 | 
 | 
| 03DC | 03 C3 | 
 | 0042 | FF F6 (-1010) | 
| 03DE | Следующая команда | 
 | 0044 | FF FF FF FB (-510) | 
|  | 
 | 
 | 0048 | 
 | 
| 
 | 
 | 
 |  | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
Рис 4.9. Расположение программы в памяти персонального компьютера
Команды загружаются в процессор для выполнения в соответствии с адресами, которые формируются регистре PC (Program Counter). Команда mov загружается из памяти в процессор на основании содержимого регистра PC, который формируется при выполнении предыдущей команды. Там она попадает в регистр IR (Instruction Regisetr) процессора. Адрес в регистре PC сформирован с использованием двух адресов:
- адреса начала сегмента кода; 
- адреса внутри сегмента (смещения относительно начала), в нашем случае этот адрес в сегменте равен 03D8h. 
Команда mov осуществляет обращение к памяти в сегмент данных для загрузки в регистр bx числа -1010 (FFF6h). Адрес памяти, по которому находится требуемое данное, помещается в регистр MAR (Memory Address Register) в результате расшифровки кода команды. Адрес в регистре MAR в данном случае также формируется на основании двух адресов:
- адреса начала сегмента данных; 
- адреса внутри сегмента (смещения относительно начала), в нашем случае этот адрес в сегменте равен 0042h. 
После этого дается команда памяти доставить данное число, и оно через регистр MDR (Memory Data Register) попадает в регистр bx процессора.
В процессе выполнения этой команды PC формируется адрес следующей команды, которая будет загружена в следующем такте процессора.
Вопросы для самопроверки.
- Почему в большинстве компьютеров для представления отрицательных чисел используется дополнительный код? 
- Когда при выполнении арифметических операций возникает переполнение? 
- Какими порядками может оперировать компьютер при обработке целых и вещественных чисел? 
- Что такое нормализованное представление числа? 
- Каким может быть размер памяти компьютера, если регистр MAR 32-разрядный? 
Таблица 4.1 КОДЫ ASCII-СИМВОЛОВ
| Шест 
 | Символ 
 | Шест 
 | Символ 
 | Шест 
 | Символ 
 | Шест 
 | Симв 
 | 
| 00Н 
 | Нуль 
 | 20Н 
 | sр. 
 | 40Н 
 | @ 
 | 60Н 
 | ‘ 
 | 
| 01Н 
 | Начало заголовка 
 | 21Н 
 | ! 
 | 41Н 
 | А 
 | 61Н 
 | а 
 | 
| 02H 
 | Начало текста 
 | 22Н 
 | “ 
 | 42Н 
 | В 
 | 62Н 
 | b 
 | 
| 03H 
 | Конец текста 
 | 23Н 
 | # 
 | 43Н 
 | С 
 | 63Н 
 | с 
 | 
| 04Н 
 | Конец передачи 
 | 24Н 
 | $ 
 | 44Н 
 | D 
 | 64Н 
 | d 
 | 
| 05Н 
 | КТМ 
 | 25Н 
 | % 
 | 45Н 
 | Е 
 | 65Н 
 | е 
 | 
| 06Н 
 | Да 
 | 26Н 
 | & 
 | 46Н 
 | F 
 | 66Н 
 | f 
 | 
| 07Н 
 | Звонок 
 | 27Н 
 | ` 
 | 47Н 
 | G 
 | 67Н 
 | g 
 | 
| 08Н 
 | Возврат на шаг 
 | 28Н 
 | ( 
 | 48Н 
 | Н 
 | 68Н 
 | h 
 | 
| 09Н 
 | Горизонтальная табуляция 
 | 29Н 
 | ) 
 | 49Н 
 | I 
 | 69Н 
 | i 
 | 
| 0АН 
 | Перевод строки 
 | 2АН 
 | * 
 | 4АН 
 | J 
 | 6АН 
 | j 
 | 
| 0ВН 
 | Вертикальная табуляция 
 | 2ВН 
 | + 
 | 4ВН 
 | К 
 | 6ВН 
 | k 
 | 
| 0CH 
 | Прогон страницы 
 | 2СН 
 | , 
 | 4СН 
 | L 
 | 6CH 
 | l 
 | 
| 0DН 
 | Возврат каретки 
 | 2DН 
 | - 
 | 4DH 
 | М 
 | 6DH 
 | m 
 | 
| 0ЕН | Shift out 
 | 2ЕН 
 | . 
 | 4ЕН 
 | N 
 | 6EH 
 | n 
 | 
| 0FH 
 | Shift In 
 | 2FH 
 | / 
 | 4FH 
 | 0 
 | 6FH 
 | о 
 | 
| 10Н 
 | Data line esc 
 | З0Н 
 | 0 
 | 50Н 
 | Р 
 | 70H 
 | p 
 | 
| 11Н 
 | Управление 1 
 | 31Н 
 | 1 
 | 51Н 
 | Q 
 | 71H 
 | q 
 | 
| 12Н 
 | Управление 2 
 | 32Н 
 | 2 
 | 52Н 
 | R 
 | 72H 
 | r 
 | 
| 13Н 
 | Управление 3 
 | ЗЗН 
 | 3 
 | 53Н 
 | S 
 | 73H 
 | s 
 | 
| 14Н 
 | Управление 4 
 | 34Н 
 | 4 
 | 54Н 
 | Т 
 | 74H 
 | t 
 | 
| 15Н 
 | Нет 
 | 35Н 
 | 5 
 | 55Н 
 | U 
 | 75H 
 | u 
 | 
| 16Н 
 | Синхронизация 
 | З6Н 
 | 6 
 | 56Н 
 | V 
 | 76H 
 | v 
 | 
| 17Н 
 | Конец блока 
 | 37Н 
 | 7 
 | 57Н 
 | W 
 | 77H 
 | w 
 | 
| 18Н 
 | Аннулирование 
 | 38Н 
 | 8 
 | 58Н 
 | Х 
 | 78H 
 | x 
 | 
| 19Н 
 | End of medium 
 | 39Н 
 | 9 
 | 59Н 
 | Y 
 | 79H 
 | у 
 | 
| 1АН 
 | Замена 
 | ЗАН 
 | ; 
 | 5АН 
 | Z 
 | 7AH 
 | z 
 | 
| 1ВН 
 | Escape 
 | ЗВН 
 | ; 
 | 5ВН 
 | [ 
 | 7BH 
 | { 
 | 
| 1СН 
 | Разделение файла 
 | ЗСН 
 | < 
 | 5СН 
 | \ 
 | 7CH 
 | | 
 | 
| 1DН 
 | Разделение группы 
 | ЗDН 
 | « 
 | 5DH 
 | 
 
 | 7DH 
 | } 
 | 
| 1ЕН 
 | Разделение записи 
 | ЗЕН 
 | > 
 | 5ЕН 
 | ^ 
 | 7EH 
 | ~ 
 | 
| 1FH 
 | Разделение единицы 
 | 3FH 
 | ? 
 | 5FH 
 | _ 
 | 7FH 
 | Забой 
 | 
	
		 
		
