ЯЗЫК МАКРОАССЕМБЛЕРА IBM PC
(Справочное пособие)
Составитель: В.Н.Пильщиков (МГУ, ВМК)
(январь 1992 г.)
В пособии рассматривается язык макроассеблера для персональных ЭВМ
типа IBM PC (язык MASM, версия 4.0).
Пособие состоит из 4 глав. В главе 1 рассмотрены особенности пер-
сональных компьютеров типа IBM PC и приведены начальные сведения о
языке MASM. В главе 2 описывается система команд этих компьютеров.
Глава 3 посвящена посвящена собственно языку MASM. В главе 4 приведены
примеры фрагментов программ и полных программ на MASM для решения раз-
личных задач.
В пособии не рассматриваются вопросы, связанные с обработкой дво-
ично-десятичных чисел и работой арифметического сопроцессора 8087 или
80287.
Под термином "ПК" в пособии понимается персональный компьютер типа
IBM PC c микропроцессором 8088/8086, 80186 или 80286.
ГЛАВА 1. ОСОБЕННОСТИ ПК. ВВЕДЕНИЕ В MASM.
1.1. ОПЕРАТИВНАЯ ПАМЯТЬ. РЕГИСТРЫ.
1.1.1 Оперативная память
Объем оперативной памяти ПК - 2^20 байтов (1 Мб). Байты нумеруются
начиная с 0, номер байта называется его адресом. Для ссылок на байты
памяти используются 20-разрядные адреса: от 00000 до FFFFF (в 16-рич-
ной системе).
Байт содержит 8 разрядов (битов), каждый из которых может прини-
мать значение 1 или 0. Разряды нумеруются справа налево от 0 до 7:
-----------------
| | | | | | | | |
-----------------
7 6 5 4 3 2 1 0
Байт - это наименьшая адресуемая ячейка памяти. В ПК используются
и более крупные ячейки - слова и двойные слова. Слово - это два сосед-
них байта, размер слова - 16 битов (они нумеруются справа налево от 0
до 15). Адресом слова считается адрес его первого байта (с меньшим ад-
ресом); этот адрес может быть четным и нечетным. Двойное слово - это
любые четыре соседних байта (два соседних слова), размер такой ячейки
- 32 бита; адресом двойного слова считается адрес его первого байта.
Байты используются для хранения небольших целых чисел и символов,
слова - для хранения целых чисел и адресов, двойные слова - для хране-
ния "длинных" целых чисел и т.н. адресных пар (сегмент:смещение).
1.1.2 Регистры
Помимо ячеек оперативной памяти для хранения данных (правда, крат-
ковременного) можно использовать и регистры - ячейки, входящие в сос-
тав процессора и доступные из машинной программы. Доступ к регистрам
осуществляется значительно быстрее, чем к ячейкам памяти, поэтому ис-
пользование регистров заметно уменьшает время выполнения программ.
Все регистры имеют размер слова (16 битов), за каждым из них зак-
реплено определенное имя (AX, SP и т.п.). По назначению и способу
использования регистры можно разбить на следующие группы:
- регистры общего назначения (AX, BX, CX, DX, BP, SI, DI, SP);
- сегментные регистры (CS, DS, SS, ES);
- счетчик команд (IP);
- регистр флагов (Flags).
(Расшифровка этих названий: A - accumulator, аккумулятор; B - base,
база; C - counter, счетчик; D - data, данные; BP - base pointer, ука-
затель базы; SI - source index, индекс источника; DI - destination
index, индекс приемника; SP - stack pointer, указатель стека; CS -
code segment, сегмент команд; DS - data segment, сегмент данных; SS -
stack segment, сегмент стека; ES - extra segment, дополнительный сег-
мент; IP - instruction pointer, счетчик команд.)
Регистры общего назначения можно использовать во всех арифметичес-
ких и логических командах. В то же время каждый их них имеет опреде-
ленную специализацию (некоторые команды "работают" только с определен-
ными регистрами). Например, команды умножения и деления требуют, чтобы
один из операндов находился в регистре AX или в регистрах AX и DX (в
зависимости от размера операнда), а команды управления циклом исполь-
зуют регистр CX в качестве счетчика цикла. Регистры BX и BP очень час-
то используются как базовые регистры, а SI и DI - как индексные. Ре-
гистр SP обычно указывает на вершину стека, аппаратно поддерживаемого
в ПК.
Регистры AX, BX, CX и DX конструктивно устроены так, что возможен
независимый доступ к их старшей и младшей половинам; можно сказать,
что каждый из этих регистров состоит из двух байтовых регистров, обо-
значаемых AH, AL, BH и т.д. (H - high, старший; L - low, младший):
----------- ----------- ----------- -----------
AX | AH | AL | BX | BH | BL | CX | CH | CL | DX | DH | DL |
----------- ----------- ----------- -----------
15 8 7 0
Таким образом, с каждым из этих регистров можно работать как с единым
целым, а можно работать и с его "половинками". Например, можно запи-
сать слово в AX, а затем считать только часть слова из регистра AH или
заменить только часть в регистре AL и т.д. Такое устройство регистров
позволяет использовать их для работы и с числами, и с символами.
Все остальные регистры не делятся на "половинки", поэтому считать
или записать их содержимое (16 битов) можно только целиком.
Сегментные регистры CS, DS, SS и ES не могут быть операндами ника-
ких команд, кроме команд пересылки и стековых команд. Эти регистры ис-
пользуются только для сегментирования адресов (см. 1.4).
Счетчик команд IP всегда содержит адрес (смещение от начала про-
граммы) той команды, которая должна быть выполнена следующей (начало
программы хранится в регистре CS). Содержимое регистра IP можно изме-
нить только командами перехода.
1.1.3 Флаги
И, наконец, в ПК имеется особый регистр флагов. Флаг - это бит,
принимающий значение 1 ("флаг установлен"), если выполнено некоторое
условие, и значение 0 ("флаг сброшен") в противном случае. В ПК ис-
пользуется 9 флагов, каждому из них присвоено определенное имя (ZF, CF
и т.д.). Все они собраны в регистре флагов (каждый флаг - это один из
разрядов регистра, часть его разрядов не используется):
-------------------------------------------------
Flags | x| x| x| x|OF|DF|IF|TF|SF|ZF| x|AF| x|PF| x|CF|
-------------------------------------------------
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Некоторые флаги принято называть флагами условий; они автоматичес-
ки меняются при выполнении команд и фиксируют те или иные свойства их
результата (например, равен ли он нулю). Другие флаги называются фла-
гами состояний; они меняются из программы и оказывают влияние на даль-
нейшее поведение процессора (например, блокируют прерывания).
Флаги условий:
CF (carry flag) - флаг переноса. Принимает значение 1, если при
сложении целых чисел появилась единица переноса, не "влезающая" в раз-
рядную сетку, или если при вычитании чисел без знака первое из них бы-
ло меньше второго. В командах сдвига в CF заносится бит, вышедший за
разрядную сетку. CF фиксирует также особенности команды умножения.
OF (overflow flag) - флаг переполнения. Устанавливается в 1, если
при сложении или вычитании целых чисел со знаком получился результат,
по модулю превосходящий допустимую величину (произошло переполнение
мантиссы и она "залезла" в знаковый разряд).
ZF (zero flag) - флаг нуля. Устанавливается в 1, если результат
команды оказался равным 0.
SF (sign flag) - флаг знака. Устанавливается в 1, если в операции
над знаковыми числами получился отрицательный результат.
PF (parity flag) - флаг четности. Равен 1, если результат очеред-
ной команды содержит четное количество двоичных единиц. Учитывается
обычно только при операциях ввода-вывода.
AF (auxiliary carry flag) - флаг дополнительного переноса. Фикси-
рует особенности выполнения операций над двоично-десятичными числами.
Флаги состояний:
DF (direction flag) - флаг направления. Устанавливает направление
просмотра строк в строковых командах: при DF=0 строки просматриваются
"вперед" (от начала к концу), при DF=1 - в обратном направлении.
IF (interrupt flag) - флаг прерываний. При IF=0 процессор переста-
ет реагировать на поступающие к нему прерывания, при IF=1 блокировка
прерываний снимается.
TF (trap flag) - флаг трассировки. При TF=1 после выполнения каж-
дой команды процессор делает прерывание (с номером 1), чем можно вос-
пользоваться при отладке программы для ее трассировки.
1.2. ПРЕДСТАВЛЕНИЕ ДАННЫХ. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
Здесь рассматривается машинное представление целых чисел, строк и
адресов. Представление двоично-десятичных чисел, используемых доста-
Похожие работы
-
Архитектура персональных компьютеров IBM PC
Выбор компьютера
Звуковые системы IBM PC
Изучение системы команд микропроцессора Intel 8086 и аппаратных особенностей ПЭВМ IBM PC
Краткие сведения об IBM РС - совместимых компьютерах
Основные сведения о IBM
Рынок IBM PC
Сборка и монтаж отдельных узлов ЭВМ
Устройство дистанционного управления сопряженное с шиной компьютера IBM PC
Устройство ПЭВМ фирмы IBM. Периферийное оборудование. Назначение и история создания ПЭВМ