Конспект лекций по курсу язык ассемблера ibm icon

Конспект лекций по курсу язык ассемблера ibm


1 чел. помогло.
Смотрите также:
Конспект лекций удк 651. 5 Ббк 60. 844 Конспект лекций по курсу «Делопроизводство»...
Конспект лекций удк 651. 5 Ббк 60. 844 Конспект лекций по курсу «Делопроизводство»...
Опорный конспект лекций по макроэкономике Автор: Фридман А. А...
Конспект лекций по курсу «Организация производства»...
Конспект лекций по курсу «Русский язык и культура речи»...
Конспект лекций по курсу “Начертательная геометрия и инженерная графика” Кемерово 2002...
Горобец е. Г., Карлина о. А., Нарушевич а. Г., Нечепуренко м. Ю...
Горобец е. Г., Карлина о. А., Нарушевич а. Г., Нечепуренко м. Ю...
Конспект лекций часть 1 2008 перечень ссылок основная: М...
Конспект лекций по курсу «бизнес-планирование в условиях рынка»...
Конспект лекций по курсу “ Общая химическая технология” для студентов специальности 090200 всех...
Конспект лекций по курсу «теория чисел» Методическая разработка...



Загрузка...
страницы: 1   2   3   4   5   6   7   8   9   ...   12
вернуться в начало
скачать
^

Система команд МП Intel 80x86



Арифметические команды
  1. Команды сложения и вычитания


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

Перечислим команды, относящиеся к группе команд сложения и вычитания:

Группа а) ADD op1, op2 ; op1 := op1+op2

SUB op1, op2 ; op1 := op1 – op2

Сложение (вычитание) операндов в дополнительном двоичном коде, результат помещается на место первого операнда, второй операнд не изменяется.

Команды корректируют регистр флагов FLAGS в соответствии с результатом операции, а именно:

ZF – нулевой рез-т,

SF – знак результата,

PF – флаг четности,

CF, AF – флаги переносов,

OF – флаг переполнения.


Примеры:

ADD AH, 12 ; AH := AH + 12 (1Б)

SUB z, BX ; z := z – BX (2Б)


Группа б) ADC op1, op2 ; op1 := op1+op2+CF

SBC op1, op2 ; op1 := op1 – op2 – CF

Сложение (вычитание) операндов с переносом, образованным предыдущей командой.Модифицирует флаги аналогично группе а.

Например, если требуется сложить двойные слова, расположенные в парах регистров

(AX, BX) := (AX, BX) + (CX, DX),

причем AX, CX – старшие байты слагаемых,

BX, DX – младшие байты.

Сложение выполняется двумя командами:

ADD BX, DX

ADC AX, CX


Группа в) Специальный случай сложения – изменение операнда на единицу.

INC op ; op := op +1 (инкремент)

DEC op ; op := op –1 (декремент)

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

Группа г) ^ Десятичная коррекция - анализ и преобразование сложения(вычитания) для BCD кодов. BCD-операнды обрабатываются обычными командами сложения и вычитания, а затем размещается команда десятичной коррекции, которая обрабатывает только один байт данных, находящихся в AL, поэтому команды десятичной коррекции операндов не имеют (подразумеваемая адресация).

DAA; коррекция после сложения

DAS; коррекция после вычитания.

Например:

ADD AL, y

DAA

SUB AL, DH

DAS

BCD-операнды, представленные более, чем одним байтом должны обрабатываться побайтно.

Команды десятичной коррекции модифицирует флаги аналогично п.(а), за исключением флагов AF и OF.
  1. ^

    Дополнительные команды



Группа а) Команда сравнения

CHP op 1, op 2; op 1 - op2

Результат нигде не запоминается, команда корректирует арифметические флаги ZF, SF,PF,CF,AF,OF.


Группа б) Команда изменения знака

NEG op ; op := -op.

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

Пример,

MOV AH, 1 ; AH := 1

NEG AH ; AH := -1

Если операнд равен нулю, то его значение не изменяется.

Команда корректирует флаги аналогично группе а; причем

CF=1, кроме случая, когда операнд равен нулю;

OF=0, кроме случая, когда op=-128 (для 1Б) = 80h (это значит, что число заняло всю разрядность), тогда OF=1, а операнд остается без изменения.
  1. ^

    Команды умножения и деления




Группа а) Умножение

MUL op ; умножение целых чисел без знака

IMUL op ; умножение целых чисел со знаком

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

Команды действуют одинаково:

- для байтов AX := AL*op

- для слов (DX,AX) := AX*op

Т.к. результат получается удвоенной разрядности относительно операндов, то при умножении слов он располагается в стандартной паре регистров (DX,AX), причем DX хранит старшие разряды. Команды модифицируют флаги:

СF=OF=0 , если старшая половина результата AH нулевая или совпадает по знакам.

СF=OF=1 , если старшие разряды не нулевые.


Группа б) Деление

DIV op; деление целых чисел без знака

IDIV op; деление целых чисел со знаковом

где op – аналогично умножению.

Команды выполняют деление нацело и формируют два результата: целое частное и остаток.

Деление слова на байт выполняется по схеме

АН:=АХ mod op (остаток)

AL:=AX div op (частное)


Деление двойного слова на слово

DX := (DX,AX) mod op

AX := (DX,AX) div op

При делении слова на байт делимое заранее должно быть размещено в аккумуляторе и сдвинуто в сторону младшего байта в АХ или AL соответственно. Деление является дополнительной к умножению командой.

Флаги не модифицируются, но может возникнуть ошибка «деление на ноль или переполнение», которая возникает, если делитель нулевой или частное не помещается в соответствующее ему место.

При появлении этой ошибки микропроцессор прекращает выполнение программы.
  1. ^

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




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

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 ;






оставить комментарий
страница3/12
Дата02.10.2011
Размер0,99 Mb.
ТипКонспект, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   2   3   4   5   6   7   8   9   ...   12
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх