Государственное Образовательное Учреждение высшего профессионального образования Московский Авиационный Институт Государственный Технический Университет "маи" кафедра 304. конспект

Вид материалаКонспект

Содержание


Команды преобразования длины
1) Логические команды
Перечислим основные команды
2) Команды сдвигов
Рассмотрим их на командах однократного сдвига
Сегментация памяти
Логический адрес
Ячейка памяти
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   15

Команды преобразования длины




Эти команды часто требуются перед делением, флаги – не модифицируют.

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

физический адрес байта



Ячейка памяти – это неделимый в данной операции набор последовательных битов.