
- •2.4. Машинный язык и язык Ассемблера
- •2.5. Синаксис языка Ассемблера
- •2.6. Принципы работы Ассемблера
- •2.7. Биты, байты и слова
- •2.8. Нумерация бит
- •2.9. Набор символов
- •2.10. Принципы работы компьютера
- •2.11. Процедуры
- •2.12. Стек
- •2.13. Прерывания
- •3.1. Модель программирования 8088
- •3.2. Регистры общего назначения
- •3.3. Регистры адресации
- •3.4. Прямая адресация
- •3.5. Вычисление адресов
- •3.6. Адресация через базу и смещение
- •3.8. Байт mod r-m
- •3.9 Физическая адресация
- •3.10. Сегментные регистры
- •3.11. Предназначение сегментов
- •3.12. Оператор Segment
- •3.13. Оператор Assume
- •3.14. Управляющие рагистры
- •3.14.1. Указатель инструкций (ip)
- •3.14.2. Указатель стека
- •3.14.3. Регистр флагов
- •3.14.4. Флаг знака
- •3.14.5. Флаг нуля
- •3.14.6. Флаг четности
- •3.14.7. Флаг переноса
- •3.14.8. Дополнительный флаг переноса
- •3.14.9. Флаг переполнения
- •3.14.10. Флаг захвата
- •3.15. Векторы прерываний
- •Глава 4 - Набор команд микропроцессора 8088
- •4.1. Пересылка данных
- •4.1.1. Команда пересылки
- •4.1.2. Команда замены
- •4.1.3. Команды ввода и вывода
- •4.1.4. Загрузка исполнительного адреса
- •4.1.5. Загрузка указателя
- •4.1.6. Пересылка флагов
- •4.1.7. Перекодировка
- •4.2. Операции со стеком
- •4.3. Передача параметров
2.8. Нумерация бит
Иногда нам будет требоваться идентифицировать отдельные биты в байте или слове. Для этого мы называем номер бита. Индекс или номер каждого бита - это степень двойки, соответствующая позиции этого бита. Самый младший бит - нулевой, поскольку он представляет два в нулевой степени. Самый старший бит в байте - седьмой - 2**7. Самый старший бит в слове - 15-й. Фиг. 2.12 показывает 16-битовое слово с пронумерованными битами.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Фиг. 2.12 Нумерация бит
Такой способ нумерации бит принят во всей документации IBM PC.
2.9. Набор символов
Как мы заметили выше, мы можем рассматривать каждый байт информации не как двоичное число, а как символьное значение. Каждое из двоичных чисел от 0 до 255 может представлять определенный символ. Фиг. 2.13 показывает множество символов IBM PC. Колонки здесь соответствуют старшим 4 битам символьного кода, а ряды - младшим 4 битам этого кода. Так, позиция таблицы 41Н соответствует символу "A", а код 5ЕН представляет символ "^".
... |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
20 |
|
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
- |
. |
/ |
30 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
: |
; |
< |
= |
> |
? |
40 |
@ |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
50 |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
[ |
\ |
] |
^ |
_ |
60 |
` |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
70 |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
{ |
| |
} |
~ |
|
Фиг. 2.13 Набор символов IBM
Набор символов IBM PC является расширением набора символов ASCII (Американский стандартный код для обмена информацией). В наборе ASCII значения символов от 20Н до 7ЕН представляют обычные символы латинского алфавита, числовые символы и знаки препинания. Коды от 0Н до 1FH обычно служат управляюшими символами. На Фиг. 2.14 показаны управляющие символы ASCII из этого диапазона. Эти символы имеют значение при передаче на принтеры IBM или другие ASCII-принтеры. Однако на Фиг. 2.13 видно, что эти управляющие символы могут также появляться на экране в виде графических символов. В IBM PC управляющая часть таблицы ASCII используется для графических изображений, с целью более полно реализовать возможности видеоадапторов. Поскольку видеоадапторы могут изобразить любой из 256 кодов, то нет оснований строго регламентировать применение какого-либо из кодов. Разработчики рассматривали все 32 символа из управляющей части таблицы как предназначенные главным образом для графического изображения и обычно не печатаемые принтером. Короче говоря, первые 32 значения являются управляющими кодами при передаче их на принтер, но изображаются как графические символы при выводе их на дисплей.
Символьные значения от 80Н до 0FFH являются расширением набора символов ASCII для IBM PC. Эти символы подобраны разработчиками IBM так, чтобы расширить изобразительные возможности компьютера. Наборы иностранных, графических и научных символов позволяют использовать IBM PC в самых разнообразных приложениях.
Код |
Символ |
Значение |
00 |
NUL |
Пусто |
07 |
BEL |
Сигнал |
09 |
HT |
Горизонтальная табуляция |
0A |
LF |
Перевод строки |
0B |
VT |
Вертикальная табуляция |
0C |
FF |
Прогон страницы |
0D |
CR |
Возврат каретки |
0E |
SO |
Шаг назад |
0F |
SI |
Шаг вперед |
11 |
DC1 |
Управление 1 |
12 |
DC2 |
Управление 2 |
13 |
DC3 |
Управление 3 |
14 |
DC4 |
Управление 4 |
18 |
CAN |
Отмена |
1B |
ESC |
Выход |
Фиг. 2.14 Управляющие коды IBM
В некоторых случаях вы захотите вводить символьные коды в память для их дальнейшего использования программой. Примером может служить сообщение, которое в определенный момент выполнения программы должно быть выдано оператору. Вместо потска кодов символов в таблице, мы можем сразу ввести строку символов в текст программы. Ассемблер позволяет это сделать с помощю оператора DB.
Microsoft (R) Macro Assembler Version 5.00 10/31/88 22:30:38
Фиг. 2.15 Определение байтов для текста ASCII Page 1-1
1 PAGE ,132
2 TITLE Фиг. 2.15 Определение байтов для текста ASCII
3
4 0000 9D E2 AE 20 E1 AE AE DB 'Это сообщение',10,13
5 A1 E9 A5 AD A8 A5 0A
6 0D
7
8 END
Фиг. 2.15 Определение байтов для текста ASCII
В поле операндов мы вместо ввода чисел (кодов) помещаем заключенную в кавычки строку символов. Ассемблер подберет соответствующие значения кодов и поместит их в память - каждый символ в отдельный байт. Так ассемблер может работать только с символами в диапазоне от 20Н до 0FFH. в диапазоне от 0Н до 1FH символы должны вводиться в программу в виде чисел, а не ограниченной кавычками строки. Это связано с тем, что в тексте исходного файла некоторые управляющие символы используются для обозначения начала и конца строки.
Пример на Фиг. 2.15 показывает создание 15 байт данных в программе. Первые 13 байтов соответствуют 13-ти символам текстовой строки заключенной в кавычки. Первый байт имеет значение 9DH, второй 0E2H и т.д. Последние два байта в 17-ти байтном сообщении - это коды возврата каретки и переводаа строки. Если мы отправим это 17-байтное собщение на принтер, он напечатает заключенный в кавычки текст. Управляющие символы предписывают принтеру перейти после этого на следующую строку документа.