Смекни!
smekni.com

Разработка программы на Ассемблере (стр. 7 из 11)

 

Символ ¦ Код(HEX)  Символ ¦ Код(HEX)  Символ ¦ Код(HEX)

--------+---------  -------+---------  -------+---------

"ничего"¦  00         "A"  ¦  41         "А"  ¦  81

  "0"   ¦  30         "B"  ¦  42         "Б"  ¦  82

  "1"   ¦  31         "C"  ¦  43         "В"  ¦  83

   ..   ¦  ..          ..  ¦  ..          ..  ¦  ..

  "9"   ¦  39         "Z"  ¦  5A         "Я"  ¦  9F

  ":"   ¦  3A         "["  ¦  5B         "а"  ¦  A0

\_________ASCII кодировка___________/

\_______________альтернативная кодировка_______________/

В Internet для русского языкаиспользуется кодировка КОИ-8. В настоящее время разработан и используется 16-тибитовый Unicode с 65536 различными симвоволами.

7.9 ВОСЬМИСЕГМЕНТНЫЙ КОД

Служит для отображения образа BCDили HEX цифры высвечиваемой на индикаторе в виде набора 0 и 1. Может бытьпринято следующее соответствие между битами и сегментами:

7seg.gif (2463 bytes)

Внизу приведен битовый набор длявысвечивания цифры 4. Единицы обычно соответствуют светящимся сегментам.

7.10 НЕОДНОЗНАЧНОСТЬ ПРЕДСТАВЛЕНИЯ ДВОИЧНЫХ НАБОРОВ

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

 

   1) двоичное число = 10000110, имеющее

     а) шестнадцатиричный эквивалент = 86(HEX),

     б) восьмиричный эквивалент = 206(OCT),

     в) десятичный эквивалент числа без знака = 134(DEC),

   2) дополнительный код отрицательного числа =-122(DEC),

   3) двоично-десятичное упакованное число = 86(BCD),

   4) альтернативный код буквы "Ж",

   4') код КОИ-8 символа "¦",

   5) восьмисегментный код цифры "1.",

   6) часть вещественного числа,

   7) реализация множества,включающего 3 элемента из 8-ми,

   8) часть адреса ячейки памяти или внешнего устройства,

   9) код операции  и т.д.

Поэтому ответственностьза интерпретацию двоичных наборов возлагается на программиста.Например, попытка сложить ASCII коды "1" + "2" не даст всумме код "3", а даст 31(HEX) + 32(HEX) = 63(HEX), что соответствуеткоду латинской буквы "c".

Приложение № 2

СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРА

Огромное количествомикропроцессоров (МП) не позволяет рассмотреть ихособенности, поэтому выбор пал на родоначальника семейства 80x86 : МПК1810ВМ86/88 (8086/8088). Такой выбор оправдан, во-первых преобладающим паркомЭВМ с этим МП, во-вторых тем, что все МП этого семейства при включении начинаютработу в реальном режиме МП 8086, и в-третьих - программной совместимостью ихассемблеров снизу вверх. На рис 1. приведена структурная схема МП8086 и внешнийвид типового микропроцессора.

cpu8086.gif (6093 bytes)

Устройство управления декодирует байтыпрограммы и управляет работой операционного устройства и шинногоинтерфейса. Операционное устройство МП состоит из 4-хшестнадцатиразрядных регистров общего назначения: РОН(AX,BX,CX,DX), из 4-х регистров указателей (адресных регистров SP,BP,SI, DI) и арифметико-логическогоустройства (АЛУ) с регистром признаков операций(флагов F).

РОН служат для храненияпромежуточных результатов операций, т.е. операндов. Помимо общих, каждый изэтих регистров имеет и некоторые специальные функции, окоторых будет сказано далее. Каждый РОН может раcсматриваться, как состоящий издвух независимых 8-ми разрядных регистров AH, AL, BH, BL, CH, CL и DH, DL.

Адресные регистры хранят 16-тибитовые указатели (адреса) на области памяти. В SP (StackPointer)находится текущий адрес "вершины стека" - специальноорганизованной области памяти, которая будет описана далее. Регистр BP(BasePointer) хранит любой базовый адрес в области стека. Дварегистра SI и DI (Source и Destination Index) адресуют области памяти,называемые источником и приемником данных.

Шинный интерфейс, на рис.1 егоузлы отмечены двойной чертой, выполняет операции обмена между МП и памятью иливнешними устройствами. В сегментных регистрах CS,SS,DS,ESхранятся указатели на 64-х килобайтные области памяти называемые сегментами.Значения этих указателей могут перекрываться. Адрес байта в ячейке памятиполучается суммированием содержимого одного из сегментных регистров и одного изрегистров (SP,SI,DI,IP). Например адрес текущего байта программы, извлекаемогоиз памяти определяется суммой адресов, хранящихся в регистре кодового сегмента(CS) и указателе команд (IP). В регистре IP хранится 16-битовый адресбайта  в кодовом сегменте к которому микропроцессор дожен обратиться.Подробнее об этом будет сказано далее. Связь с внешними устройствамиосуществляется через специальные тристабильные схемы с повышенной нагрузочнойспособностью и называемые буферами.

Текущий байт программынаправляется в очередь команд: шесть однобайтовых регистров расположенных конвейером(по принципу "первым вошел - первым вышел" или FIFO ). Конвейерпозволяет одновременно выполнять команду из очереди и загружать следующую,повышая производительность МП. Буферные тристабильные элементы увеличиваютмощность сигналов до стандартных значений ТТЛ.

8.2 РЕГИСТР ФЛАГОВ

По результатам операций АЛУустанавливает либо сбрасывает отдельные биты в регистре флагов F.

cpu2fl.gif (1829 bytes)

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

  • ZF - флаг/признак нулевого результата (Zero), устанавливается в 1, если получен нулевой результат, иначе (ZF)=0.
  • CF - флаг переноса (Carry) устанавливается, если в результате выполнения операции из старшего бита переносится или занимается 1 при сложении или вычитании, иначе (CF)=0. На CF влияют также команды сдвига и умножения.
  • SF - флаг знака результата (Sign) равен единице, если результат отрицательный, т.е. он дублирует старший знаковый бит результата.
  • PF - флаг четности (Parity). (PF)=1, если сумма по модулю два всех битов результата равна нулю (число единичных битов - четное).
  • AF - флаг дополнительного переноса (Auxiliary) устанавливается, если есть перенос из старшего бита младшей тетрады (бит D3) в младший бит старшей тетрады (бит D4). Используется в операциях над упакованными BCD числами.
  • OF - флаг переполнения (Overflow) устанавливается, когда результат операции превысит одно- или двухбайтовый диапазон чисел со ЗНАКОМ, а также в некоторых других случаях. Другое определение: (OF)=1, если перенос/заем в старший бит результата не равен переносу/заему из старшего бита.

Рассмотрим в качестве примерасложение двух однобайтовых чисел: 125 + 4 = 129 выходит за пределы -128....+127 чисел со знаком (для беззнаковых чисел 129 - корректный результат).

 

   0 1 1 1 1 1 0 1 = +125

   0 0 0 0 0 1 0 0 = +4

   1 0 0 0 0 0 0 1 = +129 > +128 (или -127 ???)

  / / :

0 1  :

Перенос в бит D7 равен 1, а избита D7 = 0, в результате сложения чисел (OF) = 1, (CF) = 0, (ZF) = 0, (SF) =1, (PF) = 0, (AF) = 1. Остальные три флага будут рассмотрены далее. Содержимоерегистра признаков называется также словом состоянияпроцессора(программы) и обозначается PSW.

 ОРГАНИЗАЦИЯ ПАМЯТИ И ВЫЧИСЛЕНИЕ АДРЕСА

МП 8086 имеет 20-ти разрядную шинуадреса ША, позволяющую обращаться к 2^20 или примерно к одному миллиону ячеекпамяти. 16-ти битовая шина данных ШД может пересылть информацию байтами илисловами. Память обычно организована в виде линейного одномерного массива байтов,причем два соседних байта могут рассматриваться как слово. Все мегабайтноепространство памяти условно делится на 16 сегментов объемом по 64Kb.Микропроцессору доступны в каждый момент четыре - кодовый сегмент, где хранитсяпрограмма, стековый сегмент, сегмент данных программы и дополнительный сегментданных. Начальные адреса этих сегментов хранятся в регистрах CS,SS,DS и ES. Таккак эти регистры 16-ти битовые, а все адресное пространство 20-ти битовое, тоМП начальный сегментный адрес в 20-ти битовом сумматоре сдвигает на четыре битавлево (эквивалентно умножению на 16) и складывает с содержимым одного изрегистров (IP,SP,DI,SI).

Полученное число называетсяфизическим адресом. Например, извлекая из памяти очередной байт кода программыМП формирует физический адрес по формуле: Физический адрес = (IP) + (CS) * 16,где (IP) - смещение, эффективный или исполнительный адрес, (CS) - сегментныйадрес, а (CS) * 16 - называется начальным сегментным адресом. Организацияпамяти приведена на рис.2.

cpu3zu.gif (3421 bytes)

8.4 ПРОЦЕССОРНЫЙ БЛОК (ПБ )

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

Конденсатор C до включенияпитания разряжен. В начальный момент времени t0 подается напряжение питания навыводы (+). Начиная с этого момента времени на входе ~RES действует логический0 до момента t1, когда напряжение на конденсаторе C достигнет пороговогозначения логической 1. В течение интервала t0..t1 выходной сигнал RESET имеетактивный уровень лог.1. Микропроцессор переводится в исходное состояние. Приэтом в регистр CS записывается код FFFFh, а в регистр IP код 0000h.