1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы



страница12/18
Дата23.12.2012
Размер1.84 Mb.
ТипДокументы
1   ...   8   9   10   11   12   13   14   15   ...   18

15.4.Регистры процессора (микропроцессорная память).

Микропроцессорная память процессора 8088 включает 14 двухбайтовых запоминающих регистров. По назначению они делятся на 4 группы.

Универсальные регистры AX, BX, CX, DX. Каждый из универсальных регистров может использоваться для временного хранения любых данных. Разрешается работать как с регистром целиком, так и отдельно с каждой его половиной. Для обращения к старшим байтам используются регистры AH, BH, CH, DH, для обращения к младшим байтам — регистры AL, BL, CL, DL. Каждый из универсальных регистров может использоваться как специальный при выполнении некоторых конкретных команд программы.

  • Регистр AX — регистр-аккумулятор, через который осуществляется ввод-вывод данных в процессор. При выполнении операций умножения и деления AX используется для хранения 1-го операнда и результата операции после её завершения.

  • Регистр BX часто используется для хранения адреса базы в сегменте данных и начального адреса поля памяти при работе с массивами.

  • Регистр CX — регистр-счетчик, используемый как счетчик числа повторений при циклических операциях.

  • Регистр DX используется как расширение регистра AX при работе с 32-разрядными числами и при выполнении операций умножения и деления, а также для хранения номера порта при операциях ввода-вывода.

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

Регистры смещений IP, SP, BP, SI, DI служат для хранения относительных адресов ячеек памяти внутри сегментов, т.е. смещений относительно начала сегментов. Регистр IP хранит смещение адреса текущей команды программы, SP — смещение вершины стека, т.е. текущий адрес стека, BP — смещение начального адреса поля памяти, непосредственно отведенного под стек, SI и DI хранят адреса индексов источника и приемника данных при операциях над строками и подобных им.

15.5.Регистр флагов.

Регистр флагов FL содержит 9 одноразрядных флагов, управляющих прохождением программы в компьютере. Из них 6 флагов являются статусными, отражающими результаты выполненных операций, а 3 — управляющими, определяющими режим исполнения программы. К статусным относятся флаги:

  • CF — флаг переноса. Содержит значения «переносов» (0 или 1) из старшего разряда при арифметических операциях и некоторых операциях сдвига.

  • PF — флаг четности. Хранит 0, если младшие 8 бит результата операции содержат нечетное число единичных битов, и 1, если четное.

  • AF — флаг логического переноса в двоично-десятичной арифметике, используемый при арифметических операциях над двоично-десятичными кодами и кодами ASCII.
    Устанавливается в 1, если операция приводит к переносу или заему 4-го справа бита однобайтового операнда.

  • ZF — флаг нуля, устанавливаемый в 1, если результат операции равен нулю.

  • SF — флаг знака, устанавливаемый в соответствии со знаком результата после арифметической операции. 0 соответствует положительному результату, 1 — отрицательному.

  • OF — флаг переполнения, устанавливаемый в 1 при арифметическом переполнении (если возник перенос в знаковый разряд, если частное от деления слишком велико и т.д.).

К управляющим относятся флаги:

  • TF — флаг системного прерывания (трассировки). Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы (трассировки).

  • IF — флаг прерываний, разрешающий (значение 1) или запрещающий (значение 0) прерывания.

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

15.6.Адресация регистров и ячеек памяти в языке Ассемблер. Варианты прямой адресации.

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

При непосредственной адресации в поле команды указывается величина операнда, которая может быть задана числом в десятичной, двоичной и шестнадцатеричной системах счисления или идентификатором, а также простым выражением, в котором указанные элементы связаны знаками арифметических операций +, –, * и /. Идентификатор должен быть предварительно описан в программе. Например: 100, 35d, D3h, 1100b, var*3, 272*A2h/4.

Прямая адресация регистров процессора выполняется путем записи в качестве операнда символьного обозначения регистра. Например: AX, AH, AL, BX и т.д. При работе с регистрами следует учитывать, что разрядность второго операнда должна соответствовать разрядности принимающего регистра. В частности, диапазон чисел, допустимых для пересылки в регистр, ограничивается вместимостью последнего. В 1-байтовый регистр (AH, AL, BH и т.д.) можно записать число из диапазона от 0 до 255 или от –128 до 127, а в 2-байтовый регистр (AX, BX, CX и т.д.) — от 0 до 65535 или от –32768 до 32767.

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

Аабс = Асегм + Аисп = Асегм + Асмещ [+Абаз][+Аинд],

где Аабс — абсолютный или полный (физический) адрес ячейки, Асегм — адрес сегмента ячейки, Аисп — исполнительный адрес, Асмещ — адрес смещения относительно начала сегмента или базы, Абаз — адрес базы, Аинд — адрес индекса.

Прямая адресация ячеек памяти имеет несколько вариантов.

  • Прямая обычная адресация: field. Указывается символьное имя переменной, для которой были предварительно выделены ячейки памяти. В команде в качестве Аисп берется Асмещ первой ячейки, отведенной для переменной.

  • Прямая с индексированием: field[SI]. В команде используется Аисп = Асмещ + Аинд, где адрес индекса берется из регистра SI.

  • Прямая с базированием: field[BX]. Аисп = Асмещ + Абаз, где адрес базы берется из регистра BX.

  • Прямая с индексированием и базированием: field[BX+SI]. Аисп = Асмещ + Абаз + Аинд.

15.7.Косвенная и смешанная адресация в языке Ассемблер.

Косвенная адресация ячеек оперативной памяти имеет два варианта.

  • Косвенная обычная: [BX]. Исполнительный адрес извлекается из регистра BX.

  • Косвенная с индексированием: [BX+SI]. Исполнительный адрес определяется как сумма адресов из регистров BX и SI.

Смешанная непосредственная адресация ячеек памяти имеет следующие варианты.

  • Непосредственная обычная: offset field. В качестве операнда берется смещение адреса первой ячейки поля памяти, отведенного для переменной с символьным именем field. offset указывает, что берется не значение переменной, а именно смещение её адреса.

  • Непосредственная с индексированием: [SI+const]. В качестве операнда берется сумма значения, хранящегося в регистре SI, и величины const. const может быть задана числом, идентификатором, смещением адреса переменной (offset field) или их комбинацией в форме простого выражения.

  • Непосредственная с базированием: [BX+const]. Аналогично предыдущему варианту, но вместо регистра SI используется BX.

  • Непосредственная с базированием и индексированием: [BX+SI+const]. Аналогично предыдущему, но вместо содержимого одного регистра, берется сумма содержимого регистров BX и SI.

Команды ассемблера за исключением POP, PUSH, CALL, RET, IRET в качестве адреса сегмента по умолчанию используют адрес из регистра DS, а в исполняемых COM-программах — из регистра CS. Однако, регистр сегмента может быть задан и явно. Например: ES:field, SS:[SI]. Команды POP, PUSH, CALL, RET, IRET используют сегмент стека, т.е. адрес сегмента берется из регистра SS.

15.8.Директивы определения идентификаторов и данных в языке Ассемблер.

Директивы определения идентификаторов используются для присвоения идентификатору с заданным именем некоторого текстового или числового выражения. Фактически описывают используемые в программе именованные константы. Включают следующие директивы:

  • <имя> EQU <текст> — присваивает постоянное значение, которое в дальнейшем нельзя изменить. Текст может быть символьным, числовым или смешанным выражением, определяющим константу, адрес, другое символьное имя, метку и т.д. Например: ITQTY equ 10; INPERR equ Введены неверные данные.

  • <имя> = <числовое выражение> — присваивает текущее значение, которое в дальнейшем можно изменить на другое подобной директивой. Выражение может включать простые математические операции, которые обрабатываются в ходе трансляции для получения значения идентификатора. Например: NQ = 1; ADR = 4*24h; S = 5*24/8.

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

[<имя>] D<формат> <выражение>[, <выражение>][,…]

где имя — набор символов, начинающийся с буквы, используемый для ссылки на переменную или поле данных. Формат может иметь следующие значения: B — байт, W — слово (2 байта), D — двойное слово (4 байта), Q — 8 байтов, T — 10 байтов. Выражение показывает, какое количество элементов памяти необходимо выделить и какие данные там будут содержаться. Выражение может быть:

  • константой: const1 DB 7; const2 DW 1026; const3 DD 2HCh. Значение константы должно соответствовать вместимости используемого поля данных. Так, для DB константа не может быть больше 255, для DW — больше 65535 и т.д.

  • простым выражением: v1 DB 17*3; v2 DW 365*10. Выражение вычисляется в ходе трансляции программы.

  • вектором или таблицей: vect DB 15, 8, –27; table DW 1530, 2043, 0, 0, 0, 48. В одной директиве допускается использовать до 132 элементов данных. Вместо повторения одного и того же значения несколько раз можно использовать псевдооператор DUP, например: table DW 1530, 2043, 3 dup(0), 48.

  • строкой символов: str DB ‘Неверные данные’. При использовании директивы DB строка может содержать до 255 символов. Для всех остальных директив (DW, DD, DQ, DT) — только 2 символа.

  • пустым полем: field1 DB ?; field2 DW 12 dup(?). В область резервируемой памяти при загрузке ничего не записывается.

  • символическим именем переменной: var1 DW vct; var2 DD tbl. Одна переменная определяется адресом другой. Такой вариант можно использовать, например, для хранения адресов ячеек памяти, меток, на которые допустимо ссылаться в программе. В этом случае, если переменная находится в том же сегменте, что и ссылающаяся команда, то достаточно в качестве адреса указать только смещение (2 байта), то есть при объявлении переменной использовать директиву DW. Если же переменная находится в другом сегменте, то надо указывать сегмент и смещение (всего 4 байта), а значит переменная должна быть объявлена директивой DD.

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

Сегмент задается следующими псевдооператорами:

<имя сегмента> segment

<содержимое сегмента>

<имя сегмента> ends

В программе можно использовать 4 сегмента (по числу сегментных регистров) и для каждого из них в сегменте кода следует указывать соответствующий регистр сегмента псевдооператором ASSUME, который имеет следующий формат: ASSUME <регистр сегмента>:<имя сегмента>[, …]. Например:

COMMANDS segment

assume CS:COMMANDS, DS:DATA, SS:STACK



COMMANDS ends

После директивы ASSUME необходимо загрузить адрес начала сегмента данных в регистр DS, например так:

mov AX, DATA

mov DS, AX

Инициализация сегментных регистров CS и SS выполняется автоматически.

Процедура объявляется с помощью следующих псевдооператоров:

<имя процедуры> proc [near|far]

<команды процедуры>

ret

<имя процедуры> endp

Имя процедуры служит для её идентификации в программе. При объявлении процедуры после ключевого слова proc может быть указан атрибут дистанции: near — близкая процедура, расположенная в том же сегменте (обращение к ней допускается только из того же сегмента), far — дальний вызов (обращение к процедуре возможно из любого сегмента). Если атрибут дистанции не указан, то процедура считается близкой. Заканчивается процедура обычно командой выхода ret. Например:

SUMN proc far



ret

SUMN endp

Наиболее часто используются следующие директивы:

  • TITLE <текст> — может использоваться для задания названия и описания программы. Текст может содержать любые символы. Например: TITLE sum — вычисление суммы чисел.

  • END [<имя программы>] — задает конец программы и указывает ассемблеру, где надо завершить трансляцию. Текст, находящийся за этой директивой, игнорируется транслятором.

15.10.Классификация команд Ассемблера по назначению. Логические команды.

В соответствии с назначением можно выделить следующие ассемблерные команды (в скобках приведены примеры мнемокодов команд):

  • выполнения арифметических операций (ADD и ADC — сложения и сложения с переносом, SUB и SBB — вычитания и вычитания с заемом, MUL и IMUL — умножения без знака и со знаком, DIV и IDIV — деления без знака и со знаком, CMP — сравнения и т.д.);

  • выполнения логических операций (OR, AND, NOT, XOR, TEST и т.д.);

  • пересылки данных (MOV — переслать, XCHG — обменять, IN — ввести в процессор, OUT — вывести из процессора и т.д.);

  • передачи управления (JMP — безусловного перехода, J* — условного перехода, LOOP — управления циклом, CALL — вызова процедуры, RET — возврата из процедуры и т.д.);

  • обработки строк символов (MOVS — пересылки, CMPS — сравнения, LODS — загрузки, SCAS — сканирования);

  • прерывания работы программы (INT — программные прерывания, INTO — условного прерывания при переполнении, IRET — возврата из прерывания);

  • управления процессором (ST* и CL* — установки и сброса флагов, HLT — останова, WAIT — ожидания, NOP — холостого хода и т.д.).

В большинстве команд операнды могут иметь один из следующих типов: регистр (далее будем обозначать как r, сегментный регистр как rsegm), область памяти (обозначение — m), непосредственное значение или простое выражение (обозначение — i). Выражение, заданное в операнде, вычисляется только при трансляции и значение регистров-флагов не меняет.

К числу основных логических команд относятся следующие:

  • OR <приемник>, <источник> — выполняет поразрядную дизъюнкцию битов операндов, устанавливая 1 в тех битах приемника, в которых была 1 хотя бы у одного из исходных операндов. Операнды должны иметь одинаковый формат: байт или слово. Источник может иметь тип r, m, i, а приемник — r, кроме rsegm, или m. Нельзя, чтобы оба оператора были типа m. Команда сбрасывает в ноль флаги CF и OF и формирует флаги PF, SF и ZF.

  • AND <приемник>, <источник> — выполняет поразрядную конъюнкцию битов операндов, устанавливая 1 в тех битах приемника, в которых была 1 у обоих операндов. Операнды должны иметь одинаковый формат: байт или слово. Источник может иметь тип r, m, i, а приемник — r, кроме rsegm, или m. Нельзя, чтобы оба оператора были типа m. Команда сбрасывает в ноль флаги CF и OF и формирует флаги PF, SF и ZF.
1   ...   8   9   10   11   12   13   14   15   ...   18

Похожие:

1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРеферат на тему: "логистические информационные системы. Иерархия использования логистической информационной системы. Функции логистической информационной системы. Поток информации в предпринимательстве."
Основные направления информационно-технического обеспечения логистических систем
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРазработка автоматизированной информационной системы «кафедра» с помощью современных средств web-программирования
Рассматривается разработка автоматизированной информационной системы «Кафедра» и средства ее реализации
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconБазы данных и информационные системы
...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconЭкзаменационные вопросы по информатике Направление подготовки «Адаптивная физическая культура»
Основные понятия информатики: информационная среда, информационные технологии, информационные системы, базы данных, интеллектуальные...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРабочая программа для студентов направления 230400. 62 «Информационные системы и технологии»
...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconДисциплина «Интеллектуальные информационные системы», пиэ, 4 курс, 1 семестр вопросы на зачет
Понятие интеллектуальной информационной системы (иис), особенности и основные свойства иис
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconИнформационные системы
Информационная система (ИС) – это комплекс, состоящий из информационной базы (хранилища информации) и процедур, позволяющих накапливать,...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРазработка автоматизированной системы эксергетического анализа сложных химико-технологических систем
Поэтому необходимость разработки автоматизированной системы расчета и оптимизации эксергетического баланса хтс произвольной структуры...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconЛекция 1) гис как специализированная информационная система. Структура информационных систем, представление о модели данных. Последовательность действий при создании информационной системы
Модели данных для пространственной информации. Геокодирование, общее понятие. Геокодирование как процесс перевода пространственной...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconТемы, вопросы для изучения
Понятия: системы; фаза; гомогенные и гетерогенные системы; процессы и их классификация; параметры и функции состояния системы
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org