- •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 формируется адрес следующей команды, которая будет загружена в следующем такте процессора.
Вопросы для самопроверки.
Почему в большинстве компьютеров для представления отрицательных чисел используется дополнительный код?
Когда при выполнении арифметических операций возникает переполнение?
Какими порядками может оперировать компьютер при обработке целых и вещественных чисел?
Что такое нормализованное представление числа?
Каким может быть размер памяти компьютера, если регистр IR 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
|
Забой
|