Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / СПО2.doc
Скачиваний:
114
Добавлен:
11.02.2014
Размер:
527.87 Кб
Скачать

25. Регистры общего назначения. Команда mov.

РОН являются основными рабочими регистрами ассемблерных программ. Их отличает то, что к ним можно адресоваться одним словом или однобайтовым кодом. Левый байт считается старшим, правый – младшим.

Регистр АХ является основным сумматором и применяется во всех операциях ввода-вывода, в некоторых операциях со строками и в некоторых арифметических операциях.

НАПРИМЕР, команды умножения, деления и сдвига предполагают использование регистра АХ . ( АХ: \ AH \ AL)

Регистр ВХ – базовый регистр, единственный из регистров общего назначения, используемый в индексной адресации. Кроме того, регистр ВХ используется при вычислениях. ( ВХ: \ ВH \ ВL)

Регистр СХ – регистр-счетчик. Используется для организации цикла или в командах сдвига влево или вправо. ( СХ: \ СH \ СL)

Регистр DХ – регистр данных. Используется в некоторых операциях ввода / вывода, в операциях умножения и деления больших чисел совместно с регистром АХ.(DХ:\ DH \ DL)

Любой из РОН может быть использован для суммирования или вычитания 8-, 16- или 32-разрядных величин.

Команда mov.

Команда Mov - Пересылка (байта или слова). Признаки не меняются.

Рассмотрим примеры использования данной команды с применением имен, имен в квадратных скобках и чисел. Предположим, WORDAS – слово в памяти.

Mov AX, BX переслать содержимое ВХ в регистр АХ

Mov АХ, 28 переслать значение 28 в регистр АХ

Mov АХ, WORDAS переслать WORDAS в регистр АХ

Mov AX, [BX] переслать содержимое памяти по адресу в регистре ВХ в регистр АХ

Mov AX, [28] переслать содержимое по смещению 28

26. Назначение сегментов. Реализация арифметических операций на ассемблере. Назначение сегментов

Сегмент – некоторая область памяти, которая начинается на границе параграфа, т.е. по адресу кратному 16.

Существует 3 сегмента размером до 64 КБт, которые располагаются в любом месте памяти.

  1. Регистр CS – регистр сегмента кода – содержит начальный адрес этого сегмента.

В сегменте кода содержится все машинные команды, которые необходимо выполнить в сегменте кода (по аналогии begin ….end).

2. Регистр DS – регистр сегмента данных – содержит начальный адрес сегмента данных.

В сегменте данных расположены константы и различные рабочие области.

3. Регистр SS – регистр сегмента стека – содержит адрес возврата в операционную систему, а также используется для вызова подпрограмм.

4. Дополнительные регистры сегмента данных ES, GS, FS

При их использовании их адреса должны быть указаны явно с помощью специальных префиксов переопределения сегментов в команде. Все адреса команд относительны начала сегмента. Такие адреса называются СМЕЩЕНИЕМ.

Для обращения по любому адресу в программе компьютер складывает адрес в регистре сегмента со смещением.

Размер смещения: 0000 до FFFF (15*163+15*162+15*16+15= 65535)

Формирование физического адреса:

  1. адрес в регистре сегмента умножается на 10h.

  2. к полученному числу прибавляется соответствующее смещене.

h – 16; b – 2; d – 10; 0 – 8.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Регистр IP – регистр указания команд – в этом регистре хранится смещение выполняемой команды.

Регистр E Flogs – 32-х разрядный регистр – регистр флагов.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Машинный язык предполагает организацию операций вычислений или запись команд в виде совокупности цифр 16 – ой системы.

КОМАНДА ADD (СЛОЖЕНИЕ) И SUB (ВЫЧИТАНИЕ)

Команда ADD (сложение) и SUB (вычитание) выполняют сложение и вычитание байтов или слов, содержащих двоичные данные. Вычитание осуществляется в компьютере по методу сложения с двоичным дополнением: для второго операнда устанавливаются обратные значения битов, и прибавляется 1, а затем происходит сложение с первым операндом. Во всем, кроме первого шага операции сложения и вычитания идентичны. Оба операнда могут быть байтами или словами, и оба операнда могут быть двоичными числами со знаком или без знака.

Возможные ситуации сложения / вычитания: регистр – регистр, регистр – память, память – регистр, регистр – непосредственное значение, память – непосредственное значение.

НАПРИМЕР

ADD ВН, 10h непосредственное значение и регистр ВН

ADD АХ, ВХ регистр и регистр

ADD WORDAS, СХ память и регистр

ADD АХ, [DХ] регистр и память

SUB WORDAS, BХ регистр и3 память

SUB BХ, 100h непосредственное значение из регистр

SUB WORDAS, 16h непосредственное значение из памяти

Один байт содержит знаковый бит и семь битов данных, т.е. результат арифметической операции может легко превзойти емкость регистра, и возникает переполнение. Полное слово имеет также ограничение, что ограничивает возможности компьютера для выполнения арифметической операции. Поэтому используют специальные сопроцессоры, которые быстро и эффективно выполняют эти операции, представляя числа в специальных кодах. Иногда вместо команды ADD используют команду ADC – сложение с переносом, которая складывает два значения и, если флаг уже установлен, к сумме прибавляется 1.для аналогичных целей (вычитание с заемом) вместо команды SUB используется команда SBB.

Числовое содержимое поля может интерпретироваться по-разному. Многие числовые поля являются беззнаковыми, например, номер абонента, адрес памяти. Некоторые числовые поля предполагаются всегда положительными, например, норма выплаты, день недели, число Р1. Другие числовые поля являются знаковыми, т.к. их содержимое может быть как положительным, так и отрицательным. Команды ADD и SUB не делают разницы между знаковыми и беззнаковыми данными они просто складывают и вычитают биты.

НАПРИМЕР, для беззнакового числа биты представляют число 249, а для знакового -7:

2

4

9

+

2

2

5

1

-7

+

2

-5


1

1

1

1

1

0

0

1

- 0

0

0

0

0

0

1

0

1

1

1

1

1

0

1

1

Соседние файлы в папке лекции