Информатика и информационные технологии

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

Рубрика Программирование, компьютеры и кибернетика
Вид шпаргалка
Язык русский
Дата добавления 25.11.2014
Размер файла 162,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Регистр dr6 называется регистром состояния отладки. Биты этого регистра устанавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения с номером 1.

Перечислим эти биты и их назначение:

1) b0 - если этот бит установлен в 1, то последнее исключение (прерывание) возникло в результате достижения контрольной точки, определенной в регистре dr0;

2) b1 - аналогично b0, но для контрольной точки в регистре dr1;

3) b2 - аналогично b0, но для контрольной точки в регистре dr2;

4) b3 - аналогично b0, но для контрольной точки в регистре dr3;

5) bd (бит 13) - служит для защиты регистров отладки;

6) bs (бит 14) - устанавливается в 1, если исключение 1 было вызвано состоянием флага tf = 1 в регистре eflags;

7) bt (бит 15) устанавливается в 1, если исключение 1 было вызвано переключением на задачу с установленным битом ловушки в TSS t = 1. Все остальные биты в этом регистре заполняются нулями. Об-работчик исключения 1 по содержимому dr6 должен определить причину, по которой произошло исключение, и выполнить необходимые действия.

Регистр dr7 называется регистром управления отладкой. В нем для каждого из четырех регистров контрольных точек отладки имеются поля, позволяющие уточнить следующие условия, при которых следует сгенерировать прерывание:

1) место регистрации контрольной точки - только в текущей задаче или в любой задаче. Эти биты занимают младшие 8 бит регистра dr7 (по 2 бита на каждую контрольную точку (фактически точку прерывания), задаваемую регистрами dr0, drl, dr2, dr3 соответственно).

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

Второй бит в каждой паре определяет глобальное разрешение, которое говорит о том, что данная контрольная точка действует в пределах адресных пространств всех задач, находящихся в системе;

2) тип доступа, по которому инициируется прерывание: только при выборке команды, при записи или при записи / чтении данных. Биты, определяющие подобную природу возникновения прерывания, локализуются в старшей части данного регистра. Большинство из системных регистров программно доступно.

47. Структура программы на ассемблере

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

Предложения ассемблера бывают четырех типов.

Команды или инструкции, представляющие собой символические аналоги машинных команд.

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

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

inc eax

- макрокоманды - оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями.

Примером макрокоманды может служить следующий макрос конца программы:

exit macro

mov ax,4c00h

int 21h

endm

- директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий.

У директив нет аналогов в машинном представлении; В качестве примера приведем директиву TITLE, которая задает заголовок файла листинга: %TITLE «Листинг 1»

- строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором. Пример:

; эта строчка является комментарием

48. Синтаксис ассемблера

Предложения, составляющие программу, могут представлять собой синтаксическую конструкцию, соответствующую команде, макрокоманде, директиве или комментарию. Для того чтобы транслятор ассемблера мог распознать их, они должны формироваться по определенным синтаксическим правилам. Для этого лучше всего использовать формальное описание синтаксиса языка наподобие правил грамматики. Наиболее распространенные способы подобного описания языка программирования - синтаксические диаграммы и расширенные формы Бэкуса-Наура. При работе с синтаксическими диаграммами обращайте внимание на направление обхода, указываемое стрелками. Синтаксические диаграммы отражают логику работы транслятора при разборе входных предложений программы.

Допустимые символы:

1) все латинские буквы: A - Z, a - z;

2) цифры от 0 до 9;

3) знаки? @, $, &;

4) разделители.

Лексемами являются следующие.

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

2. Цепочки символов - последовательности символов, заключенные в одинарные или двойные кавычки.

3. Целые числа.

Возможные типы операторов ассемблера.

1. Арифметические операторы. К ним относятся:

1) унарные «+» и «--»;

2) бинарные «+» и «--»;

3) умножения «*»;

4) целочисленного деления «/»; 5) получения остатка от деления «mod».

2. Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов.

3. Операторы сравнения (возвращают значение «истина» или «ложь») предназначены для формирования логических выражений.

4. Логические операторы выполняют над выражениями побитовые операции.

5. Индексный оператор [].

6. Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением.

7. Оператор переопределения сегмента «:» (двоеточие) заставляет вычислять физический адрес относительно конкретно задаваемой сегментной составляющей.

8. Оператор именования типа структуры «.» (точка) также заставляет транслятор производить определенные вычисления, если он встречается в выражении.

9. Оператор получения сегментной составляющей адреса выражения seg возвращает физический адрес сегмента для выражения, в качестве которого могут выступать метка, переменная, имя сегмента, имя группы или некоторое символическое имя.

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

49. Директивы сегментации

Сегментация является частью более общего механизма, связанного с концепцией модульного программирования. Она предполагает унификацию оформления объектных модулей, создаваемых компилятором, в том числе с разных языков программирования. Это позволяет объединять программы, написанные на разных языках. Именно для реализации различных вариантов такого объединения и предназначены операнды в директиве SEGMENT.

Рассмотрим их подробнее.

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

1) BYTE - выравнивание не выполняется;

2) WORD - сегмент начинается по адресу, кратному двум, т. е. последний (младший) значащий бит физического адреса равен 0 (выравнивание на границу слова);

3) DWORD - сегмент начинается по адресу, кратному четырем;

4) PARA - сегмент начинается по адресу, кратному 16;

5) PAGE - сегмент начинается по адресу, кратному 256;

6) MEMPAGE - сегмент начинается по адресу, кратному 4 Кбайт.

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

1) PRIVATE - сегмент не будет объединяться с другими сегментами с тем же именем вне данного модуля;

2) PUBLIC - заставляет компоновщик соединить все сегменты с одинаковыми именами;

3) COMMON - располагает все сегменты с одним и тем же именем по одному адресу;

4) AT xxxx - располагает сегмент по абсолютному адресу параграфа;

5) STACK - определение сегмента стека.

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

4. Атрибут размера сегмента:

1) USE16 - это означает, что сегмент допускает 16-разрядную адресацию;

2) USE32 - сегмент будет 32-разрядным. Необходимо как-то компенсировать невозможность

напрямую управлять размещением и комбинированием сегментов. Для этого стали использовать директиву указания модели памяти MODEL. Эта директива связывает сегменты, которые в случае использования упрощенных директив сегментации имеют предопределенные имена, с сегментными регистрами (хотя явно инициализировать ds все равно придется).

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

50. Структура машинной команды

Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия. Каждая команда содержит элементы, определяющие:

1) что делать?

2) объекты, над которыми нужно что-то делать (эти элементы называются операндами);

3) как делать?

Максимальная длина машинной команды - 15 байт.

1. Префиксы.

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

1) префикс замены сегмента;

2) префикс разрядности адреса уточняет разрядность адреса (32- или 16-разрядный);

3) префикс разрядности операнда аналогичен префиксу разрядности адреса, но указывает на разрядность операндов (32- или 16-разрядные), с которыми работает команда;

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

2. Код операции.

Обязательный элемент, описывающий операцию, выполняемую командой.

3. Байт режима адресации modr/m.

Значения этого байта определяет используемую форму адреса операндов. Операнды могут находиться в памяти в одном или двух регистрах. Если операнд находится в памяти, то байт modr/m определяет компоненты (смещение, базовый и индексный регистры),

используемые для вычисления его эффективного адреса. Байт modr/m состоит из трех полей:

1) поле mod определяет количество байт, занимаемых в команде адресом операнда;

2) поле reg/коп определяет либо регистр, находящийся в команде на месте первого операнда, либо возможное расширение кода операции;

3) поле r/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod = 11), либо используемые для вычисления эффективного адреса (совместно с полем смещение в команде) базовые и индексные регистры.

4. Байт масштаб - индекс - база (байт sib). Используется для расширения возможностей адресации операндов. Байт sib состоит из трех полей:

1) поля масштаба ss. В этом поле размещается масштабный множитель для индексного компонента index, занимающего следующие 3 бита байта sib;

2) поля index. Используется для хранения номера индексного регистра, который применяется для вычисления эффективного адреса операнда;

3) поля base. Используется для хранения номера базового регистра, который также применяется для вычисления эффективного адреса операнда.

5. Поле смещения в команде.

8-, 16- или 32-разрядное целое число со знаком, представляющее собой, полностью или частично (с учетом вышеприведенных рассуждений), значение эффективного адреса операнда.

6. Поле непосредственного операнда. Необязательное поле, представляющее собой 8-,

16- или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта modr/m.

51. Способы задания операндов команды

Операнд задается неявно на микропрограммном уровне

В этом случае команда явно не содержит операндов. Алгоритм выполнения команды использует некоторые объекты по умолчанию (регистры, флаги в eflags и т. д.).

Операнд задается в самой команде (непосредственный операнд)

Операнд находится в коде команды, т. е. является ее частью. Для хранения такого операнда в команде выделяется поле длиной до 32 бит. Непосредственный операнд может быть только вторым операндом (источником). Операнд-получатель может находиться либо в памяти, либо в регистре. Операнд находится в одном из регистров Регистровые операнды указываются именами регистров. В качестве регистров могут использоваться:

1) 32-разрядные регистры EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP;

2) 16-разрядные регистры AX, BX, CX, DX, SI, DI, SP, BP;

3) 8-разрядные регистры AH, AL, BH, BL, CH, CL, DH,

DL;

4) сегментные регистры CS, DS, SS, ES, FS, GS. Например, команда add ax,bx складывает содержимое регистров ax и bx и записывает результат в bx. Команда dec si уменьшает содержимое si на 1.

Операнд располагается в памяти

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

В свою очередь, косвенная адресация имеет следующие разновидности:

1) косвенную базовую адресацию; другое ее название - регистровая косвенная адресация;

2) косвенную базовую адресацию со смещением;

3) косвенную индексную адресацию со смещением;

4) косвенную базовую индексную адресацию;

5) косвенную базовую индексную адресацию со смещением.

Операндом является порт ввода/вывода

Помимо адресного пространства оперативной памяти, микропроцессор поддерживает адресное пространство ввода-вывода, которое используется для доступа к устройствам ввода-вывода. Объем адресного пространства ввода-вывода составляет 64 Кбайт. Для любого устройства компьютера в этом пространстве выделяются адреса. Конкретное значение адреса в пределах этого пространства называется портом ввода-вывода. Физически порту ввода-вывода соответствует аппаратный регистр (не путать с регистром микропроцессора), доступ к которому осуществляется с помощью специальных команд ассемблера in и out.

Операнд находится в стеке

Команды могут совсем не иметь операндов, иметь один или два операнда. Большинство команд требуют двух операндов, один из которых является операндом-источником, а второй - операндом назначения. Важно то, что один операнд может располагаться в регистре или памяти, а второй операнд обязательно должен находиться в регистре или непосредственно в команде. Непосредственный операнд может быть только операндом-источником. В двухоперандной машинной команде возможны следующие сочетания операндов:

1) регистр - регистр;

2) регистр - память;

3) память - регистр;

4) непосредственный операнд - регистр;

5) непосредственный операнд - память.

52. Способы адресации

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

Это простейший вид адресации операнда в памяти, так как эффективный адрес содержится в самой команде и для его формирования не используется никаких дополнительных источников или регистров. Эффективный адрес берется непосредственно из поля смещения машинной команды, которое может иметь размер 8, 16, 32 бит. Это значение однозначно определяет байт, слово или двойное слово, расположенные в сегменте данных.

Прямая адресация может быть двух типов.

Относительная прямая адресация

Используется для команд условных переходов, для указания относительного адреса перехода. Относительность такого перехода заключается в том, что в поле смещения машинной команды содержится 8-, 16- или 32-битное значение, которое в результате работы команды будет складываться с содержимым регистра указателя команд ip/eip. В результате такого сложения получается адрес, по которому и осуществляется переход.

Абсолютная прямая адресация

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

Косвенная базовая (регистровая) адресация

При такой адресации эффективный адрес операнда может находиться в любом из регистров общего назначения, кроме sp/esp и bp/ebp (это специфические регистры для работы с сегментом стека). Синтаксически в команде этот режим адресации выражается заключением имени регистра в квадратные скобки [].

Косвенная базовая (регистровая) адресация со смещением

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

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

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

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

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

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

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

53. Команды пересылки данных

Команды пересылки данных общего назначения

К этой группе относятся следующие команды:

1) mov - это основная команда пересылки данных;

2) xchg - применяют для двунаправленной пересылки данных.

Команды ввода-вывода в порт

Принципиально управлять устройствами напрямую через порты несложно:

1) in аккумулятор, номерпорта - ввод в аккумулятор из порта с номером номерпорта;

2) out порт, аккумулятор - вывод содержимого аккумулятора в порт с номером номерпорта.

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

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

Команды работы со стеком

Эта группа представляет собой набор специализированных команд, ориентированных на организацию гибкой и эффективной работы со стеком.

Стек - это область памяти, специально выделяемая для временного хранения данных программы.

Для работы со стеком предназначены три регистра:

1) ss - сегментный регистр стека;

2) sp/esp - регистр указателя стека;

3) bp/ebp - регистр указателя базы кадра стека. Для организации работы со стеком существуют специальные команды записи и чтения.

1. push источник - запись значения источникв вершину стека.

2. pop назначение - запись значения из вершины стека по месту, указанному операндом назначение. Значение при этом «снимается» с вершины стека.

3. pusha - команда групповой записи в стек.

4. pushaw - почти синоним команды pusha. Атрибут разрядности может принимать значение use16 или use32. Р

5. pushad - выполняется аналогично команде pusha, но есть некоторые особенности.

Следующие три команды выполняют действия, обратные вышеописанным командам:

1) popa;

2) popaw;

3) popad.

Группа команд, описанная ниже, позволяет сохранить в стеке регистр флагов и записать слово или двойное слово в стеке.

1. pushf - сохраняет регистр флагов в стеке.

2. pushfw - сохранение в стеке регистра флагов размером в слово. Всегда работает как pushf с атрибутом use16.

3. pushfd - сохранение в стеке регистра флагов flags или eflags в зависимости от атрибута разрядности сегмента (т. е. то же, что и pushf).

Аналогично, следующие три команды выполняют действия, обратные рассмотренным выше операциям:

1) popf;

2) popfw;

3) popfd.

54. Арифметические команды

Такие команды работают с двумя типами:

1) целыми двоичными числами, то есть с числами, закодированными в двоичной системе счисления.

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

Микропроцессор выполняет сложение операндов по правилам сложения двоичных чисел.

В системе команд микропроцессора имеются три команды двоичного сложения:

1) inc операнд - увеличение значения операнда;

2) add операнд1, операнд2 - сложение;

3) adc операнд1,операнд2 - сложение с учетом флага переноса cf.

Вычитание двоичных чисел без знака

Если уменьшаемое больше вычитаемого, то разность положительна. Если уменьшаемое меньше вычитаемого, возникает проблема: результат меньше 0, а это уже число со знаком.

После вычитания чисел без знака нужно анализировать состояние флага CF. Если он установлен в 1, то произошел заем из старшего разряда и результат получился в дополнительном коде.

Вычитание двоичных чисел со знаком Но для вычитания способом сложения чисел со знаком в дополнительном коде необходимо представлять оба операнда - и уменьшаемое, и вычитаемое. Результат тоже нужно рассматривать как значение в дополнительном коде. Но здесь возникают сложности. Прежде всего они связаны с тем, что старший бит операнда рассматривается как знаковый.

По содержимому флага переполнения of. Его установка в 1 говорит о том, что результат вышел за диапазон представления знаковых чисел (т. е. изменился старший бит) для операнда данного размера, и программист должен предусмотреть действия по корректировке результата.

Принцип вычитания чисел с диапазоном представления, превышающим стандартные разрядные сетки операндов, тот же, что и при сложении, т. е. используется флаг переноса cf. Нужно только представлять себе процесс вычитания в столбик и правильно комбинировать команды микропроцессора с командой sbb.

Для умножения чисел без знака предназначена команда

mul сомножитель_1

Для умножения чисел со знаком предназначена команда

[imul операнд_1, операнд_2, операнд_3]

Для деления чисел без знака предназначена команда div делитель

Для деления чисел со знаком предназначена команда idiv делитель

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

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

1. Отрицание (логическое НЕ) - логическая операция над одним операндом, результатом которой является величина, обратная значению исходного операнда.

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

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

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

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

Cледующий набор команд, поддерживающих работу с логическими данными:

1) and операнд_1, операнд_2 - операция логического умножения;

2) or операнд_1, операнд_2 - операция логического сложения;

3) xor операнд_1, операнд_2 - операция логического исключающего сложения;

4) test операнд_1, операнд_2 - операция «проверить» (способом логического умножения)

5) not операнд - операция логического отрицания.

а) для установки определенных разрядов (бит) в 1 применяется команда or операнд_1, операнд_2;

б) для сброса определенных разрядов (бит) в 0 применяется команда and операнд_1, операнд_2;

в) команда xor операнд_1, операнд_2 применяется:

- для выяснения того, какие биты в операнд_1 и операнд_2 различаются;

- для инвертирования состояния заданных бит в операнд_1.

Для проверки состояния заданных бит применяется команда test операнд_1, операнд_2 (проверить операнд_1).

Результатом команды является установка значения флага нуля zf:

1) если zf = 0, то в результате логического умножения получился нулевой результат, т. е. один единичный бит маски, который не совпал с соответствующим единичным битом операнд1;

2) если zf = 1, то в результате логического умножения получился ненулевой результат, т. е. хотя бы один единичный бит маски совпалс соответствующим единичным битом операнд1.

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

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

То, какая команда программы должна выполняться следующей, микропроцессор узнает по содержимому пары регистров cs:(e)ip:

1) cs - сегментный регистр кода, в котором находится физический адрес текущего сегмента кода;

2) eip/ip - регистр указателя команды, в нем находится значение смещения в памяти следующей команды, подлежащей выполнению.

Безусловные переходы

Что должно подвергнуться модификации, зависит:

1) от типа операнда в команде безусловного перехода (ближний или дальний);

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

Значения модификатора:

1) near ptr - прямой переход на метку;

2) far ptr - прямой переход на метку в другом сегменте кода;

3) word ptr - косвенный переход на метку;

4) dword ptr - косвенный переход на метку в другом сегменте кода.

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

jmp [модификатор] адрес_перехода

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

Условные переходы

Микропроцессор имеет 18 команд условного перехода. Эти команды позволяют проверить: 1) отношение между операндами со знаком («больше - меньше»);

2) отношение между операндами без знака

(«выше - ниже»); 3) состояния арифметических флагов ZF, SF, CF, OF, PF (но не AF).

Команды условного перехода имеют одинаковый синтаксис: jcc меткаперехода

Команда сравнения cmp имеет интересный принцип работы. Он абсолютно такой же, как и у команды вычитания - sub операнд_1, операнд_2.

Команда cmp так же, как и команда sub, выполняет вычитание операндов и устанавливает флаги. Единственное, чего она не делает - это запись результата вычитания на место первого операнда.

Синтаксис команды cmp - cmp операнд_1, операнд_2 (compare) - сравнивает два операнда и по результатам сравнения устанавливает флаги.

Организация циклов

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

1) loop меткаперехода (Loop) - повторить цикл. Команда позволяет организовать циклы, подобные циклам for в языках высокого уровня с автоматическим уменьшением счетчика цикла;

2) loope/loopz меткаперехода

Команды loope и loopz - абсолютные синонимы;

3) loopne/loopnz меткаперехода

Команды loopne и loopnz также абсолютные синонимы. Команды loope/loopz и loopne/loopnz по принципу своей работы являются взаимообратными.

Размещено на Allbest.ru

...

Подобные документы

  • Изучение архитектуры персонального компьютера на примере микропроцессора фирмы Intel. Регистры общего назначения. Оперативная память; форматы данных и команд. Команд пересылки с различными способами адресации операндов. Структура программы на Ассемблере.

    курс лекций [506,4 K], добавлен 03.05.2014

  • Структура микропроцессорной системы. Длина объектного кода команды. Входные и выходные данные. Представление чисел в эмуляторе. Команды, работающие со стеком и памятью. Запись данных в адрес памяти. Состояние ячеек памяти. Алгоритм загрузки программы.

    курсовая работа [319,1 K], добавлен 07.08.2013

  • Программирование микро ЭВМ на МП БИС КР580ИК80. Арифметические команды. Представление чисел в различных системах счисления и отображение их на дисплее. Сложение массива однобайтных чисел. Вычитание одинаковых чисел. Сложение двух десятичных чисел.

    лабораторная работа [263,8 K], добавлен 03.03.2009

  • Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.

    курсовая работа [88,2 K], добавлен 19.09.2012

  • Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.

    контрольная работа [515,1 K], добавлен 20.01.2016

  • Команды, необходимые для организации разветвлений и циклических структур в программах, условных переходов, изменения признака переноса, изменения содержимого аккумулятора. Логические команды над аккумулятором и регистром. Программа на ассемблере.

    лабораторная работа [25,2 K], добавлен 03.03.2009

  • Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.

    курсовая работа [78,9 K], добавлен 09.09.2014

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

    курсовая работа [1,1 M], добавлен 10.11.2016

  • Внутренняя архитектура микропроцессора Intel 486. Формат данных и команд. Регистры общего назначения. Программная модель устройства FPU, регистр флагов. Разработка структуры и микропрограммы микропроцессора, управляющего автомата с жесткой логикой.

    курсовая работа [1,6 M], добавлен 27.05.2013

  • Процесс трансляции программы на языке ассемблера в объектный код. Разработка интерфейса для взаимодействия и связи программ. Понятие компиляции. Структура модели микропроцессора. Пример структуры двухбайтной команды. Арифметическо-логичесткие операции.

    дипломная работа [3,3 M], добавлен 26.11.2012

  • Архитектура ЭВМ и ее основные свойства. Классификационные признаки ЭВМ. Принципы цифрового представления информации, адресности, программного управления. Структура ЭВМ по Джону фон Нейману. Программная модель микропроцессора, классификация процессоров.

    презентация [1,0 M], добавлен 09.11.2013

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

    реферат [200,6 K], добавлен 21.12.2010

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

    презентация [42,6 K], добавлен 14.06.2011

  • Сущность понятия "информационные технологии". Компьютерные науки и технологии. Социальная, промышленная и индустриальная революция. Основной носитель информации в XV и ХХ веке. Информатика как совокупность научных направлений, изучающих информацию.

    презентация [604,9 K], добавлен 08.09.2013

  • Применение электронно-вычислительной техники в психологии, ее задачи. Использование психологами машинного времени для обработки результатов экспериментов, что позволяет освободить время непроизводительного труда. Виды автоматизированного эксперимента.

    презентация [4,0 M], добавлен 25.11.2013

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

    методичка [2,8 M], добавлен 15.02.2010

  • Создание и компиляция программ на ассемблере. Структура программ, использование специальных директив резервирования и инициализации данных. Организация ввода-вывода на ассемблере и организация вычислений. Команды передачи управления и обработки строк.

    методичка [104,8 K], добавлен 02.12.2009

  • Информационные связи в корпоративных системах. Банк данных, его состав, модели баз данных. Системы классификации и кодирования. Интегрированные информационные технологии. Задачи управления и их реализация на базе информационной технологии фирмы.

    практическая работа [31,0 K], добавлен 25.07.2012

  • Информатика как наука, ее функции. Виды, свойства и кодирование информации. Системы счисления. Высказывания и предикаты. Алгоритмы и их исполнители. Программное обеспечение. Языки и грамматики. Моделирование систем. Новые информационные технологии.

    тест [89,0 K], добавлен 10.12.2011

  • Модель целочисленного MMX-расширения и особенности работы сопроцессора. Отображение ММХ-регистров на регистры стека сопроцессора. Система команд MMX: команды пересылки, сложения и вычитания, сравнения, логических операций, сдвига, упаковки и распаковки.

    презентация [240,3 K], добавлен 11.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.