Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7»


Скачать 2.72 Mb.
Название Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7»
страница 7/20
Тип Учебно-методический комплекс
rykovodstvo.ru > Руководство эксплуатация > Учебно-методический комплекс
1   2   3   4   5   6   7   8   9   10   ...   20

2. Непосредственная адресация

Некоторые команды (все арифметические команды, кроме деления) позволяют указывать один из операндов непосредственно в тексте программы.

3. Прямая адресация

Если известен адрес операнда, располагающегося в памяти, можно использовать этот адрес.

В реальных программах обычно для задания статических переменных используют директивы определения данных, которые позволяют ссылаться на статические переменные не по адресу, а по имени.

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

Прямая адресация

mov mem2,n2

mov bx,OFFSET vec1

mov mem1,ax

4. Косвенная адресация

По аналогии с регистровыми и непосредственными операндами адрес операнда в памяти также можно не указывать непосредственно, а хранить в любом регистре. До 80386 для этого можно было использовать только ВХ, SI, DI и ВР, но потом эти ограничения были сняты и адрес операнда разрешили считывать также и из ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР и ESP (но не из AX, CX, DX или SP напрямую - надо использовать ЕАХ, ЕСХ, EDX, ESP соответственно или предварительно скопировать смещение в ВХ, S1, DI или ВР). Как и в случае прямой адресации, DS используется по умолчанию, но не во всех случаях: если смещение берут из регистров ESP, ЕВР или ВР, то в качестве сегментного регистра используется SS. В реальном режиме можно свободно пользоваться всеми 32-битными регистрами, надо только следить, чтобы их содержимое не превышало границ 16-битного слова.

Косвенная адресация

mov al,[bx]

mov mem3,[bx]

5. Адресация по базе

Такая форма адресации используется в тех случаях, когда в регистре находится адрес начала структуры данных, а доступ надо осуществить к какому-нибудь элементу этой структуры. Другое важное применение адресации по базе со сдвигом - доступ из подпрограммы к параметрам, переданным в стеке, используя регистр ВР (ЕВР) в качестве базы и номер параметра в качестве смещения.

До 80386 в качестве базового регистра можно было использовать только ВХ, ВР, SI или DI и сдвиг мог быть только байтом или словом (со знаком). Начиная с 80386 и старше, процессоры Intel позволяют дополнительно использовать ЕАХ, ЕВХ, ЕСХ, EDX, ЕВР, ESP, ESI и EDI, так же как и для обычной косвенной адресации. С помощью этого метода можно организовывать доступ к одномерным массивам байт: смещение соответствует адресу начала массива, а число в регистре - индексу элемента массива, который надо считать. Очевидно, что, если массив состоит, не из байт, а из слов, придется умножать базовый регистр на два, а если из двойных слов - на четыре. Для этого предусмотрен следующий специальный метод адресации.

Базированная адресация

mov al,[bx]+3

mov cx,3[bx]

6. Косвенная адресация с масштабированием

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

mov ax,[esi*2]+2

Множитель, который может быть равен 1, 2, 4 или 8, соответствует размеру элемента массива - байту, слову, двойному слову, учетверенному слову соответственно. Из регистров в этом варианте адресации можно использовать только ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР, ESP, но не SI, DI, ВР или SP, которые можно было использовать в предыдущих вариантах.

7. Адресация по базе с индексированием и масштабированием

Это самая полная возможная схема адресации, в которую входят все случаи, рассмотренные ранее, как частные. Смещение может быть байтом или двойным словом. Если ESP или ЕВР используются в роли базового регистра, селектор сегмента операнда берется по умолчанию из регистра SS, во всех остальных случаях -из DS.

 Примечания:

Базовая адресация применяется для работы со строками или записями, при этом в базовый регистр заносится начало структуры или записи, а смещение задает начало некоторого поля записи или структуры (регистр BP используется по умолчанию для доступа к параметрам процедур через кадр стека). Индексная адресация для доступа к элементам однородных (обычно одномерных) массивов, смещение задает начало элемента этого массива. Базово-индексная адресация используется при работе с элементами полей записи и для работы с двумерными массивами.

Начиная с процессоров ix386, появились так называемые расширенные регистры EAX, EBX и т.д. Их длина стала равной 32 битам и между ними нет жесткого закрепления по назначению (кроме EPB и EDX). Кроме того, начиная с процессоров ix386, в адресных выражениях кроме смещения можно использовать масштабирование:

[EAX]*m+смещение m=1,2,4,8

Индексированная адресация           

mov di,ind

mov al,vec2[di]

mov cx,vec2[di]

Адресация с базированием и индексированием

mov bx,3

mov al,matr[bx][di]

mov cx,matr[bx][di]

mov ax,matr[bx*4][di]

Система команд i8086

 Формат команды

(первая строка- имя поля команды, вторая- длина поля в байтах)

Префикс

Переопределе-ние сегмента

Код операции

Mod R/M

Адрес

Данные

0/1

0/1

1

0/1

0/1/2

0/1/2

Максимальная длина команды равна 6 байт.

  Префикс - может задавать префикс повторения. В ассемблере обозначается как REP, REPE (повтор по равенству нулю), REPNE (повтор не по равенству нулю).

Переопределение сегмента для жесткого определения регистра сегмента для режима адресации вместо принятого по умолчанию. КОП- код операции определяет тип используемых данных (0- байт; 1- слово). Mod R/M- для задания режима адресации.

Адрес содержит непосредственно адрес памяти.

Данные включает непосредственно операнды.

Режим адресации

Регистр

R/M

Mod

Reg

R/M

7 6

5 3

2 0

Исполнительный адрес = f{КОП, Mod R/M, Адрес, Данные}

 Все команды процессора i8086 можно разделить на группы:

  1. Команды передачи данных.

  2. Команды арифметических операций над целыми числами.

  3. Логические команды.

  4. Сдвиговые команды.

  5. Команды передачи управления.

  6. Команды прерываний.

  7. Команды управления флагами.

  8. Команды управления процессором.

  9. Команды плавающей арифметики.

  10. Команды мультимедийных расширений (ММХ).

 

  1. Команды передачи данных.

MOV приемник, источник;

8086, пересылка данных.

mov d, s ; (s)d

d- destination (приемник); s- source (источник)

Команда MOV действует аналогично операторам присваивания из языков высокого уровня. Оба операнда должны быть одного и того же размера - байт, слово или двойное слово. Нельзя выполнять пересылку данных с помощью MOV из одной переменной в другую, из одного сегментного регистра в другой и нельзя помещать в сегментный регистр непосредственный операнд - эти операции выполняют двумя командами MOV (из сегментного регистра в обычный и уже из него в другой сегментный) или парой команд PUSH/POP.

XCHG операнд1, операд2;

8086, обмен операторов между собой.

xchg al, ah ; автоматически выполняется в режиме LOCK.

xchg bx, MEM ;

Содержимое операнда 2 копируется в операнд 1, а старое содержимое операнда 1 – в операнд 2.

 

LEA приемник, источник;

8086, вычисление эффективного адреса.

NEAR: lea d, s ;

lea bx, MEM ; эта команда аналогична mov bx, offset MEM.

Вычисляет эффективный адрес источника (переменная) по отношению к началу сегмента (по умолчанию ds) и помещает его в приемник (регистр).

 

LDS приемник, источник;

8086, загрузить адрес, используя DS.

LES приемник,источник

8086, загрузить адрес, используя ES.

FAR: lds с ds по умолчанию

les с es по умолчанию

lds bx, MEM аналогична mov bx, offset MEM

mov ax, seg MEM

mov ds, ax

 

PUSH источник;

8086, поместить данные в стек.

POP приемник;

8086, считать данные из стека.

push s

pop d

PUSH помещает содержимое источника в стек. Источником может быть регистр, сегментный регистр, непосредственный операнд или переменная. Фактически эта команда копирует содержимое источника в память по адресу SS:[SP] и уменьшает SP на размер источника в байтах. Начиная с 80286, команда PUSH SP помещает в стек значение SP до того, как эта же команда его уменьшит, в то время как на 8086 SP помещался в стек уже уменьшенным на два.

POP помещает в приемник слово или двойное слово, находящееся в вершине стека, увеличивая SP на два. POP выполняет действие, полностью обратное PUSH. Приемником может быть регистр общего назначения, сегментный регистр, кроме CS, или переменная. Если в роли приемника выступает операнд, использующий ESP для косвенной адресации, команда POP вычисляет адрес операнда уже после того, как она увеличивает ESP.

Начиная с ix386, появились команды pusha и popa- загрузка и выгрузка 8 регистров общего назначения.

  IN приемник, источник;

8086, считать данные из порта.

Копирует число из порта ввода-вывода, номер которого указан в источнике, в приемник. Приемником может быть только AL, АХ или ЕАХ. Источник - или непосредственный операнд, или DX, причем можно указывать только номера портов не больше 255.

OUT приемник, источник;

8086, записать данные в порт

Копирует число из источника (AL, АХ или ЕАХ) в порт ввода-вывода, номер которого указан в приемнике. Приемник может быть либо непосредственным номером порта, либо регистром DX. На командах IN и OUT строится все общение процессора с устройствами ввода-вывода.

  • Команды арифметических операций над целыми числами.

ADD приемник, источник;

8086, сложение.

add d, s; s+dd

Команда выполняет арифметическое сложение приемника и источника и помещает сумму в приемник. Приемник может быть регистром или переменной, источник может быть числом, регистром или переменной, но нельзя использовать переменную одновременно и для источника, и для приемника. Команда ADD никак не различает числа со знаком и без знака, но, употребляя значения флагов CF (перенос при сложении чисел без знака), OF (перенос при сложении чисел со знаком) и SF (знак результата), можно использовать ее и для тех, и для других.

ADC приемник, источник;

8086, сложение с переносом

add d, s; s+d+CFd

Эта команда во всем аналогична ADD, кроме того, что она выполняет арифметическое сложение приемника, источника и флага CF. Пара команд ADD/ADC используется для сложения чисел повышенной точности.

SUB приемник, источник;

8086, вычитание.

sub d, s; d-sd

Вычитает источник из приемника и помещает разность в приемник. Приемник может быть регистром или переменной, источник может быть числом, регистром или переменной, но нельзя использовать переменную одновременно и для источника, и для приемника. Точно так же, как и команда ADD, SUB не делает различий между числами со знаком и без знака, но флаги позволяют использовать ее как для тех, так и для других.

SBB приемник, источник;

8086, вычитание с займом.

sbb d, s; d-s-CFd

Эта команда во всем аналогична SUB, кроме того, что она вычитает из приемника значение источника и дополнительно вычитает значение флага CF.

 

СМР приемник, источник;

8086, сравнение.

cmp d, s; d-s

Сравнивает приемник и источник и устанавливает флаги. Сравнение осуществляется путем вычитания источника (число, регистр или переменная) из приемника (регистр или переменная; приемник и источник не могут быть переменными одновременно), причем результат вычитания никуда не записывается, единственным результатом работы этой команды оказывается изменение флагов CF, OF, SF, ZF, AF и PF. Обычно команду СМР используют вместе с командами условного перехода (Jcc).

MUL источник;

8086, умножение чисел без знака.

mul bl; bl*alax

Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Если старшая половина результата (АН, DX, EDX) содержит только нули (результат целиком поместился в младшую половину), флаги CF и OF устанавливаются в 0, иначе - в 1. Значение остальных флагов (SF, ZF, AF и PF) не определено.

 IMUL источник;

IMUL приемник, источник;

IMUL приемник, источник1, источник2;

8086, 80386, 80186, умножение чисел со знаком.

Процессор: 8086 80386 80186

Эта команда имеет три формы, различающиеся числом операндов:

1. IMUL источник: источник (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда), и результат располагается в AX, DX:AX или EDX:EAX соответственно.

2. IMUL приемник,источник: источник (число, регистр или переменная) умножается на приемник (регистр), и результат заносится в приемник.

3. IMUL приемник,источник1,источник2: источник 1 (регистр или переменная) умножается на источник 2 (число), и результат заносится в приемник (регистр).

Во всех трех вариантах считается, что результат может занимать в два раза больше места, чем размер источника. В первом случае приемник автоматически оказывается достаточно большим, но во втором и третьем случаях могут произойти переполнение и потеря старших бит результата. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в приемник (во втором и третьем случаях) или в младшую половину приемника (в первом случае).

Значения флагов SF, ZF, AF и PF после команды IMUL не определены.

DIV источник;

8086, целочисленное деление без знака.

div bl; частное в al, остаток в ah

Выполняет целочисленное деление без знака AL, АХ или ЕАХ (в зависимости от размера источника) на источник (регистр или переменная) и помещает результат в AL, АХ или ЕАХ, а остаток - в АН, DX или EDX соответственно. Результат всегда округляется в сторону нуля, абсолютное значение остатка всегда меньше абсолютного значения делителя. Значения флагов CF, OF, SF, ZF, AF и PF после этой команды не определены, а переполнение или деление на ноль вызывает исключение #DE (ошибка при делении) в защищенном режиме и прерывание 0- в реальном.

IDIV источник;

8086, целочисленное деление со знаком.

Выполняет целочисленное деление со знаком AL, АХ или ЕАХ (в зависимости от размера источника) на источник и помещает результат в AL, АХ или ЕАХ, а остаток - в АН, DX или EDX соответственно. Результат всегда округляется в сторону нуля, знак остатка всегда совпадает со знаком делимого, абсолютное значение остатка всегда меньше абсолютного значения делителя. Значения флагов CF, OF, SF, ZF, AF и PF после этой команды не определены, а переполнение или деление на ноль вызывает исключение #DE (ошибка при делении) в защищенном режиме и прерывание 0- в реальном.

INC приемник;

8086, инкремент.

inc d; (d)+1d

Увеличивает приемник на 1. Единственное отличие этой команды от ADD состоит в том, что флаг CF не затрагивается. Остальные арифметические флаги (OF, SF, ZF, AF, PF) устанавливаются в соответствии с результатом сложения.

DEC приемник;

80886, Декремент.

dec d; (d)-1d

Уменьшает приемник на 1. Единственное отличие этой команды от SUB состоит в том, что флаг CF не затрагивается. Остальные арифметические флаги (OF, SF, ZF, AF, PF) устанавливаются в соответствии с результатом вычитания.

 NEG приемник;

8086, изменение знака.

neg s; -(s)s

Выполняет над числом, содержащимся в приемнике, операцию дополнения до двух. Эта операция эквивалентна обращению знака операнда, если рассматривать его как число со знаком. Если приемник равен нулю, флаг CF устанавливается в 0, иначе - в 1. Остальные флаги (OF, SF, ZF, AF, PF) устанавливаются в соответствии с результатом операции.

  • Логические команды.

AND приемник, источник;

8086, логическое И.

Команда выполняет побитовое «логическое И» над приемником и источником (источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, только если соответствующие биты обоих операндов были равны 1, и равен 0 в остальных случаях.

  OR приемник, источник;

8086, логическое ИЛИ.

Выполняет побитовое «логическое ИЛИ» над приемником и источником (источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 0, только если соответствующие биты обоих операндов были равны 0, и равен 1 в остальных случаях.

 XOR приемник, источник;

8086, логическое исключающее ИЛИ.

Выполняет побитовое «логическое исключающее ИЛИ» над приемником и источником (источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, если соответствующие биты операндов различны, и нулю, если одинаковы.

  NOT приемник;

8086, инверсия

Каждый бит приемника, равный нулю, устанавливается в 1, и каждый бит, равный 1, сбрасывается в 0. Флаги не затрагиваются.

TEST приемник, источник;

8086, логическое сравнение.

Вычисляет результат действия побитового «логического И» над приемником и источником (источник и приемник не могут быть переменными одновременно) и устанавливает флаги SF, ZF и PF в соответствии с полученным результатом, не сохраняя результат (флаги OF и CF обнуляются, значение AF не определено). TEST, так же как и СМР, используется в основном в сочетании с командами условного перехода (Jcc).

 

  • Сдвиговые команды.

SAR приемник, счетчик;

8086, арифметический сдвиг вправо.

SAL приемник, счетчик;

8086, арифметический сдвиг влево.

SHR приемник, счетчик;

8086, логический сдвиг вправо.

SHL приемник, счетчик;

8086, логический сдвиг влево.

Эти четыре команды выполняют двоичный сдвиг приемника вправо или влево на значение счетчика (число или регистр CL, из которого учитываются только младшие пять бит, которые могут принимать значения от 0 до 31). Операция сдвига на 1 эквивалентна умножению (сдвиг влево) или делению (сдвиг вправо) на 2. Так, число 0010b (2) после сдвига на 1 влево превращается в 0100b (4). Команды SAL и SHL выполняют одну и ту же операцию (на самом деле это одна и та же команда) - на каждый шаг сдвига старший бит заносится в CF, все биты сдвигаются влево на одну позицию, и младший бит обнуляется. Команда SHR выполняет прямо противоположную операцию: младший бит заносится в CF, все биты сдвигаются на 1 вправо, старший бит обнуляется. Эта команда эквивалентна беззнаковому целочисленному делению на 2. Команда SAR действует по аналогии с SHR, только старший бит не обнуляется, а сохраняет предыдущее значение, так что, например, число 11111100b (-4) перейдет в 11111110b (-2). SAR, таким образом, эквивалентна знаковому делению на 2, но, в отличие от IDIV, округление происходит не в сторону нуля, а в сторону отрицательной бесконечности. Так, если разделить -9 на 4 с помощью IDIV, результат будет -2 (и остаток -1), а если выполнить арифметический сдвиг вправо числа -9 на 2, результат будет -3. Сдвиги больше чем на 1 эквивалентны соответствующим сдвигам на 1, выполненным последовательно. Схема всех сдвиговых операций приведена на рис. 7.

Сдвиги на 1 изменяют значение флага OF: SAL/SHL устанавливают его в 1, если после сдвига старший бит изменился (то есть старшие два бита исходного числа не были одинаковыми), и в 0, если старший бит остался тем же. SAR устанавливает OF в 0, и SHR устанавливает OF в значение старшего бита исходного числа. Для сдвигов на несколько бит значение OF не определено. Флаги SF, ZF, PF устанавливаются всеми сдвигами в соответствии с результатом, значение AF не определено (кроме случая, если счетчик сдвига равен нулю, в котором ничего не происходит и флаги не изменяются).

В процессорах 8086 непосредственно можно задавать в качестве второго операнда только число 1 и при использовании CL учитывать все биты, а не только младшие 5.

 ROR приемник, счетчик;

8086, циклический сдвиг вправо.

ROL приемник, счетчик;

8086, циклический сдвиг влево

RCR приемник, счетчик;

8086, циклический сдвиг вправо через флаг переноса.

RCL приемник, счетчик;

8086, циклический сдвиг влево через флаг переноса.

Эти команды осуществляют циклический сдвиг приемника на число бит, указанное в счетчике (число или регистр CL, из которого учитываются только младшие пять бит, принимающие значения от 0 до 31). При выполнении циклического сдвига на 1 команды ROR (ROL) сдвигают каждый бит приемника вправо (влево) на одну позицию, за исключением самого младшего (старшего), который записывается в позицию самого старшего (младшего) бита. Команды RCR, RCL выполняют аналогичное действие, но включают флаг CF в цикл, как если бы он был дополнительным битом в приемнике.

  • Команды передачи управления

 Делятся на команды безусловного и условных переходов.

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

JMP операнд;

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

В зависимости от типа перехода различают:

  • переход типа short (короткий переход) - если адрес перехода находится в пределах от -127 до +128 байт от команды JMP;

  • переход типа near (ближний переход) - если адрес перехода находится в том же сегменте памяти, что и команда JMP;

  • переход типа far (дальний переход) - если адрес перехода находится в другом сегменте.

 Команды условного перехода

Jcc операнд – Переход по адресу, задаваемому операндом если условие перехода сс удовлетворяется.

 Команда         Описание

  1. JA         Переход, если выше (CF = 0 и ZF = 0)

  2. JAE            Переход, если выше или равно (CF = 0)

  3. JB             Переход, если ниже (CF = 1)

  4. JBE             Переход, если ниже или равно (CF = 1 или ZF = 1)

  5. JC             Переход, если перенос (CF = 1)

  6. JCXZ         Переход, если регистр CX равен 0

  7. JE             Переход, если равно (ZF = 1)

  8. JZ             Переход, если 0 (ZF = 1)

  9. JG             Переход, если больше (ZF = 0 и SF = OF)

  10. JGE             Переход, если больше или равно (SF = OF)

  11. JL             Переход, если меньше (SF <> OF)

  12. JLE             Переход, если меньше или равно (ZF=1 или SF <> OF)

  13. JNA             Переход, если не выше (CF = 1 и ZF = 1)

  14. JNAE         Переход, если не выше или равно (CF = 1)

  15. JNB             Переход, если не ниже (CF = 0)

  16. JNBE     Переход, если не ниже или равно (CF=0 и ZF=0)

  17. JNC             Переход, если нет переноса (CF = 0)

  18. JNE             Переход, если не равно (ZF = 0)

  19. JNG             Переход, если не больше (ZF = 1 или SF <> OF)

  20. JNGE         Переход, если не больше или равно (SF <> OF)

  21. JNL            Переход, если не меньше (SF = OF)

  22. JNLE         Переход, если не меньше или равно (ZF=0 и SF=OF)

  23. JNO             Переход, если нет переполнения (OF=0)

  24. JNP             Переход, если нет контроля четности (PF = 0)

  25. JNS             Переход, если нет знака (SF = 0)

  26. JNZ             Переход, если нет нуля (ZF = 0)

  27. JO             Переход, если переполнение (OF = 1)

  28. JP             Переход, если контроль четности (PF = 1)

  29. JPE           Переход, если контроль на проверку четности (PF = 1)

  30. JPO           Переход, если контроль на проверку нечетности (PF = 0)

  31. JS             Переход, если знак отрицательный (SF = 1)

  32. JZ             Переход, если ноль (ZF = 1)

 

Команды условного перехода (за исключением команды JCXZ) проверяют флаги, которые были установлены предыдущей командой. Условия для каждой мнемонической формы команды даны в круглых скобках выше после каждого описания. Термины меньше и больше используются при сравнении целых со знаком; выше и ниже - для целых без знака. Если условие выполняется, то происходит переход по адресу, задаваемому операндом. Использование данной команды наиболее эффективно, когда цель условного перехода находится в текущем кодовом сегменте и в пределах от -128 до +127 байтов относительно первого байта следующей команды. Если цель команды условного перехода находится за пределами -128 до +127 байтов относительно первого байта следующей команды, используйте команду с противоположным условием перехода в сочетании с командой безусловного перехода.

Команда JCXZ отличается от других команд условного перехода тем, что она проверяет не флаги, а содержимое регистра CX на равенство 0. Команда JCXZ полезна в начале условного цикла, который заканчивается командой условного перехода к началу цикла (например, LOOPNE метка цели). Команда JCXZ предотвращает нахождение в цикл при регистре CX, равном нулю, что может привести к выполнению цикла 64К раз вместо нуля раз.

  • Команды прерываний

 

INT/INTO - Вызов процедуры прерывания

 |INT imm8     Прерывание, заданное непосредственным байтом

|INTO     Прерывание 4 - Если флаг переполнения равен 1

  Команда INT n программно генерирует вызов обработчика прерывания.

Непосредственный операнд, от 0 до 255, задает номер индекса в таблице векторов прерываний ( в старших моделях – дескрипторов прерываний) для вызываемой подпрограммы прерывания. Таблица векторов прерываний представляет собой массив из указателей дальнего вызова длиной в четыре байта.

Условная команда INTO идентична команде прерывания INT n, за исключением того, что номер прерывания неявно устанавливается равным 4, и прерывание происходит только при установленном флаге переполнения процессора.

Первые 32 прерывания резервированы Intel для системных целей. Некоторые из этих прерываний используются для внутренних исключений.

Команда INT n в целом ведет себя как дальний вызов, за исключением того, что флаговый регистр помещается в стек до адреса возврата. В целом команда INT n помещает в стек флаги, регистр CS и IP для возврата в указанной последовательности и затем выполняет переход к дальнему указателю, индексируемому номером прерывания. Процедуры прерывания выполняют возврат посредством команды IRET, которая извлекает из стека флаги и адрес возврата.

 IRET - Возврат из прерывания

 |Команда IRET извлекает из стека указатель команд, регистр CS и флаговый регистр, после чего возобновляет выполнение прерванной подпрограммы.

 

  • MMX (Multi Media eXtension)

 Команды этой группы появились, начиная с i586 (Pentium P55C ).

Ориентированы на обработку мультимедийных приложений.

Предназначены для повышения эффективности программ работающих с большими потоками данных по несложным алгоритмам.

MMX включает дополнительные типы данных, регистров и команды, ориентированные на обработку нескольких чисел.

 

  1. Регистры

Использует восемь 64-битных регистра MM0 – MM7

(мантиссы данных сопроцессора ( st(0) – st(7)))

При этом все разряды порядка заполняются единицами. Любая команда MMX устанавливает регистр в вершину стека, а также:

    ST, SI := 0

    TW := 0

Поэтому рекомендуют не совмещать MMX с обработкой вещественных чисел, либо

Использовать FSAVE и FRESTOR для сохранения регистров аппаратного стека.

  1. Типы данных

    1. учетверенное слово (64 бита)

    2. упакованные двоичные слова (2 x 32 бит)

    3. упакованные слова (4 x 16 бит)

    4. упакованные байты (8 x 8 бит)

Отличительные особенности:

  1. Можно обрабатывать все поля данных.

  2. Перемещение данных осуществляется в упакованном виде, а упаковка над каждым элементом (полем) отдельно.

  3. Арифметические операции используют специальный способ обработки переполнения, который называется “насыщение”. Его сущность: при переполнении сохраняется максимальное значение соответствующего диапазона. Это удобно при обработке цвета

 

  1. Команды

(Кроме пересылок все остальные команды начинаются с буквы P)

  1. Пересылка

MOVD двоичных

MOVQ учетверенных

 

  1. Преобразование типов (упаковка со знаковым насыщением).

PACKSSWB - упаковывает и насыщает слова со знаком в байты.

PACKSSDW - упаковывает и насыщает двойные слова со знаком в слова.

 

  1. Распаковка и объединение элементов.

PUNPCXHBW

HWD

Пример объединения байтов двух данных:        

  1. Арифметические операции.

PADDB/W/D

PADDS B/W    сложение с учетом насыщения

PADDUS B/ W    сложение без учета насыщения

Аналогичные команды для вычитания и умножения.

PMADDWD Операнд_1, Операнд_2 - команда умножения и сложения.

(Применяется для фильтрации изображения, к примеру: a + bx)

  1. Сравнение.

PCOMP

  1. Логические команды.

PAND, POR, и т.д.

3DNow! от AMD

Появился дополнительный тип данных: упакованные 32 битные вещественные числа.

Появился дополнительный набор команд:

  • Преобразование целых чисел в вещественные и обратно;

  • Вычисления среднего арифметического для элементов/частей регистров;

  • Специальные вычисления по итерационным формулам.

Все команды начинаются с FP xxx , так как F (float) вещественный тип данных, а P – это MMX.

  • Обработка чисел с плавающей запятой.

  Применяется с использованием математического сопроцессора, который до i486 выполнялся в виде отдельной микросхемы (8087 – 80387).

Независимо от наличия сопроцессора, обработка может быть осуществлена тремя способами:

  1. Использование библиотеки эмулятора - автоматически определяет сопроцессор, если он есть, то все подстраивается под него, если нет, то будет эмулировать.

  2. При отсутствии библиотеки математического сопроцессора возникает прерывание и выполнение программы будет прервано.

  3. Использование библиотеки альтернативной математики - считается, что сопроцессор отсутствует.

 Первый способ несовместим с резидентными программами (так как одни и те же прерывания используются для эмулятора и резидентных программ). Поэтому для таких программ надо использовать третий способ. Второй способ самый быстрый.

 Назначение математического сопроцессора:

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

 

Np

Значения десятичных чисел

Диапазон

32 Короткое вещественное

6 / 7

10-38 - 1037

64 Длинное вещественное

15 / 16

10-308 - 10307

80 Расширенное вещественное

18 / 19

10-4932 - 104931

 

Word    Integer    - 16 бит

Short    Integer    - 32 бит

Long     Integer    - 64 бит

Packed    Decimal    - 18 десятичных цифр 10 байт (80 бит)

                             p        m

Положительная / отрицательная бесконечность        01 | 1 … 1    00 … 0

Неопределенность                    1 | 1 … 1    10 … 0

Не число                        0 | 1 … 1    0

 Сопроцессор представляется расширением центрального процессора с дополнительными восьмью восьмидесяти битными регистрами в виде аппаратного стека с номерами: st(0) – st(7) Для задания вершины стека используется регистр ST, который указывает на один из восьми регистров.  

  1. Управляющие регистры:

SR (слова состоянием ) флаг условий, занятость сопроцессора, флаги ST.

CR – регистр управления, задает режим обработки (способы округления, точность и маскирование ошибок).

TW – теговый регистр содержит двух битовое поле для каждого из восьми регистров сопроцессора

                    TW     i -     st(i)

  1. вещественное число не равное нулю

  2. вещественное число равное нулю

10    не число

  1. не инициализировано

 Сопроцессор называется так потому – что может работать параллельно с процессором после инициализации. Языки высокого уровня используют его непосредственно, а ассемблер порождает ESC команды.

 Система команд сопроцессора: F XXX

  1. Пересылки

FLD – загружает регистр сопроцессора из памяти (или из другого регистра).

FST – копирует содержимое регистра (сопроцессора, обычно из стека) в память или в другой регистр при этом аппаратный стек не меняется.

FSTP – аналогично FST только в конце выталкивает.

Загрузка констант: FLD1, FLDPi, . . .  

  1. Арифметические команды выполняют четыре арифметических действия над всеми типами данных. Даже обработка целых чисел в сопроцессоре идет по принципу вещественных чисел.  

  2. Элементарные функции: FSQRT, FABS, FSIN, FCOS, FPTAN, FPATAN, . . .

F2XM1 = 2X – 1    FYL2X = Y * Log X  

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

При программировании обработки выражений в сопроцессоре, они представляются в виде польской инверсной записи (ПОЛИЗ или RPN – Reversed Polish Notation). Любое выражение преобразуется к постфиксному виду (бесскобочная запись).

 Примеры:

  1. f:= (a + b) * pi – c

ab + pi * c – f :=

  1. f:= atan ( sqrt (x2 / (x2 - 1) )

xx * xx * 1 - / sqrt atan f :=

 

Для первого примера.

Data Segment

a    DQ    2.5

b    DQ    6.0

c    DQ    3.5

f    DQ    ?

Data End

Code Segment

    Assume cs : Code, ds : Data

    Public f

Expression Proc Far

    Fld a    st(0)

    Fld b    st(1)

    Fadd    st(0) + st(1) st(0)

    Fld pi    pi st(1)

    Fmnl    st(0) * st(1) st(0)

    Fld c    st(1)

    Fsub    st(0) – st(1) st(0)

    Fstp f    f:= st(0); st(1) st(0)

    Ret

Expression EndP

Code EndS

Построение преобразователей информации и устройств с памятью.

Архитектура ЭВМ включает в себя как структуру, отражающую состав ПК, так и программно – математическое обеспечение. Структура ЭВМ - совокупность элементов и связей между ними. Основным принципом построения всех современных ЭВМ является программное управление.
Основы учения об архитектуре вычислительных машин были заложены Джон фон Нейманом. Совокупность этих принципов породила классическую (фон-неймановскую) архитектуру ЭВМ. 

Фон Нейман не только выдвинул основополагающие принципы логического устройства ЭВМ, но и предложил ее структуру, представленную на рисунке. 



Положения фон Неймана:

  • Компьютер состоит из нескольких основных устройств (арифметико-логическое устройство, управляющее устройство, память, внешняя память, устройства ввода и вывода)

  • Арифметико-логическое устройство – выполняет логические и арифметические действия, необходимые для переработки информации, хранящейся в памяти

  • Управляющее устройство – обеспечивает управление и контроль всех устройств компьютера (управляющие сигналы указаны пунктирными стрелками)

  • Данные, которые хранятся в запоминающем устройстве, представлены в двоичной форме

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

  • Для ввода и вывода информации используются устройства ввода и вывода.

Один из важнейших принципов – принцип хранимой программы – требует, чтобы программа закладывалась в память машины так же, как в нее закладывается исходная информация.

  • Арифметико-логическое устройство и устройство управления в современных компьютерах образуют процессор ЭВМ. Процессор, который состоит из одной или нескольких больших интегральных схем называется микропроцессором или микропроцессорным комплектом.

  • Процессор – функциональная часть ЭВМ, выполняющая основные операции по обработке данных и управлению работой других блоков. Процессор является преобразователем информации, поступающей из памяти и внешних устройств.

  • Запоминающие устройства обеспечивают хранение исходных и промежуточных данных, результатов вычислений, а также программ. Они включают: оперативные (ОЗУ), сверхоперативные СОЗУ, постоянные (ПЗУ) и внешние (ВЗУ) запоминающие устройства.

  • Оперативные ЗУ хранят информацию, с которой компьютер работает непосредственно в данное время (резидентная часть операционной системы, прикладная программа, обрабатываемые данные). В СОЗУ хранится наиболее часто используемые процессором данные. Только та информация, которая хранится в СОЗУ и ОЗУ, непосредственно доступна процессору.

  • Внешние запоминающие устройства (накопители на магнитных дисках, например, жесткий диск или винчестер) с емкостью намного больше, чем ОЗУ, но с существенно более медленным доступом, используются для длительного хранения больших объемов информации. Например, операционная система (ОС) хранится на жестком диске, но при запуске компьютера резидентная часть ОС загружается в ОЗУ и находится там до завершения сеанса работы ПК. 

  • ПЗУ (постоянные запоминающие устройства) и ППЗУ (перепрограммируемые постоянные запоминающие устройства) предназначены для постоянного хранения информации, которая записывается туда при ее изготовлении, например, ППЗУ для BIOS.
    В качестве устройства ввода информации служит, например, клавиатура. В качестве устройства вывода – дисплей, принтер и т.д.
    В построенной по схеме фон Неймана ЭВМ происходит последовательное считывание команд из памяти и их выполнение. Номер (адрес) очередной ячейки памяти, из которой будет извлечена следующая команда программы, указывается специальным устройством – счетчиком команд в устройстве управления.

Вопросы для самопроверки:

  • Классификация памяти.

  • Виды прерываний.

  • Программно доступные регистры процессора.

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

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

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

  • Структура PSP.

  • Виды адресаций.

Литература:

  1. Евстафьев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL – 2-е изд., стер. – М.: Издательский дом «Додека-XXI», 2004. – 288 с. (Серия «Мировая электроника»)

  2. Информатика 2003 /А.П. Алексеев

  3. Программируемые логические контроллеры VIPA System 200 V 2004 /М. Ананских

1   2   3   4   5   6   7   8   9   10   ...   20

Похожие:

Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Учебно-методический комплекс дисциплины составлен на основании требований государственного образовательного стандарта высшего профессионального...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Системы и сети связи 090104. 65 – Комплексная защита объектов информатизации Форма подготовки очная
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Защита информационных процессов в компьютерных системах 090104. 65 – Комплексная защита объектов информатизации Форма подготовки...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины
Туризм, утвержденного приказом Министерства образования и науки РФ от 20. 01. 2006 г. №739гум/бак. Учебно-методический комплекс обсужден...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины «Формальности проживания в гостинице»
Туризм, утвержденного приказом Министерства образования и науки РФ от 20. 01. 2006 г. №739гум/бак. Учебно-методический комплекс обсужден...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Учебно-методический комплекс составлен в соответствии с требованиями государственного образовательного стандарта высшего профессионального...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Учебно-методический комплекс составлен в соответствии с требованиями государственного образовательного стандарта высшего профессионального...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры «Финансы и кредит»
Учебно-методический комплекс составлен в соответствии с требованиями государственного образовательного стандарта высшего профессионального...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины организация работы гостиниц 100200. 62 «Туризм»
Туризм, утвержденного приказом Министерства образования и науки РФ от 20. 01. 2006 г. №739гум/бак. Учебно-методический комплекс обсужден...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры компьютерных систем «03»
Учебно-методический комплекс составлен в соответствии с требованиями федерального государственного образовательного стандарта высшего...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Учебно-методический комплекс составлен в соответствии с требованиями федерального государственного образовательного стандарта высшего...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины обсужден на заседании кафедры...
Учебно-методический комплекс составлен в соответствии с требованиями государственного стандарта высшего профессионального образования...
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Проект) (КР,КП), Расчётно-графическая работа (ргр) Домашнее задание...
Учебно-методический комплекс дисциплины обсуждён и утверждён на заседании кафедры «Гидротехнические сооружения»
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс составлен на основании требований государственного...
Учебно-методический комплекс дисциплины обсуждена на заседании кафедры Информационные системы управления «29» июня 2011 г
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс дисциплины материаловедение направление...
Учебная программа обсуждена на заседании кафедры технологии и предпринимательства
Учебно-методический комплекс дисциплины обсужден на заседании кафедры информационной безопасности «7» icon Учебно-методический комплекс Наименование дисциплины Аритмология...
Переутверждено на заседании кафедры госпитальной хирургии с курсом детской хирургии

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск