Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
34.41 Кб
Скачать

1. Регистры общего назначения:

Регистры общего назначения - EAX, EBX, ECX, EDX. Они 32-х битные и делятся еще на две части, нижние из которых AX, BX, CD, DX - 16-ти битные, и деляется еще на два 8-ми битных регистра. Так, АХ делится на AH и AL, DX на DH и DL и т.д. Буква "Н" означает верхний регистр.

Так, AH и AL каждый по одному байту, АХ - 2 байта (или word - слово), ЕАХ - 4 байта (или dword - двойное слово). Эти регистры используются для операций с данными, такими, как сравнение, математические операции или запись данных в память.

Регистр СХ чаще всего используется как счетчик в циклах.

АН в DOS программах используется как определитель, какой сервис будет использоваться при вызове INT.

2.Сегментные регистры

Регистры сегментов - это CS, DS, ES, FS, GS, SS. Эти регистры 16-ти битные, и содержат в себе первую половину адреса "оффсет:сегмент".

  • CS - сегмент кода (страница памяти) исполняемой в данный момент программы.

  • DS - сегмент (страница) данных исполняемой программы, т.е. константы, строковые ссылки и т.д.

  • SS - сегмент стека исполняемой программы.

  • ES, FS, GS - дополнительные сегменты, и могут не использоваться программой.

3.Регистр флагов

EFLAG и FLAG

Флаги состояния (биты 0, 2, 4, 6, 7 и 11) отражают результат выполнения арифметических инструкций

 16-разрядный (16-битовый) и содержит всю необходимую информацию о состоянии процессора 8086(286) и результатах последних инструкций. Каждый бит у него флаг.

O флаг переполнения OF

D флаг направления DF

I флаг прерывания IF

T флаг перехвата TF

S флаг знака SF

Z флаг нуля ZF

A флаг дополнительного переноса AF

P флаг четности PF

C флаг переноса CF

4.Команды пересылки данных. Команды для работы с адресами памяти.

К этой группе относятся следующие команды:

mov <операнд назначения>,<операнд-источник>

xchg <операнд1>,<операнд2>

mov -это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки.

Отметим особенности применения этой команды:

!!! командой mov нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения.

!!!нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для выполнения такой загрузки нужно использовать промежуточный объект. Это может быть регистр общего назначения или стек. В начале сегмента кода две команды mov, выполняющие настройку сегментного регистра ds. При этом из-за невозможности загрузить впрямую в сегментный регистр значение адреса сегмента, содержащееся в предопределенной переменной @data, приходится использовать регистр общего назначения ax;

 

 !!! нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Это объясняется тем, что в системе команд нет соответствующего кода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения. Вот пример инициализации регистра es значением из регистра ds:

Для двунаправленной пересылки данных применяют команду xchg. Для этой операции можно, конечно, применить последовательность из нескольких команд mov, но из-за того, что операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchg.

 

Схема команды: xchg операнд_1,операнд_2 

Назначение: обмен двух значений между регистрами или между регистрами и памятью.

Алгоритм работы:  обмен содержимого операнд_1 и операнд_2.

Состояние флагов после выполнения команды: выполнение команды не влияет на флаги

Применение:

Команду xchg можно использовать для выполнения операции обмена двух операндов с целью изменения порядка следования байт, слов, двойных слов или их временного сохранения в регистре или памяти. Альтернативой является использование для этой цели стека.

 

!! операнды должны иметь один тип.

!! Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти.

5.Команды для работы со стеком

Для стека существуют всего две основные операции:

  • добавление элемента на вершину стека (PUSH);

  • извлечение элемента с вершины стека (POP);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]