Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает

Вид материалаКонспект
Лекция 4. Описание системы команд микропроцессоров Intel (2 пары + ср)
Порядок описания команд будет следующим
Для описания команд приняты обозначения
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   57

Лекция 4. Описание системы команд микропроцессоров Intel (2 пары + ср)


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

Выберите тему:

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

Описание команд микропроцессора, упорядоченное по алфавиту

Описание команд микропроцессора, упорядоченное по функциональному признаку

 

 

 

 

aaa

aad

aam

aas

adc

add

and

bound

bsf

bsr

bswap

bt

btc

btr

bts

call

cbw

cwde

clc

cld

cli

cmc

cmp

cmps/cmpsb 

/cmpsw/cmpsd

cmpxchg

cwd

cdq

daa

das

dec

div

enter

hlt

idiv

imul

in

inc

ins/insb 

/insw/insd

int

into

iret/iretd

jcc

jcxz

jecxz

jmp

lahf

lds

les

lfs

lgs

lss

lea

leave

lgdt

lidt

lods/lodsb 

/lodsw/lodsd

loop

loope

loopz

loopne

loopnz

mov

movs/movsb 

/movsw/movsd

movsx

movzx

mul

neg

nop

not

or

out

outs

pop

popa

popad

popf

popfd

push

pusha

pushad

pushf

pushfd

rcl

rcr

rep/repe/repz 

/repne/repnz

ret/retf

rol

ror

sahf

sal

sar

sbb

scas/scasb 

/scasw/scasd

setcc

sgdt

sidt

shl

shld

shr

shrd

stc

std

sti

stos/stosb 

/stosw/stosd

sub

test

xadd

xchg

xlat/xlatb

xor

 

 

 

 

 

 

Порядок описания команд будет следующим:


 
  • название команды с расшифровкой ее мнемонического обозначения — это облегчит процесс запоминания и последующего использования команды в соответствии с ее функциональным назначением;
  • синтаксическое описание команды, поясняющее возможные сочетания операндов для данной команды. При этом сложные синтаксические описания будут приведены в виде синтаксических диаграмм, что позволит в наиболее компактной форме изобразить все возможные сочетания операндов;
  • состояние флагов после выполнения команды;
  • описание типового применения команды с примером и (или) ссылка на урок, в котором демонстрируется пример применения команды;
  • номера занятий и приложений, а также список команд, которые функционально связаны с данной командой.

Для описания команд приняты обозначения:

  1. Для описания состояния флагов после выполнения некоторой команды будем использовать выборку из таблицы, отражающей структуру регистра флагов eflags:

    31

    18

    17

    16

    15

    14

    1312

    11

    10

    09

    08

    07

    06

    05

    04

    03

    02

    01

    00

    0

    0

    VM

    RF

    0

    NT

    IOPL

    OF

    DF

    IF

    TF

    SF

    ZF

    0

    AF

    0

    PF

    1

    CF

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     
  2. В нижней строке этой таблицы приводятся значения флагов после выполнения команды. При этом используются следующие обозначения:
    • 1 — после выполнения команды флаг устанавливается (равен 1);
    • 0 — после выполнения команды флаг сбрасывается (равен 0);
    • r — значение флага зависит от результата работы команды;
    • ? — после выполнения команды флаг не определен;
    • пробел — после выполнения команды флаг не изменяется;
  3. Для представления операндов в синтаксических диаграммах используются следующие обозначения:
    • r8, r16, r32 — операнд в одном из регистров размером байт, слово или двойное слово;
    • m8, m16, m32, m48 — операнд в памяти размером байт, слово, двойное слово или 48 бит;
    • i8, i16, i32 — непосредственный операнд размером байт, слово или двойное слово;
    • a8, a16, a32 — относительный адрес (смещение) в сегменте кода.
  4. На многих диаграммах в целях компактности возможные сочетания операндов показаны в виде следующей конструкции:



Конструируя команду на основе подобной синтаксической диаграммы, вы должны помнить о соответствии типов. В подобной диаграмме допустимы только следующие сочетания: "r8, m8", "r16, m16", "r32, m32". Например, сочетание "r8, m16" недопустимо. Однако есть единичные случаи, когда подобные сочетания возможны; тогда они специально оговариваются.
  1. Описанная в данном приложении система команд в полном объеме поддерживается микропроцессором Pentium. Предыдущие модели микропроцессора могут не поддерживать отдельные команды. Чтобы прояснить этот момент, мы будем указывать в примерах для каждой команды директиву типа .286. Это будет означать, что описываемая команда поддерживается всеми моделями микропроцессора, начиная с i286. Если ничего не указывается, то это означает, что данная команда работает на всех моделях микропроцессоров Intel, начиная с i8086/8088.