Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр.docx
Скачиваний:
23
Добавлен:
21.12.2018
Размер:
2.58 Mб
Скачать

2. Адресные операнды – задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. К примеру:

mov ax,0000h

mov ds,ax

mov ax,ds:0000h ; записать слово в ах из области памяти по физическому адресу 0000:0000

3. Счётчик адреса. Обозначается знаком $. Когда транслятор ассемблера встречает в программе этот символ, то он подставляет вместо него текущее значение счётчика адреса.

0000 jmp $+3 ; безусловный переход на команду mov

0002 cld ; длина команды cld составляет 1 байт

0003 mov al,1

Команда jmp занимает 2 байта.

4. Регистровый операнд – это имя регистра. В программе можно использовать имена всех регистров общего назначения и большинства системных регистров. Пример:

mov al,4 ; константу 4 заносим в регистр al

mov dl, 8

add al,dl ; команда с регистровыми операндами

5. Базовый и индексный операнды. Тип операндов используется для реализации косвенной базовой, косвенной индексной адресации или их комбинаций и расширений.

6. Структурные операнды используются для доступа к конкретному элементу структуры.

7. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.

Выполнение операторов ассемблера при вычислении выражений осуществляется в соответствии с их приоритетами (табл. 3.1).

Табл. 3.1. Операторы и их приоритет

Операторы сравнения

Операторы сравнения (возвращают значения «истина» или «ложь») предназначены для формирования логических выражений. Логическая единица – значение все биты которого равны 1. Логический ноль – значение, все биты которого равны 0. Например:

tab_size equ 30 ; размер таблицы

-----

mov al,tab_size ge 50 ; загрузка размера таблицы в al

cmp al,0 ; если tab_size <50, то

je m1 ; переход на m1

---

m1: ---

Рис. Синтаксис операторов сравнения.

Табл. 3.2. Таблица операторов сравнения

Команды передачи управления. Арифметические команды.

То, какая команда программы должна выполняться следующей, микропроцессор узнаёт по содержимому пары регистров cs:(e)ip, в которой:

cs – сегментный регистр кода, в котором находится физический (базовый) адрес текущего сегмента кода;

eip/ip – регистр указателя команд, в котором находится значение, представляющее собой смещение в памяти следующей команды, подлежащей выполнению, относительно начала текущего сегмента кода.

По принципу действия команды микропроцессора, обеспечивающие организацию переходов в программе, можно разделить на три группы:

  1. Команды безусловной передачи управления:

– команда безусловного перехода;

– вызов процедуры и возврата из процедуры;

– вызов программных прерываний и возврат из программных прерываний;

  1. Команды условной передачи управления:

– команды перехода по результату команды сравнения;

– команды перехода по состоянию определённого флага;

– команды перехода по содержимому регистра есх/сх.