Государственное Образовательное Учреждение высшего профессионального образования Московский Авиационный Институт Государственный Технический Университет "маи" кафедра 304. конспект
Вид материала | Конспект |
СодержаниеКоманды преобразования длины 1) Логические команды Перечислим основные команды 2) Команды сдвигов Рассмотрим их на командах однократного сдвига Сегментация памяти Логический адрес Ячейка памяти |
- Инновационной образовательной программы, 1090.47kb.
- Самостоятельная работа 2 часа в неделю всего часов, 28.69kb.
- Самостоятельная работа 2 часа в неделю всего часов, 45.89kb.
- Самостоятельная работа 2 часа в неделю всего часов, 73.46kb.
- Самостоятельная работа 2 часа в неделю всего часов, 46.6kb.
- Самостоятельная работа 2 часа в неделю всего часов, 41.37kb.
- Самостоятельная работа 2 часа в неделю всего часов, 41.08kb.
- Самостоятельная работа 2 часа в неделю всего часов, 64.33kb.
- Самостоятельная работа 2 часа в неделю всего часов, 29.72kb.
- Самостоятельная работа 2 часа в неделю всего часов, 33.42kb.
Команды преобразования длины
Эти команды часто требуются перед делением, флаги – не модифицируют.
CBW – преобразует байт со знаком в AL, в слово со знаком в АХ путем распространения старшего бита AL по всем разрядам AH;
CWD – преобразует слово со знаком в АХ в двойное слово со знаком в (DX,AX) аналогично CBW.
Так же существуют команды десятичной коррекции умножения и деления AAM, AAD
Команды обработки битов
Данная группа команд отличается отсутствием межразрядных переносов. Команды делятся на 2 группы.
1) Логические команды
Общие черты:
- Выполняют побитовую обработку операндов параллельно, без переносов; единица трактуется как «истина», ноль – «ложь»;
- модифицируют флаги, но важен только флаг ZF «нулевой результат»;
- операндами могут быть байты или слова в регистрах или ячейках памяти; второй операнд может быть непосредственным операндом.
Перечислим основные команды
NOT op; отрицание (инверсия кода). Флаги не модифицирует.
AND op1, op2; op1:= op1 op2
Например, 0Fh 15h = 05h
-
00001111
00010101
00000101
OR op1, op2; op1:= op1 v op2
Например, 0Fh v 15h = 1Fh
XOR op1, op2; op1 := op1 op2
Например, 0Fh v 15h = 1Ah
TEST op1, op2; op1 op2 – результат не запоминается;
Эта операция называется «логическое сравнение». Цель формирование флага ZF = 1 - если результат нулевой, иначе ZF = 0.
Как правило, второй операнд трактуется как маска, хранящая единицы в тех разрядах, которые нужны для дальнейшей обработки.
2) Команды сдвигов
Сдвиги на n разрядов влево можно трактовать, как умножение на 2n, потому все команды сдвигов имеют 2 операнда:
оp1 – рассматривается, как набор битов, подлежащих сдвигу влево или вправо;
op2 – константа сдвига, т.е. целое число без знака, определяющее величину сдвига нового операнда; может принимать значение 1 или CL. Единица означает сдвиг на 1 разряд, а CL – содержимое регистра CL, хранящего значение n. Сдвиг с CL выполняется как повтор однократных сдвигов, содержимое CL не меняется, при CL=0, сдвиг блокируется. Результат записывается на место первого операнда. Команды сдвига модифицируют флаги, кроме AF, а “уходящий” бит фиксируется в CF.
Команды сдвига бывают логические, арифметические и циклические.
Рассмотрим их на командах однократного сдвига:
Логический сдвиг – для беззнаковых чисел может применяться для ускоренного умножения (деления) на 2, выполняется по схеме
CF
op
SHL op,1 ; сдвиг влево
SHR op,1 ; сдвиг вправо 0
Арифметический сдвиг – применяется для ускоренного умножения (деления) на 2 чисел со знаком, выполняется по схеме
SAL op,1 ; сдвиг влево
SAR op,1 ; сдвиг вправо 0
Циклический сдвиг – для беззнаковых целых, выполняется по схеме
ROL op,1 ; сдвиг влево
ROR op,1 ; сдвиг вправо
Циклический сдвиг через флаг (уходящий бит возвращается в операнд и одновременно фиксируется в CF), выполняется по схеме
R
CF
op
CL ор,1 сдвиг влево
RCR op,1 сдвиг вправо
Циклические сдвиги позволяют образовать передачу числа последовательным кодом и анализировать разряды числа. В МП 80286 и позже допускается использование второго операнда без загрузки в CL (непосредственный операнд), т.е. SHL AX,3 ;
Сегментация памяти
Память трактуется как одномерный массив байтов, каждый байт ассоциируется с двоичным адресом (номером), который называется физическим адресом.
Физический адрес – это 20-битовое беззнаковое целое от 0h до FFFFFh (метка h обозначает 16-ричную систему счисления), которое позволяет описать адресное пространство объемом 1 Мбайт.
Разрядность основного слова МП равна 2 Байта = 16 бит, поэтому для вычисления физического адреса используется выделение из адресного пространства сегментов по 64Кбайта (216), и в пределах сегмента можно определять адрес с помощью 16-битового кода.
Сегменты в адресном пространстве должны размещаться, только начиная с байтов, адреса которых кратны 16, т.е. 4 младших бита – нулевые. Такие адреса называются параграфами.
Логический адрес представляет собой пару двухбайтовых беззнаковых целых чисел, разделенных двоеточием:
- начальный адрес сегмента (базовый),
- смещение (эффективный адрес), указывает расстояние в байтах от начала сегмента до адресуемой ячейки памяти.
Например, могут быть указаны регистры, хранящие соответствующие коды
CS : IP
При вычислении физического адреса МП расширяет содержимое сегментного регистра четырьмя нулевыми битами, затем суммирует полученное число со смещением. Получим следующую схему образования физического адреса.
15 12 11 0
-
DS
начальный адрес сегмента
0 0 0 0
+
15 0
смещение внутри сегмента
19 0
физический адрес байта
Ячейка памяти – это неделимый в данной операции набор последовательных битов.