Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АССЕМБЛЕР.doc
Скачиваний:
6
Добавлен:
21.09.2019
Размер:
388.1 Кб
Скачать

1. Понятие про архи­тектуру компью­тера. Слово «компью­тер» означает «вычис­ли­тель».Чтобы со­брать во­едино все понятия, существует специаль­ный термин — архи­тектура ЭВМ.   Все совре­менные ЭВМ обла­дают некоторыми общими и индивиду­альными свой­ствами архитектуры. Об­щие: принцип храни­мой про­граммы(Согласно ему, код программы и ее данные на­ходятся в одном адресном пространстве в опера­тивной памяти.), принцип микропро­граммирования, линейное простран­ство памяти, последо­вательное выполнение про­грамм, безразли­чие к целевому назна­чению данных, супер­скалярная архитек­тура(на стадии выпол­нения каждая машин­ная команда как бы разби­вается на более эле­ментарные опера­ции). Основные внтр. и внешние устрой­ства :   микропроцес­сор – электронная схема, выполняющая все вычисления и обра­ботку информа­ции. Процессор со­стоит из нескольких важных дета­лей:сопроцессора – специального блока для операций с «пла­вающей точкой»,кеш-память первого уроня(сверхбыстрая),кеш-память второго уровня(чуть помед­леннее, зато больше).Процессор имеет 14 регистров , использующихся для управления выпол­няющейся програм­мой, для адрессации памяти и для выпол­нения арифметиче­ских опера­ций.Оператив­ная память обеспечи­вает работу с про­грамм­ным обеспече­нием.Из неё процес­сор и сопроцессор берут программы и исход­ные данные для обработки.Для каж­дого внешнего уст­ройства в компь­ютере имеется элек­тронная схема (кон­троллер или адаптер).Одним из контроллеров, кото­рые присутствуют во всех компьютерах, является контроллер портов ввода-вы­вода. Типы портов : параллельные(принтер), асинхронные последовательные порты(подкл.мышь), игровой порт, порт USB(USB2) –Одним из его досто­инств является воз­мож­ность подключе­ния целой цепочки устройств. Все кон­троллеры и адап­теры взаимодейст­вуют с процессором и опера­тивной памятью через системную магист­раль передачи дан­ных, называемой шиной. Шина – системная плата, обеспечиваю­щая ввод-вывод инфор­мации. Для упроще­ния подключе­ния устройств элек­тронные схемы со­стоят из нескольких модулей – электрон­ных плат. На основ­ной плате компью­тера – системной (материн­ской) – располагаются процессор, сопроцес­сор, оперативная память и шина. Схемы, управляю­щие внешними устройст­вами ком­пьютера (контрол­леры или адаптеры), находятся на отдель­ных платах встав­ляющихся в унифи­цированные разъёмы (слоты) на материн­ской плате. «Гнездо» для уста­новки про­цессора: для каждого форм-фак­тора про­цессора существует свой тип материн­ской платы, как правило, несо­вмес­тимый с другими процессорами. Видео­адаптер-(ви­деокон­троллер, видеокарта) предна­значен для работы в графическом ре­жиме. Жесткий диск-предназначен для постоянного хране­ния информации,. Внутренний дина­мик(PS Speaker)-устройство,предна­значенное для вы­вода системных звуковых сообщений. Например, в начале загрузки компью­тера происходит тестирование обору­дования. BIOS(Basic Input Output System-– базовая система ввода-вывода – микросхема, уста­новленная на мате­ринской плате. Именно здесь хра­нятся основные настройки компью­тера. С помощью BIOSможно изме­нить скорость ра­боты процессора, параметры работы для других внутрен­них и некоторых внешних устройств компьютера.BIOS- это первый и самый важный из мостиков, связующий между собой аппаратную и программную часть компьютера. Звуко­вая карта-устрой­ство,необходимое для редактирования и вывода звука, по­средством звуковых колонок. Устройство для чтения компакт дисков(CD-ROM), Монитор(дисплей), Принтер, сканер, плоттер, диггитай­зер,модем, источник бесперебойного питания.

2. Способы сохране­ния данных в памяти ПК. МП поддержи­вает все типы данных, используемые алго­ритмическими язы­ками высокого уровня: бит, битовое поле, строка, байт, Целое (слово),Длинное целое (двойное слово), Беззнаковое целое Беззнаковое длинное целое (двойное слово), Короткий указатель ,Указатель - 16-ти битовый сегмент и 16-ти или 32-х разрядное смещение, символ, Строка,Двоично-десятичный код - байтовое (неупако­ванное) представление десятичных цифр от 0 до 9,Упакованный двоично-десятичный код - байтовое пред­ставление двух деся­тичных цифр от 0 до 9.

Представление целых чисел: 1.Беззнаковые. В виде байта представляются целые от 0 до 255 (=28-1), в виде слова - целые от 0 до 65535 (=216-1), в виде двой­ного слова - целые от 0 до 4 294 967 295 (=232-1). Числа запи­сываются в двоичной системе счисления, занимая все разряды ячейки. Числа разме­ром в слово хранятся в памяти в "переверну­том" виде: младшие (правые) 8 битов числа размещаются в первом байте слова, а старшие 8 битов - во втором байте (в 16-ричной системе: две правые цифры - в первом байте, две левые цифры - во втором байте). "Пере­вернутое" представле­ние используется и при хранении в па­мяти целых чисел размером в двойное слово: в первом его байте размещаются младшие 8 битов числа, во втором байте - предыдущие 8 битов и т.д. Такое необыч­ное представление чисел объясняется тем, что в первых моделях ПК за раз можно было считать из памяти только один байт и что все ариф­метические операции над многозначными числами начинаются с действий над млад­шими цифрами, поэтому из памяти в первую очередь надо считывать младшие цифры, если сразу нельзя считать все цифры.

2.Знаковые.Эти числа также представляются в виде байта, слова и двой­ного слова. В виде байта записываются числа от -128 до 127, в виде слова - числа от -32768 до 32767, а в виде двойного слова - числа от -2147483648 до 2147483647. При этом числа записыва­ются в дополнитель­ном коде. Представ­ление символов и строк: На символ отводится один байт памяти, в который записывается код символа - целое от 0 до 255. В ПК исполь­зуется система коди­ровки ASCII Строка (последовательность символов) размеща­ется в соседних байтах памяти (в неперевер­нутом виде): код первого символа строки записывается в первом байте, код второго символа - во втором байте и т.п. Адресом строки считается адрес ее первого байта. В ПК строкой считается также и последова­тельность слов (обычно это последо­вательность целых чисел). Элементы таких строк распола­гаются в последова­тельных ячейках памяти, но каждый элемент представлен в "перевернутом" виде. \\Представле­ние адресов: Адрес - это порядковый номер ячейки памяти, т.е. неотрицательное целое число, поэтому в общем случае адреса представляются так же, как и беззнаковые числа. Однако в ПК есть ряд особенностей в представлении адресов. Дело в том, что в ПК термином "адрес" обозначают разные вещи. Час- то под адресом понима­ется 16-битовое смещение (offset) - адрес ячейки, отсчи­танный от начала сегмента (области) памяти, которому принадлежит эта ячейка. В этом случае под адрес отводится слово памяти, причем адрес записывается в "перевернутом" виде (как и числа-слова вообще). В другом случае под "адресом" понимается 20-бито­вый абсолютный адрес некоторой ячейки памяти. В силу ряда причин в ПК такой адрес задается не как 20-битовое число, а как пара "сегмент: смещение",где"сегмент"(segment)-это первые 16 битов начального адреса сегмента памяти, которому принадлежит ячейка, а "смещение" - 16-битовый адрес этой ячейки, отсчитанный от начала данного сегмента памяти (величина 16*сегмент+ смещение дает абсолютный адрес ячейки). Такая пара записывается в виде двойного слова, причем (как и для чисел) в "переверну­том" виде: в первом слове размещается смещение, а во втором - сегмент, причем каждое из этих слов в свою очередь пред­ставлено в "перевер­нутом" виде. \\В ПК имеются команды + и - целых чисел размером в слово и байт. Специальных команд для сложения и вычитания двойных слов нет, эти операции реализуются через команды сложения и вычитания слов. Сложение и вычитание беззнаковаых чисел производится по модулю 28 для байтов и 216 для слов. Это означает, что если в результате сложения появилась единица переноса, не вмещающаяся в разрядную сетку, то она отбрасывается.

3.Регистры мп i8086.

Регистр-это ОП, расположенная в самом МП, работа с ней осущ. мах быстро и сущ. команды, которые можно выполнять только с данными, которые помещены в регистре. Процессоры i8086 имеют 14 регистров, используемых для yправления выполняющейся программой, для адресации памяти и для обеспечения арифметических вычислений. Каждый регистр имеет длину в одно слово (16 бит) и адресуется по имени. Биты регистра принято нумеровать слева направо.

Сегментные регистры CS, DS, SS и ES. Каждый сегментный регистр обеспечивает адресацию 64К памяти, которая наз. текущим сегментом. Cегмент выравнен на границу параграфа и его адрес в сегментном pегистре предполагает наличие справа четырех нулевых битов.

Регистр CS. Регистр сегмента кода содержит начальный адрес сегмента кода. Этот адрес плюс величина смещения в командном указателе (IP) определяет адрес команды, которая должна быть выбрана для выполнения. Для обычных программ нет необходимости делать ссылки на регистр CS. Регистр DS. Регистр сегмента данных содержит начальный адрес сегмента данных Этот адрес плюс величина смещения, определенная в команде указывают на конкретную ячейку в сегменте данных.

Регистр SS. Регистр сегмента стека содержит начальный адрес в сегменте стека.

Регистр ES. Некоторые операции над строками используют дополнительный сегментный регистр для управления адресацией памяти. В данном контексте регистр ES связан с индексным регистром DI. Если необходимо использовать регистр ES, ассемблерная программа должна его инициализировать. В защищённом режиме добавляются два дополнительных регистра сегмента данных: FS и GS. Они остаются 16-разрядными, но значения их меняется.

Регистры общего назначения: AX, BX, CX и DX. При программировании на ассемблере регистры общего назначения являются "рабочими лошадками". Особенность этих регистров состоит в том, что возможна адресация их как одного целого слова или как oднобайтовой части. Левый байт является старшей частью (high), a правый - младшей частью (low). Например, двухбайтовый регистр CX состоит из двух однобайтовых: CH и CL, и ссылки на регистр возможны по любому из этих трех имен.

Регистр AX. Регистр AX является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций. Некоторые команды генерируют более эффективный код ,если они имеют ссылки на регистр AX.

Регистр BX является базовым регистром. Это единственный регистр общего назначения, который может использоваться в качестве "индекса" для расширенной адресации. Другое общее применение его – вычисления.

Регистр CX является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига влево или вправо. Регистр CX используется также для вычислений. Регистр DX является регистром данных. Он применяется для некоторых операций ввода/вывода и тех операций умножения и деления над большими числами, которые используют регистровую пару DX и AX. Любые регистры общего назначения могут использоваться для сложения и вычитания как 8-ми, так и 16-ти битовых значений. В защищённом режиме: EAX, EBX, ECX, EDX (32-битные - отдельно со старшими 2-мя б. работать нельзя).

Регистровые указатели: SР и BP

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

Регистр SP. Указатель стека обеспечивает использование стека в памяти, позволяет временно хранить адреса и иногда данные. Этот регистр связан с регистром SS для адресации стека. Регистр BP. Указатель базы облегчает доступ к параметрам: данным и адресам переданным через стек.

Индексные регистры: SI и DI.

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

Регистр SI является индексом источника и применяется для некоторых операций над строками. В данном контексте регистр SI связан с регистром DS.

Регистр DI является индексом назначения и применяется также для строковых операций. В данном контексте регистр DI связан с регистром ES. В защищённом режиме ESI, EDI, ESP, EBP (можно работать и со старшими двумя байтами и со всеми регистрами сразу).

Регистр командного указателя: IP (EIP) содержит смещение на команду, которая должна быть выполнена.Обычно этот регистр в программе не используется, но он может изменять свое значение при использовании отладчика DOS DEBUG для тестирования программы.

Флаговый регистр. 9 из 16 битов флагового регистра являются активными и определяют текущее состояние машины и результатов выполнения. Многие арифметические команды и команды сравнения изменяют состояние флагов. Назначение флаговых битов: Флаг Назначение

O (Переполнение)-указывает на переполнение старшего бита при арифметических командах.

D (Направление)-обозначает левое или правое направление пересылки или сравнения строковых данных (данных в памяти, превышающих длину одного слова).

I(Прерывание)-указывает на возможность внешних прерываний. Т(Пошаговый режим) -обеспечивает возможность работы процессора в пошаговом режиме. S (Знак)-содержит результирующий знак после арифметических операций (0 - плюс,1-минус). Z (Ноль)-показывает результат арифметических операций и операций сравнения (0–ненулевой, 1–нулевой результат

A (Внешний перенос)-содержит перенос из 3-го бита для 8-бит-ных данных, используется для специальных арифметических операций. Р (Контроль четности )-показывает четность младших 8-битовых данных (1-четное и 0-нечетное число). C (Перенос) -содержит перенос из старшего бита, после арифметических операций, а также последний бит при сдвигах или циклических сдвигах. При программировании на ассемблере наиболее часто используются флаги O, S, Z, и C для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками.

6.Адресація. Регiстровi операнди. Имеется два альтернативных метода определения типа операнда. В первом из них тип операнда может задаваться кодом операции в команде. Это наиболее употребительный способ задания типа операнда. Второй метод предполагает указание типа операнда с помощью тега, который хранится вместе с данными и интерпретируется аппаратурой во время выполнения операций над данными. Этот метод использовался, например, в машинах фирмы Burroughs, но в настоящее время он практически не применяется и все современные процессоры пользуются первым методом. Для эффективного применения команд микропроцессора следует рассмотреть возможные способы адресации. Под адресацией данных в языке ассемблера понимают способы обращения к используемым в командах операндам. Различают следующие основные способы описания операндов (и соответствующие способы адресации):

  • операнды-регистры;

  • непосредственные операнды;

  • операнды в памяти;

  • адресацию строковых данных;

- адресацию портов ввода-вывода.

Регистровые операнды

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

Приведем некоторые примеры регистровых операндов:

mov al,ax

push dl

xchg al,dl

ror dx,cl

in al,dx

inc sl

Регистровые операнды могут использоваться вместе с другими операндами:

mov al,1

add [BaseCount],cx

cmp si,[bx]

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

mov cx,1

mov dx,2

sub dx,cx

регистр CX устанавливается в значение 1, DX - в значение 2, а затем из регистра DX вычитается CX и результат (1) снова записыва-

ется в регистр DX. В инструкции SUB CX является правым операндом, поэтому это исходный регистр (источник). DX - самый левый операнд, поэтому он одновременно является вторым источником и приемником. Кстати, действие данной инструкции SUB (вычитание) выражается словами, как "вычесть CX из DX".