Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСвИС / (х) учебное пособие. организация Компьютеров и Систем.doc
Скачиваний:
83
Добавлен:
28.05.2015
Размер:
1.15 Mб
Скачать

2.26. Формат машинной команды вм86.

Машинная команда микропроцессора 8086 имеет формат, приведенный на рис. 40.

Рис. 40

Префикс – это байт, идущий перед командой и несколько меняющий ее смысл. Для МП 8086 допустимы: префикс блокировки, префикс замены сегмента и префикс повторения. В большинстве команд префиксы отсутствуют, однако, в команде могут использоваться и все три префикса одновременно. Префикс блокировки (lock) имеет значение 11110000. Префикс замены сегмента имеет формат 011sr110. Здесь поле sr задает сегментный регистр, который используется в команде (табл.6). Префикс повторения (rep) имеет значение 11110011 (или в еще одном варианте 11110010).

Таблица 6.

11110010).

Поле КОП – единственное из полей, которое всегда присутствует в команде. Занимает это поле, в зависимости от команды, один или два байта. Младший бит этого поля (w) в большинстве случаев задает разрядность операции. При w=0 команда работает с байтом, при w=1 – со словом.

Постбайт либо в команде отсутствует, либо занимает один байт. Это поле задает регистры, которые принимают участие в формировании адресов операндов. Формат постбайта приведен на рис.41.

Рис. 41

Поле reg (регистр) задает регистр в двухоперандных командах (табл. 7). Аналогично трактуется поле rm (регистр/память) при md=11 (mode – «режим»). При других значениях md, поле rm задает способ формирования адреса памяти (табл. 8).

Поле disp (dispersion – «смещение») задает смещение при базовой адресации (или адрес при прямой адресации) и может занимать 0, 1 или 2 байта.

Поле data («операнд») присутствует, если в команде используется непосредственная адресация.

Таблица 7.

Таблица 8.

Например, команда lock add cs: [bp+ di+100h], 77h имеет шестнадцатеричное представление: F0 2E 80 83 0010 77 ( F0 – младший байт в ОП). Здесь F0 – префикс блокировки (lock), 2E –префикс замены сегмента (cs: ), 80 – код команды (операции) (add), 83 – постбайт (задает способ формирования адреса: bp+di+disp), 0010 – смещение (100h) и 77 – непосредственный операнд.