Способы задания операндов команды

Операнд задается неявно на микропрограммном уровне

В этом случае команда явно не содержит операндов. Алгоритм выполнения команды использует некоторые объекты по умолчанию (регистры, флаги в eflags и т. д.).

Операнд задается в самой команде (непосредственный операнд)

Операнд находится в коде команды, т. е. является ее частью. Для хранения такого операнда в команде выделяется поле длиной до 32 бит. Непосредственный операнд может быть только вторым операндом (источником). Операнд-получатель может находиться либо в памяти, либо в регистре. Операнд находится в одном из регистров Регистровые операнды указываются именами регистров. В качестве регистров могут использоваться:

1) 32-разрядные регистры EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP;

2) 16-разрядные регистры AX, BX, CX, DX, SI, DI, SP, BP;

3) 8-разрядные регистры AH, AL, BH, BL, CH, CL, DH,

DL;

4) сегментные регистры CS, DS, SS, ES, FS, GS. Например, команда add ax,bx складывает содержимое регистров ax и bx и записывает результат в bx. Команда dec si уменьшает содержимое si на 1.

Операнд располагается в памяти

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

В свою очередь, косвенная адресация имеет следующие разновидности:

1) косвенную базовую адресацию; другое ее название – регистровая косвенная адресация;

2) косвенную базовую адресацию со смещением;

3) косвенную индексную адресацию со смещением;

4) косвенную базовую индексную адресацию;

5) косвенную базовую индексную адресацию со смещением.

Операндом является порт ввода/вывода

Помимо адресного пространства оперативной памяти, микропроцессор поддерживает адресное пространство ввода-вывода, которое используется для доступа к устройствам ввода-вывода. Объем адресного пространства ввода-вывода составляет 64 Кбайт. Для любого устройства компьютера в этом пространстве выделяются адреса. Конкретное значение адреса в пределах этого пространства называется портом ввода-вывода. Физически порту ввода-вывода соответствует аппаратный регистр (не путать с регистром микропроцессора), доступ к которому осуществляется с помощью специальных команд ассемблера in и out.

Операнд находится в стеке

Команды могут совсем не иметь операндов, иметь один или два операнда. Большинство команд требуют двух операндов, один из которых является операндом-источником, а второй – операндом назначения. Важно то, что один операнд может располагаться в регистре или памяти, а второй операнд обязательно должен находиться в регистре или непосредственно в команде. Непосредственный операнд может быть только операндом-источником. В двухоперандной машинной команде возможны следующие сочетания операндов:

1) регистр – регистр;

2) регистр – память;

3) память – регистр;

4) непосредственный операнд – регистр;

5) непосредственный операнд – память.