Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает
Вид материала | Конспект |
Лекция 4. Описание системы команд микропроцессоров Intel (2 пары + ср) Порядок описания команд будет следующим Для описания команд приняты обозначения |
- 8Б класс Химия Пар. 30 (№1-3), Пар. 31 (№1-5), рабочая тетрадь эти же темы Биология, 8.14kb.
- Рабочая программа учебной дисциплины (модуля) Системное программирование, 108.12kb.
- Смирнягин курс США население Лекция население США этой теме будут посвящены три лекции, 288.75kb.
- Инструкция подумайте о ситуациях, в которых Ваши желания отличаются от желаний другого, 98.01kb.
- Лекция 8 Системное программирование. Системное проектирование взаимодействия процессов., 225.21kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 75.64kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 73.71kb.
- Конспект лекций по курсу "Информатика и использование компьютерных технологий в образовании", 1797.24kb.
- Календарно-тематический план лекций по факультетской терапии 4 курс (8 семестр) специальность, 119.31kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
Лекция 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 | | |
Порядок описания команд будет следующим:
- название команды с расшифровкой ее мнемонического обозначения — это облегчит процесс запоминания и последующего использования команды в соответствии с ее функциональным назначением;
- синтаксическое описание команды, поясняющее возможные сочетания операндов для данной команды. При этом сложные синтаксические описания будут приведены в виде синтаксических диаграмм, что позволит в наиболее компактной форме изобразить все возможные сочетания операндов;
- состояние флагов после выполнения команды;
- описание типового применения команды с примером и (или) ссылка на урок, в котором демонстрируется пример применения команды;
- номера занятий и приложений, а также список команд, которые функционально связаны с данной командой.
Для описания команд приняты обозначения:
- Для описания состояния флагов после выполнения некоторой команды будем использовать выборку из таблицы, отражающей структуру регистра флагов 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
- В нижней строке этой таблицы приводятся значения флагов после выполнения команды. При этом используются следующие обозначения:
- 1 — после выполнения команды флаг устанавливается (равен 1);
- 0 — после выполнения команды флаг сбрасывается (равен 0);
- r — значение флага зависит от результата работы команды;
- ? — после выполнения команды флаг не определен;
- пробел — после выполнения команды флаг не изменяется;
- 1 — после выполнения команды флаг устанавливается (равен 1);
- Для представления операндов в синтаксических диаграммах используются следующие обозначения:
- r8, r16, r32 — операнд в одном из регистров размером байт, слово или двойное слово;
- m8, m16, m32, m48 — операнд в памяти размером байт, слово, двойное слово или 48 бит;
- i8, i16, i32 — непосредственный операнд размером байт, слово или двойное слово;
- a8, a16, a32 — относительный адрес (смещение) в сегменте кода.
- r8, r16, r32 — операнд в одном из регистров размером байт, слово или двойное слово;
- На многих диаграммах в целях компактности возможные сочетания операндов показаны в виде следующей конструкции:
Конструируя команду на основе подобной синтаксической диаграммы, вы должны помнить о соответствии типов. В подобной диаграмме допустимы только следующие сочетания: "r8, m8", "r16, m16", "r32, m32". Например, сочетание "r8, m16" недопустимо. Однако есть единичные случаи, когда подобные сочетания возможны; тогда они специально оговариваются.
- Описанная в данном приложении система команд в полном объеме поддерживается микропроцессором Pentium. Предыдущие модели микропроцессора могут не поддерживать отдельные команды. Чтобы прояснить этот момент, мы будем указывать в примерах для каждой команды директиву типа .286. Это будет означать, что описываемая команда поддерживается всеми моделями микропроцессора, начиная с i286. Если ничего не указывается, то это означает, что данная команда работает на всех моделях микропроцессоров Intel, начиная с i8086/8088.